ArcGIS软件中的实现。

 一、上下标      

ArcGIS帮助中可以查看到上下标的写法如下所示:

      上标:"<SUP>" & [上标字段] & "</SUP>"

      下标:"<SUB>" & [下标字段] & "</SUB>"

  但是如果同时需要使用上下标的时候,就会出现这样的显示效果

arcmap 文字标注换行python文字换行_扩展模块

 ,上下标不会对齐,如果想显示的美观一些,就需要使用到高级的标注技巧,让Maplex这个扩展模块来帮我们解决问题了。

关于Maplex:Maplex是桌面软件的一个扩展模块,ArcGIS的Maplex扩展模块在ArcMap中增加了高级的标注布局和冲突检测的方法。使用Maplex可以节约很多的时间。实验表明,在地图上标注,使用Maplex至少可以节约50%的时间。Maplex是GIS制图的一个重要工具,它提供了很好的文字渲染和具有打印质量的文字布局方式。 

 

上下标的解决方案如下:

1. 在数据的表格中将上下标内容存储在一个字段中,用空格分开,例如“上标 下标”;

2. 在Data Frame(数据框)的属性对话框中把标注引擎调整为“ESRI Maplex Label Engine”;

3. 在标注的表达式里敲入以下代码

[标注字段]&"<SUP>" & [上下标字段] & "</SUP>"

    这句代码仅仅采用了上标的关键字,它会把现在的上下标统一显示在上标的位置,下面还需要调整标注的放置属性;

4. 点击Placement Properties—Fitting Strategy—Stack Label—Option,进行如下设置

        

arcmap 文字标注换行python文字换行_扩展模块_02

得到的效果图如下所示,因为上下标字符的长度不同,右对齐尚不能达到很完美的效果,但是还是改进了许多。    

        

arcmap 文字标注换行python文字换行_扩展模块_03

 

 

二、分式标注

分式标注是又一个难点,ArcGIS里并不能直接去构造分式,我们可以想办法把分子加下划线来表示,但对于分母的长度比分子长出很多的情况,显示效果就非常不理想。因此,最好能够动态的判断分子和分母的长度,按照最长的长度来确定分式横线的长度,代码如下所示(VBScript):

Function FindLabel ( [分子字段] , [分母字段] )
  dim a,b,c  
分子字段] )
分母字段]  )
  if (b>c) then
    a=b
  else
    a=c
  end if
分子字段] & vbnewline& string(a*0.5,"—") & vbnewline &  [分母字段] 
End Function

  

对于代分数的话,也可以用类似的方法,只需再添加一个表示整数的字段,代码如下:

Function FindLabel ( [整数字段] , [分子字段] , [分母字段] )
  dim a,b,c,d 
整数字段] )
分子字段] )
分母字段] )
  if (b>c) then
    d=b
  else
    d=c
  end if
分子字段] & vbnewline& [整数字段] & string(d*0.5,"—") & vbnewline & space(a) & [分母字段] 
End Function

 

需要说明的是,这段代码的效果还不能将标注调整到最好的显示效果,但如果你使用了Maplex标注引擎,就会发现效果的改善,如下图所示。

    

arcmap 文字标注换行python文字换行_扩展模块_04

 

三、分类标注

Define classes of features and label each class differently”,点击Add增加分组(需要几种不同的样式就设置几个分组),并且要为每个分组设置SQL语句进行过滤。然后为每个组设置不同的标注样式。

   

arcmap 文字标注换行python文字换行_字段_05

 

总结:由于标注是动态放置,且样式可以通过VBScript和JScript来设置,因而对标注的管理非常灵活。虽然经过标注技巧和Maplex的优化能够将大部分标注以最优的位置显示,但如果期望对某些单独修改,可以将标注(Label)转换为注记(Annotation)。