一、 引言
在Maplex中,提供stack label对标注进行自动换行的功能,可对属性值中的特定标识符进行前后的换行,如下图所示,对属性值中存在“购”的字符在其前换行,也即“中粮广场购物中心”换行为“中粮广场,购物中心”
Maplex仅支持单个字符的前后换行,简单的实现语义换行,却并不完全属于真正意义上的语义换行。如“***爱车车行俱乐部”,若标识符设置为“车”,不论“车”前还是“车”后都不恰当,“车行”才是一个完整的语义。如何才能最大程度的实现语义换行?
二、 实现原理
前面我们提到,Maplex仅支持单个字符的前后换行,是否可指定一个标识符,在一般的换行的语义前或者后进行插入,再使用stack label来进行自动换行?答案是肯定的。因此,我们要做的首要工作是制作关键词库。其次,设定相应的规则,是在前还是在后进行换行,如判断关键词在整体标注中的位置,偏前位则在其后进行换行,偏后位则在其前换行。
三、 实现方法
Python,一种开源、面向对象、跨平台的编程语言。使用Python可对ArcGIS桌面进行扩展定制,且构建工作流,进行自动化数据处理。在此,我们同样使用Python语言来进行语义换行自动化数据处理。
这里,标识符我们选用“,”,此外,对于一类POI点来说,关键词并非一个,如大型购物类POI,存在“百货”、“购物”、“商贸”等。换行规则为:当标注长度超过5时,按关键词进行语义换行;若关键词前没有任何字或关键词后没有任何字,则归类无关键词处理;判断关键词在整体标注中的位置,偏前位则在其后进行换行,偏后位则在其前换行;无关键词的处理按字数进行,奇数为N/N+1换行,偶数为N/N换行。Python代码如下:
数据处理完成后,使用Maplex的stack label,对标识符“,”进行换行,标识符设置为不可见即可。此外,还可设置换行的最大行数及每行的字数限制等。
四、 小结
通过制作关键词库,定义换行规则,使用python进行自动化数据处理,即可轻松的实现标注语义换行,在加强地图信息表达的同时,美化地图显示。
原文地址:http://blog.csdn.net/dsac1/article/details/45095135