梁志强,张 冰
(黑龙江省自然资源权益调查监测院,黑龙江 哈尔滨 150080)
山海易绘(EzMap)是由北京山海经纬信息技术公司自主开发,是专业地理数据采集和地图制图出版软件[1]。在省级林业调查单位应用广泛,其工程文件(扩展名为.EMP,其数据库为.MDB)是矢量、数据及符号表达效果的集合。
在我省常规的林业制图采用EzMap软件进行制图,以森林资源规划设计调查的林相图作为基础制图。林相图以林场(或营林区、乡、镇)级经营单位为基础制图单位,多数采用比例尺1∶25000、高斯-克吕格投影、西安1980坐标系、6度分带,中央经线分别为123、129、135。县、市、省级汇总图均基于林场级数据汇总所得,多数采用比例尺1∶10万、1∶20万。
现阶段CGCS2000坐标系在全省范围内已被全面应用,西安1980坐标系制图已不满足业务生产要求,按CGCS2000坐标系重新制图工作量很大,所以将现有的EzMap西安1980坐标系的工程文件转换为CGCS2000是最好的选择。
借助EzMap的矢量数据配准功能,通过读取控制点文件(.lvp)实现坐标转换,可以达到预期效果。
以西安1980坐标系的县界(含乡镇界)为基础,按等距布点生成布点图,使用坐标转换软件将布点图转换成CGCS2000坐标,以乡镇为单位将西安1980坐标和CGCS2000进行选取,并生成EzMap识别的lvp文件。
读取县界(含乡镇界线要素)矢量包络线(最小外侧矩形区域)及空间投影信息,获取该包络线的四角坐标,并将左上角范围横纵坐标值按千位数进行取值,并将该矩形区域按一定距离外延,扩大矩形区域范围。
以该外延区域的左上角作为起始点,以设置横纵方向间隔值进行均匀布点,创建与外延区域相同空间投影的图框范围布点图层。保证控制点完全涵盖县域范围。创建属性字段为XH(数值型)、X1980(浮点型)、Y1980(浮点型)、X1980SH(浮点型)、Y1980SH(浮点型)、X2000(浮点型)、Y2000(浮点型)、X2000SH(浮点型)、Y2000SH(浮点型)。用于存储布点序号、两期坐标值及EzMap的1∶25000比例尺的坐标值(相应坐标x0.04获得)。在创建点的过程中将XH、X1980、Y1980、X1980SH、Y1980SH值写到相应点信息中。
使用坐标转换软件将布点图DIAN1980转换为CGCS2000坐标系矢量图DIAN2000。
读取DIAN2000,获取CGCS2000坐标系每个点的横纵坐标,并将该横纵坐标及换算坐标,按XH字段的值写回到矢量DIAN1980相同XH的相应属性字段中。
读取县界矢量,选择相应乡镇要素,并按布点间隔进行外向缓冲,用于选取布点个数超过原乡镇界线。
以缓冲后的乡镇范围选取布点。
lvp实质为文本文件,是EzMap识别的配准文件格式。将选取的布点的X1980SH、Y1980SH、X2000SH、Y2000SH字段的内容,按lvp文件格式进行创建和写入。
打开林业专题山海工程文件,使用“投影与配准”,选择“矢量配准”,选择配准方法,导入lvp文件,点“执行”操作,即可将西安1980的坐标配准到CGCS2000位置,配准后进行“投影变换”,选择“2000国家大地坐标系”确定投影。
坐标转换后,重新制作CGCS2000坐标系的公里网图框。
采用传统GIS软件实现控制点文件的制作效率很低,工作量大,通过对上述制作方法的研究,可以采用研发相应软件,实现批量处理操作。
GDAL(Geospatial Data Abstraction Library,地理空间数据抽象库)是一个在X/MIT许可协议下的开源空间数据(栅格数据和矢量数据)转换库,可实现读取、写入、转换、处理各种栅格和矢量数据格式[2]。
实现县域包络线读取、生成县域区域布点图、计算布点图坐标、两期矢量坐标属性数据关联、逐乡镇要素选择、乡镇区域缓冲、选取乡镇缓冲范围布点、读取属性信息等功能(图1、图2)。
oLayerXiang = ds.ExecuteSQL("SELECT * FROM " + fileXiang + " WHERE XIANG_NAME='" + dic.Value + "'", null, null);//获取乡镇要素oLayerDian = ds.GetLayerByName(file1980);//获取布点图层 oLayerDian.SetSpatialFilter(oLayerXiang.GetNextFeature(). GetGeometryRef().Buffer(Convert.ToDouble(heng), 0));//获取点要素_按乡镇缓冲范围设置空间过滤器。
图1 控制点批量生成软件Fig.1 Control Point Batch Generation Software
图2 乡镇级控制点分布图Fig.2 Distribution Map of Township Control Points
通过GDAL遍历图层要素,将EzMap需要的坐标写到lvp文件中(图3)。
图3 EzMap识别的lvp文件Fig.3 Lvp File Recognized by EzMap
在EzMap中将变化图层进行可编辑,导入对应单位的lvp文件,选择适当的配准模型,查看误差满足要求即可执行配准操作。配准后可以导入已有的CGCS2000坐标系矢量进行校验,经过校验配准效果满足制图要求(图4)。
图4 EzMap配准源点、目标点及误差Fig.4 EzMap Registration Source Point, Target Point and Error
以上介绍了山海易绘林业制图工程文件及控制点制作方法,并以C#+GDAL构建软件的方式,批量按县域内各乡镇范围生成矢量数据配准的控制点文件,通过EzMap软件实现已有林业制图文件从西安1980坐标系向CGCS200坐标系的转换,可以精准、高效实现数据坐标转换。