
做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])优化:若需让分数线与上下文字对齐,可通过调整空格实现,语句改为:
" " + "<UND>" + Text($feature.Resident) + "</UND>" + "\n" + Text($feature.TotalPop)这里的开头语句中的 代表空格的意思哟。
小伙伴们你们学费了吗?


五、总结标注语句使用步骤+避坑提醒
(一)快速调用标注语句的步骤
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实操
夜雨聆风