应用背景说明
大多数学地理的同学都知道地理坐标系与投影坐标系。
地理坐标系是使用三维球面来定义地球表面位置,以实现通过经纬度对地球表面点位引用的坐标系。根据椭球体对地球的拟合方式不同,主要分为两类:参心坐标系和地心坐标系。参心坐标系是椭球体对地球局部地区的高精度拟合,这样的优点是能够保证该地区测量的经纬度有很高的精度;同时缺点是离拟合中心越远,由于误差传递等原因,测量的精度会降低。我国常用的参心坐标系有北京54坐标系和西安80坐标系。地心坐标系则强调的是尽可能地拟合整个地球,这样的优点是便于配合全球导航卫星系统使用,例如中国的北斗系统、美国的GPS系统、俄罗斯的格洛纳斯系统、欧盟的伽利略系统;同时缺点是定位多多少少有一点偏差。在我国常用的地心坐标系有国家2000和美国的WGS84,如今随着北斗系统的全面使用,国家2000坐标系已经替换以往的北京54和西安80坐标系。
投影坐标系则是以地理坐标系为基准,将三维球面展开为一个平面,这就需要在地球椭球面和平面之间建立点与点之间函数关系。由于建立起的函数关系有很多种类,因此一个地理坐标系可以对应多种投影坐标系。常见的有横轴墨卡托投影(等角横轴割圆柱投影)、高斯-克里格投影(等角横轴切圆柱投影)。我国除了1:100万比例尺的地图以外,采用的都是高斯-克里格投影。高斯-克里格投影为了控制投影变形,采用分带投影的方法,也就有了3度分带、6度分带的说法。在3度分带中,深圳市所处分带为114E带,因此常用的投影为高斯-克里格投影3度分带114E。
在使用西安80地理坐标系的时期,由于其大地原点设在我国中部的陕西省泾阳县永乐镇,离深圳本地比较远,由于误差积累,导致深圳所测量的坐标误差较大。因此,深圳市就根据陕西省泾阳县永乐镇的大地原点一路测过来,并设置一个独立的原点,形成了深圳独立坐标系。经过多年的发展,在深圳独立坐标系下的地理数据已经积累很多了,如今国家要求统一转换到国家2000坐标系。对于北京54、西安80这类坐标系下的数据,借助ArcGIS软件能够很轻松地转换为国家2000,但是由于缺少深圳独立坐标系的具体参数,从而存在转换难度。详细的转换参数掌握在深圳市测绘相关部门,对于机关单位能够无偿地进行转换,而对于社会企业则有一定的收费标准。因此产生了一定的需求,如何用较少的成本实现深圳独立坐标系转国家2000坐标系呢?
工具/数据
ArcGIS软件
COORD软件
Pycharm软件
一份深圳独立坐标系下的数据
一份国家2000坐标系高斯投影114E下的数据(两份数据尽量有重合部位,用于确定控制点)
方法/步骤
如果只有少量的地理图层数据需要转换,那完全可以借助ArcGIS实现;但是对于多个图层/gdb数据的转换,则需要求解出4参数,再通过程序脚本的方式实现批量转换。以下分别介绍两种方法的实现步骤。
单图层转换
启动ArcMap软件,加载数据(深圳独立坐标系下的数据、国家2000坐标系下的数据),并查看坐标系;
注意:通过以上截图,可以发现两份数据的范围是不同的。一份是经纬度表达的范围,一份是投影坐标表达的范围。因此,用于匹配的两份数据需要转到同一投影坐标系下。也就是需要将国家2000地理坐标系转为高斯投影114E分带。
设置投影坐标系。打开ArcToolbox,选择【数据管理工具—投影与变换—投影】工具,填入相应的参数,设置输出坐标系为CGCS2000_3_Degree_GK_CM_114E。
右键软件界面空白处点击【空间校正】工具,打开【空间校正编辑工具条】。
开始编辑数据层,打开【空间校正编辑工具条】的【新建位移链接工具】。
选择明显节点进行空间校正,选点时点位要均匀。
对已校正点位进行核对查看是否合格,对残差比较大的点位做删除处理,并重新添加点位。
完成位移链接匹配后,设置校正数据,并开始校正与检查校正效果。
注意:由于历史原因,深圳边界存在一定的变化。整体上校正效果不错。如果有实地测量且准确的控制点信息,转换后的精度将进一步提高。
定义投影,得到国家2000高斯投影114E坐标系下的数据。
如果需要转换为国家2000地理坐标系,则通过投影方式实现。操作方式与步骤2类似。
批量图层转换
一两个地理图层的转换尚且能够使用上述方式,但是,当需要转换几十个地理图层,甚至需要转换多个地理数据库中的数据时,如果使用上述的方式工作量会非常的大。因此,我们需要求算出四参数,然后借助程序脚本的方式实现批量转换。
执行《单图层转换》的步骤1~步骤6,将链接表保存到本地。
打开COORD软件,选择计算四参数,输入采集链接表的控制点,点击计算,得到四参数。
注意:COORD软件下载链接
编写Python脚本,引入Arcpy包,填入计算得到的四参数,即可批量转换一个文件夹下所有shapefile、gdb、mdb。
注意:Python脚本获取请私聊博主