解决你所有ArcGIS标注问题!二分式、三分式、条件分类标注、上下标、牵引线、文字格式化…

解决你所有ArcGIS标注问题!二分式、三分式、条件分类标注、上下标、牵引线、文字格式化…

标注是将描述性文本放置在地图中的要素上或要素旁的过程。

本文整理了ArcGIS中的各种标注方法、可能遇到的问题和细节,内容比较杂,想到哪写到哪。

一、正常标注某一字段值的内容

右键点击【属性】,在【标注】选项卡下勾选【标注此图层中的的要素】,在【文本字符串】栏中选择要标注的字段即可。

标注结果如下:
在这里插入图片描述
二、更复杂一点的标注

如果要标注的内容包含多个字段,或者需要输入字符,可以采用表达式。点击【表达式】,在输入框中输入:

u'编号:'+[OBJECTID] +u'代码:'+ [中类]

注意解析程序中选择【Python】(当然也可以选择其它方式,个人感觉还是python好用)。

标注结果如下:
在这里插入图片描述
三、多分式标注

上面的例子中标注的内容都在同一行上,而多分式标注的重点在于需要换行,并在新行中输入一定长度的横线。表达式内容如下:

def FindLabel ( [OBJECTID] , [中类] ):
  a=len([OBJECTID] )
  b=len([中类])
  if a>b:
    s=a
  else:
    s=b
  p=[OBJECTID]+'
'+('-'*s)+'
'+ [中类] 
  return p

标注结果如下:
在这里插入图片描述
再复杂一些的多分式,例如在中间的横线左右加上更多字段值的内容,可以在表达式内增加输入参数:

def FindLabel ( [OBJECTID] , [中类], [大类] , [小类]):
  a=len([OBJECTID] )
  b=len([中类])
  c=len( [大类] )
  d=len( [小类] )
  if a>b:
    s=a
  else:
    s=b
  p=[OBJECTID]+'
'+ ' '*d+[大类] +'-'*s+ [小类]+ ' '*c +'
'+ [中类]
  return p

标注结果如下:
在这里插入图片描述
这里大家可能会注意到,中间的横线是由多段短线组成的,并不是真正的横线,也不美观。这里可以做一个修正,控制字符间距以达到取消空隙的功能。修改表达式如下:

def FindLabel ( [OBJECTID] , [中类], [大类] , [小类]):
  a=len([OBJECTID] )
  b=len([中类])
  c=len( [大类] )
  d=len( [小类] )
  if a>b:
    s=a
  else:
    s=b
  p=[OBJECTID]+'
'+ ' '*d+[大类] + "<CHR spacing = '-20'>" + '-'*s*2 + "</CHR>"+ [小类]+ ' '*c +'
'+ [中类]
  return p

这里表达式中的几个参数可以自己慢慢调整。(spacing = ‘-20’是字符间距,’-'s2是中间横线长度,关于字符间距在后面也会再说到。)

标注结果如下:
在这里插入图片描述
四、只标注符合条件的要素

在【方法】栏中选择【定义要素类并且为每个类加不同的标注】,点击【SQL查询】,在弹出的框中输入SQL筛选语句,这里以【面积>10000平方米】为例,只标注面积大于10000平方米的要素,面积小于10000平方米的就不标注。

标注结果如下:
在这里插入图片描述
五、按条件分类标注

上面的例子只定义了一个默认类。如果想用不同的方式标注同一个要素类,需要增加自定义类。

例如:要素类有某一个属性,用了3个字段来描述,就需要分类来标注,如下图:
在这里插入图片描述
新建三个自定义类,对每个自定义类设置【SQL查询】条件和文本样式,如下图:
在这里插入图片描述
标注结果如下:
在这里插入图片描述
六、用表达式来实现条件分类标注

其实用表达式也可以实现条件分类标注,只是表达式要稍微复杂一些,一般人不太爱用这种方式。例如我想实现面积大于10000平方米的要素用大红字显示,小于10000平方米则用小黑字显示,可以在表达式中输入:

def FindLabel ( [中类] , [Shape_Area]):
  if float([Shape_Area])  > 10000:
    return "<CLR red='255'><FNT size = '20'>" + [中类]  + "</FNT></CLR>"
  else:
    return [中类]

标注结果如下:

在这里插入图片描述
七、标注表达式的格式化标签

上面的例子中出现了【“” + [中类] + “”】这样的语句,这是ArcGIS在标注中的一种格式化标签,用来定义字符的格式,包括文字字体大小,颜色等等。

更多的标签如下:

1、加粗:“” + [中类] + “”

2、下划线:“” + [中类] + “”

3、字体:“” + [中类] + “”

4、文字大小:“” + [中类] + “”

5、字体和文字大小组合:“” + [中类] + “”

6、上标:“E = mc” + “” + “2” + “

7、下标:“H” + “” + “2” + “” + “O”

8、如果在一行标注字段中,只想改变部分文字的样式,同样也可以做到:

u"这部分不改变样式。" + "<FNT size='18'>" + [中类]  + "</FNT>"

标注结果如下:
在这里插入图片描述
9、字符间距:“” + [中类] + “”,这部分在多分式标注中也有提到。

10、行间距:“” + [中类] + “”

八、带牵引线的标注

带牵引线的标注一般用于引出标注,或者标注坐标点等场景。牵引线是通过字符符号来设置的,系统就自带了这种样式。

点击符号,拉到默认符号的底部,选择【项目符号牵引线】,点击【编辑符号】,设置x,y偏移即可。

在这里插入图片描述
再配合上面说过的多分式表达式,就可以做出类似坐标标注的效果了:
在这里插入图片描述
九、在地图视图中固定标注文字的大小

在地图视图中,当我们缩放地图里,标注的文字会随着变化,有时候会造成文字遮挡等问题。
在这里插入图片描述
这其实是因为文字大小随着地图比例的缩放而变化,将地图比例设置为固定值即可解决问题。右键点击地图框,点击【属性】,在【常规】选项卡找到【参考比例】栏,将比例设置为固定比例即可。
在这里插入图片描述
PS:设置为固定比例在某些场景也不合适,这个看个人需求,按需要调整。