标注是将描述性文本放置在地图中的要素上或要素旁的过程。
本文整理了ArcGIS中的各种标注方法、可能遇到的问题和细节,内容比较杂,想到哪写到哪。
右键点击【属性】,在【标注】选项卡下勾选【标注此图层中的的要素】,在【文本字符串】栏中选择要标注的字段即可。
标注结果如下:
二、更复杂一点的标注
如果要标注的内容包含多个字段,或者需要输入字符,可以采用表达式。点击【表达式】,在输入框中输入:
u'编号:'+[OBJECTID] +u'代码:'+ [中类]
注意解析程序中选择【Python】(当然也可以选择其它方式,个人感觉还是python好用)。
三、多分式标注
上面的例子中标注的内容都在同一行上,而多分式标注的重点在于需要换行,并在新行中输入一定长度的横线。表达式内容如下:
def FindLabel ( [OBJECTID] , [中类] ):
a=len([OBJECTID] )
b=len([中类])
if a>b:
s=a
else:
s=b
p=[OBJECTID]+'\n'+('-'*s)+'\n'+ [中类]
return p
标注结果如下:
再复杂一些的多分式,例如在中间的横线左右加上更多字段值的内容,可以在表达式内增加输入参数:
def FindLabel ( [OBJECTID] , [中类], [大类] , [小类]):
a=len([OBJECTID] )
b=len([中类])
c=len( [大类] )
d=len( [小类] )
if a>b:
s=a
else:
s=b
p=[OBJECTID]+'\n'+ ' '*d+[大类] +'-'*s+ [小类]+ ' '*c +'\n'+ [中类]
return p
这里大家可能会注意到,中间的横线是由多段短线组成的,并不是真正的横线,也不美观。这里可以做一个修正,控制字符间距以达到取消空隙的功能。修改表达式如下:
def FindLabel ( [OBJECTID] , [中类], [大类] , [小类]):
a=len([OBJECTID] )
b=len([中类])
c=len( [大类] )
d=len( [小类] )
if a>b:
s=a
else:
s=b
p=[OBJECTID]+'\n'+ ' '*d+[大类] + "" + '-'*s*2 + ""+ [小类]+ ' '*c +'\n'+ [中类]
return p
这里表达式中的几个参数可以自己慢慢调整。(spacing = ‘-20’是字符间距,’-'s2是中间横线长度,关于字符间距在后面也会再说到。)
标注结果如下:
在【方法】栏中选择【定义要素类并且为每个类加不同的标注】,点击【SQL查询】,在弹出的框中输入SQL筛选语句,这里以【面积>10000平方米】为例,只标注面积大于10000平方米的要素,面积小于10000平方米的就不标注。
标注结果如下:
五、按条件分类标注
上面的例子只定义了一个默认类。如果想用不同的方式标注同一个要素类,需要增加自定义类。
例如:要素类有某一个属性,用了3个字段来描述,就需要分类来标注,如下图:
新建三个自定义类,对每个自定义类设置【SQL查询】条件和文本样式,如下图:
标注结果如下:
六、用表达式来实现条件分类标注
其实用表达式也可以实现条件分类标注,只是表达式要稍微复杂一些,一般人不太爱用这种方式。例如我想实现面积大于10000平方米的要素用大红字显示,小于10000平方米则用小黑字显示,可以在表达式中输入:
def FindLabel ( [中类] , [Shape_Area]):
if float([Shape_Area]) > 10000:
return "" + [中类] + ""
else:
return [中类]
标注结果如下:
七、标注表达式的格式化标签
上面的例子中出现了
这样的语句,这是ArcGIS在标注中的一种格式化标签,用来定义字符的格式,包括文字字体大小,颜色等等。
u"这部分不改变样式。" + "" + [中类] + ""
标注结果如下:
八、带牵引线的标注
带牵引线的标注一般用于引出标注,或者标注坐标点等场景。牵引线是通过字符符号来设置的,系统就自带了这种样式。
点击符号,拉到默认符号的底部,选择【项目符号牵引线】,点击【编辑符号】,设置x,y偏移即可。
再配合上面说过的多分式表达式,就可以做出类似坐标标注的效果了:
九、在地图视图中固定标注文字的大小
在地图视图中,当我们缩放地图里,标注的文字会随着变化,有时候会造成文字遮挡等问题。
这其实是因为文字大小随着地图比例的缩放而变化,将地图比例设置为固定值即可解决问题。右键点击地图框,点击【属性】,在【常规】选项卡找到【参考比例】栏,将比例设置为固定比例即可。
PS:设置为固定比例在某些场景也不合适,这个看个人需求,按需要调整。