乐于分享
好东西不私藏

超详细的ArcGIS Pro软件标注语句用法详解,从基础到实战+实战案例,认真看完,对你们一定有帮助.

超详细的ArcGIS Pro软件标注语句用法详解,从基础到实战+实战案例,认真看完,对你们一定有帮助.

做GIS制图的小伙伴们~都懂,标注是地图的“灵魂”——精准、规范的标注能让地图信息一目了然,而杂乱无章的标注只会让地图失去价值。在使用ArcGIS Pro的标注功能时,我们亲自感受比起Arcgis,ArcGIS Pro的标注功能远比想象中强大,尤其是标注语句(标注表达式),支持Arcade、Python、VBScript、JScript等四种语句,能帮你摆脱“默认标注”的局限,实现多字段组合、条件显示、格式自定义等多种需求

今天我们帮小伙伴们~认真梳理了关于ArcGIS Pro标注语句用法详解就从基础用法实战案例手把手教会小伙伴们吃透ArcGIS Pro标注语句,再也不用为标注格式、内容排版头疼,让小伙伴们的地图标注既专业又高效

老规矩,学习之前,点首音乐快乐学习

话不多说,直接进入主题吧

一、标注语句核心前提:先搞懂这2个基础点

     在开始写标注语句前,先明确两个关键前提,避免踩坑

1.标注语句的本质:标注语句(标注表达式)是用于确定要素标注文本的规则,可调用要素属性字段、自定义文本,还能通过脚本语言实现复杂逻辑,每个标注类都有独立的标注表达式,且标注会随要素属性值的变化动态更新

2.支持的脚本语言:ArcGIS Pro支持Arcade、Python、VBScript、JScript四种语言,优先推荐Arcade——跨平台兼容性最好,可在整个ArcGIS生态中使用,且默认启用复杂表达式,无需额外勾选“高级”选项。(本文以最常用的Arcade和Python为例,覆盖绝大多数场景)

补充:开启标注后,ArcGIS Pro会默认选择标注字段——优先选择字段名含“文本”(不区分大小写)的字符串字段,若无则依次选择第一个字符串字段、整数字段、任意类型字段。

二、标注语句基础用法:3类核心语法(必学)

标注语句的核心是调用字段+组合逻辑+格式控制,以下3类基础语法,覆盖80%的基础标注需求,新手可直接套用。

先来个开胃菜

(一)基础语法1:单个字段标注(最简单,直接调用)

适用场景:仅标注要素的单个属性(如地名、编号、面积等),是最基础的标注形式。

Arcade语法:$feature.字段名(字段名区分大小写,若字段名含特殊字符或数字开头,需用$feature('字段名'))

Python语法:[字段名](无需区分大小写,所有字段用方括号括起,与图层数据源类型无关)

示例:标注“城市名称”字段(字段名:CityName)

•Arcade:$feature.CityName
•Python:[CityName]

(二)基础语法2:多字段组合标注(最常用,自定义排版)

适用场景:需要同时标注多个属性(如“名称+编号”“地名+面积”),可添加自定义文本、空格、换行符,让标注更清晰。

核心规则“+”连接字段和自定义文本Arcade、Python、JScript语句均用“+”,然而VBScript语句是使用“&”);针对Arcade、Python换行用“\n”但是VBScript换行是采用vbcrlf。

•Arcade语法:"自定义文本" + $feature.字段1 + "自定义文本" + $feature.字段2
Python语法:"自定义文本" + [字段1] + "自定义文本" + [字段2]

这里一定要记得他是扩符是[]而不是!!,小伙伴们要注意哟。

关键提醒字段值默认会转换为文本字符串,若需进行数值运算(如字段相加),需将字段转换为数值类型(Arcade无需转换,会保留原数据类型)。

示例:标注“城市名称+人口”,格式为“城市:XX,人口:XX人”

•Arcade:"城市:" + $feature.CityName + ",人口:" + Text($feature.Population) + "人"

这里的Text()用于将数值转换为文本,避免运算错误。

•Python:"城市:" + [CityName] + ",人口:" + str([Population]) + "人"

这里的str()用于将数值转换为文本。

(三)基础语法3:格式控制美化标注,突出重点

适用场景:需要修改标注的字体、大小、颜色、粗细,或实现局部格式差异(如部分文字加粗、斜体),需使用ArcGIS Pro文本格式化标签

       核心格式化标签(通用,所有语言均适用):

<BOL></BOL>:放在字段两端代表加粗(如标注标题);

<ITA></ITA>放在字段两端代表斜体(如备注信息);

<UND></UND>放在字段两端代表下划线(如分式标注的分数线);

<FNT name="字体" size="字号" color="颜色"></FNT>自定义字体、大小、颜色。

<SUP></SUP>/<SUB></SUB>上标/下标(如公式、单位标注)

语法规则:格式化标签需用双引号括起与字段/文本用“+”连接标签需成对出现,可嵌套(如先加粗再斜体),且大小写需完全一致。

示例:将“城市名称”加粗、红色,“人口”斜体、10号字

•Arcade:"<FNTcolor='red'><BOL>" + $feature.CityName + "</BOL></FNT>" + ",<FNTsize='10'><ITA>人口:" + Text($feature.Population) + "人</ITA></FNT>"
•Python:"<FNTcolor='red'><BOL>" + [CityName] + "</BOL></FNT>" + ",<FNTsize='10'><ITA>人口:" + str([Population]) + "人</ITA></FNT>"

小伙伴们一定要注意观察他的格式,避免标注不成果哟,上述语句还是简单的标注格式之间的变化,下面讲讲更高级的用法,小伙伴们要认真学习哟。

三、进阶语法:条件判断标注(解决复杂场景)

适用场景:根据要素属性值的不同,显示不同的标注内容或格式(如按面积大小区分标注颜色、按等级显示不同前缀),需结合条件判断语句来实现。

(一)Arcade条件语法(推荐,简洁高效

语法:if(条件表达式, 条件成立时的标注, 条件不成立时的标注)

示例:若城市人口>1000万,标注“XX(超大城市)”;否则标注“XX(普通城市)”

Arcade语句:

if($feature.Population > 10000000, $feature.CityName + "(超大城市)"$feature.CityName + "(普通城市)")

这里一定要记得括号和加好的使用方法哟,别弄错了。

(二)Python条件语法(需勾选“高级”选项一定记住

语法:定义函数,通过if-else判断,适用于多条件场景

def FindLabel([CityName], [Population]):    if int([Population]) > 10000000:        return [CityName] + "(超大城市)"    elif int([Population]) > 5000000:        return [CityName] + "(特大城市)"    else:        return [CityName] + "(普通城市)"

小伙伴们清楚了吗?

四、实战案例:4个高频场景,直接复制可用

结合实际制图需求,整理4个高频案例,涵盖基础标注、多字段组合、条件标注、分式标注,新手可直接复制语句,替换字段名即可使用。

案例1:基础单个字段标注(适用于地名、编号)

需求:标注道路名称(字段名:RoadName),简洁清晰,无需额外格式。

Arcade:$feature.RoadName

Python:[RoadName]

补充说明:若字段名含特殊字符(如“Road-Name”“33Road”),Arcade语句改为$feature('Road-Name')、$feature('33Road')。

案例2:多字段换行标注(适用于地块、建筑)

需求:标注地块“编号+面积+用途”,换行显示(第一行编号,第二行面积,第三行用途),更整洁。这个小伙伴们经常用一定要搞懂哟

字段:编号(PlotNo)、面积(Area,单位:㎡)、用途(UseType)

Arcade:"地块编号:" + $feature.PlotNo + "\n面积:" + Text($feature.Area"#.00"+ "㎡\n用途:" + $feature.UseType
•Python:"地块编号:" + [PlotNo] + "\n面积:" + str(round(float([Area]), 2)) + "㎡\n用途:" + [UseType](round()用于保留2位小数)

Arcade语句中的Text()用于保留2位小数;

Python语句中的round()用于保留2位小数。

案例3:条件格式标注(适用于分类要素)

需求:标注河流要素,按河流等级区分颜色——一级河流(Level=1)红色加粗,二级河流(Level=2)蓝色,其他河流默认黑色。

字段:河流名称(RiverName)、等级(Level)

•Arcade:If($feature.Level == 1, "<FNT color='red'><BOL>" + $feature.RiverName + "</BOL></FNT>", IIf($feature.Level == 2, "<FNT color='blue'>" + $feature.RiverName + "</FNT>"$feature.RiverName))
•Python(需勾选“高级”):def FindLabel([RiverName], [Level]):    if int([Level]) == 1:        return "<FNT color='red'><BOL>" + [RiverName] + "</BOL></FNT>"    elif int([Level]) == 2:        return "<FNT color='blue'>" + [RiverName] + "</FNT>"    else:        return [RiverName]

案例4:分式标注(适用于比例、占比类标注)

需求:标注某区域“常住人口/总人口”,用下划线模拟分数线,分行显示。

字段:常住人口(Resident)、总人口(TotalPop)

Arcade:"<UND>" + Text($feature.Resident+ "</UND>" + "\n" + Text($feature.TotalPop)
•Python:"<UND>" + str([Resident]) + "</UND>" + "\n" + str([TotalPop])

优化:若需让分数线与上下文字对齐,可通过调整空格实现,语句改为:

"&nbsp;&nbsp;" + "<UND>" + Text($feature.Resident+ "</UND>" + "\n" + Text($feature.TotalPop)

这里的开头语句中的&nbsp;代表空格的意思哟

小伙伴们你们学费了吗?

五、总结标注语句使用步骤+避坑提醒

(一)快速调用标注语句的步骤

1.在内容窗格中选择需要标注的图层,切换到按标注列出选项卡

2.点击顶部「标注」选项卡,在「标注分类」组中点击「表达式」按钮;

3.在弹出的窗口中,选择脚本语言(推荐Arcade)

4.输入标注语句(可双击左侧字段列表添加字段,避免手动输入出错);

5.点击「验证」,确认无语法错误后,点击「应用」即可生效。

(二)新手必看避坑提醒

字段名区分大小写(Arcade严格区分,Python不区分),避免因字段名拼写错误导致标注失败;

数值运算时将字段转换为数值类型Python用int()/float(),Arcade无需转换),否则会出现文本拼接错误;

格式化标签需成对出现,嵌套时需先结束内部标签(如文本),否则格式无效;

使用反斜线时,需用第二个反斜线转义(如"C:\\Project\\"),Arcade也可使用TextFormatting.BackwardSlash替代;

复杂表达式(如多条件判断)在Python、VBScript中需勾选「高级」选项,Arcade无需勾选。

以上就是ArcGIS Pro标注语句的核心用法+实战案例,覆盖了从基础到进阶的大部分场景。其实标注语句没有那么难,只要记住“字段调用+逻辑组合+格式控制”的核心,多练几个案例就能熟练掌握。

希望这篇文章对小伙伴学习标注有帮助哟。如果觉得有用,点击下方名片欢迎点赞+收藏,转发给身边做GIS的小伙伴,一起提升制图效率!评论区留言你遇到的标注难题。我们一起相互帮助相互学习哟。

熬夜加班学习的挺困的吧

我经常买的咖啡大家也可以试试,吃完绝对不瞌睡,一边嚼,一边学,嘎嘎方便。

最后欢迎大家积极参与问答哟,我们后期不定期发福利给大家

#ArcGISPro #GIS制图 #标注技巧 #GIS教程 #ArcGIS实操