刘 陆,梁志强
(黑龙江省林业监测规划院 ,哈尔滨 150080)
ArcGIS制图工具有很方便的制图功能,可以实现图斑属性标注、分类着色、指北针、图例、比例尺及公里网等功能,可以满足林业业务生产制图工作的需要,如森林抚育制图、营造林规划设计图、林业图斑现状分布图等图件的制作。
ArcGIS图斑属性标注方法是通过加载林业调查空间要素,右键单击矢量图层,查看属性,在标注选项中选择文本字符串确定标注字段或者通过标注表达式加载或输入标注脚本(VBScript、Python、JScript)内容,并直接定义标注式样(字体、字号、字形、颜色等)[1]实现图面信息的标注。文本字符串仅能简单标注一个字段的内容,而表达式可以进行复杂样式的多字段标注[2]。林业制图中为了在图纸上更多的显示数据信息,大多采用表达式形式的分式标注的方式,在成图效果上也更为美观。然而复杂标注表达式在ArcGIS中是使用脚本代码加载和解析的方式来实现,对于没有程序开发经验的人来说很难读懂和修改,尤其是林业常用的分式表达式格式形式多样,字段数不确定,只有真正理解了表达式的构成原理和编码规则才可以实现正确美观的标注脚本,但通用性很小,遇到新的情况就需要进行修改,操作复杂、效率低下,缺少通用性。
图1 ArcGIS标注操作界面Fig.1 ArcGIS Callout Operation Interface
ArcGIS对标注表达式有详细的脚本帮助文档,对于没有程序研发经验的人来说很难理解,也很难写好标注脚本内容。
图2 标注表达式VBScript脚本代码Fig.2 Annotation Expression VBScript Script Code
ArcGIS注记表达式文件扩展名为lxp,本文中使用VBScript编码,采用的是Unicode编码方式的文本文件。在注记表达式VBScript中为了实现分式效果使用vbNewLine实现换行;使用
采用C#进行编码,布局通用生成工具界面,根据相应林业业务工作的标注需要自行设置分式各区域字段列表,生成ArcGIS标注表达式lxp文件,在极大地提升绘图效率的基础上,也有力地保障了地图中各项数据信息的科学性和准确性[3]。
图3 ArcGIS标注表达式自动生成工具Fig.3 Automatic ArcGIS Label Expression Generation Tool
1)读取林业矢量数据表结构
选择林业矢量数据表,将数据表的字段内容读取到字段名称列表中,便于后续字段拖拽操作。
2)设置分式内容
鼠标左键选择字段名列表中的字段,使用拖拽方式,将相应字段拖拽到分式的相应区域列表中,每一部分可以拖拽多字段,但不允许拖拽字段重复至于多个分式区域,可双击分式区域的字段名称进行移除,系统会根据所添加分式区域字段列表,对标注表达式实例进行刷新重新组合样式。
3)设置字段间隔符号
单独区域如果为多字段,需要设置字段间隔符号,保证字段内容被隔开,如“林班-小班”样式等。
4)生成表达式lxp文件
lxp文件的生成采用C#读写文本文件的方式进行操作,编码方式必须采用Encoding.Unicode方式,否则在加载标注脚本时候,ArcGIS无法识别其数据格式。
图4 C#读写lxp文件部分代码Fig.4 C # Read and Write Lxp File Part of the Code
5)ArcGIS导入lxp文件
使用ArcGIS软件将林业图斑矢量加载至GIS中,按照属性标注方法,加载生成的图斑标注lxp文件,实现标注操作[4]。
图5 林业制图标注效果Fig.5 Forestry Icon Note Effect
本文通过对ArcGIS制图功能在林业制图工作中使用的复杂标注方式进行分析总结,采用软件设计的方法研发通用标注表达式生成工具,使林业制图人员可以通过标注表达式生成工具针对具体制图业务的标注方式来设置标注字段和标注样式,并自动生成ArcGIS标注表达式lxp文件,制图人员无需了解脚本代码的知识就可以操作,降低了林业制图标注操作的复杂度,提高工作效率。