坐标转换一直是空间数据处理里面一个很是重要的内容,特别是目前我国已经全面启用了CGCS2000坐标系统,以往那些54和80的坐标,将来都要统一转换到2000上面,因此不少数据处理的单位和同窗,都很是关心坐标转换的问题。git
虾神曾经据说地理所的一个大牛有过这样的论点——GIS大部分东西,都能在计算机专业里面找到影子,只有空间参考和投影是属于GIS本身所特有的东西。因此这个东西历来就是非地理专业与地理专业在学习和使用GIS中的一个分水岭(话说虾神做为一个纯粹的计算机专业出身的码农,当年学的时候也很痛苦……地图学原理看了好多遍,才明白了个大概)。算法
ArcGIS做为世界上应用最广的GIS软件,在投影转换方面的技术已经很是成熟了,可是由于中国特有的国情,致使不少国内特有的东西,他不具有——好比没有内置各类坐标系转换到CGCS2000的转换参数(一些国际特别是北美通用的转换参数,是内置的了),固然,还有国内特有的标准图幅号这种东西……网络
下面咱们来看看,如何进行转换。工具
首先,转换的原理就不在这里掉书袋了,网络上不少,贴一张图意思一下:学习
实际上两个不一样坐标系之间的转换,就是平移、旋转和比例尺度的的变化。测试
那么转换的方法,一般在大范围下,都是经过布尔沙沃尔夫七参数来进行转换的,数学原理(此处省略一万字和若干数学公式)……3d
理论研究的同窗请去查阅《地图学原理》一书相关章节,下面进入工程实践操做:orm
ArcGIS里面,对于同椭球体下面的转换,是不须要任何参数的,好比我用WGS84(wkid:4326)转WGS84 Web Mercator(wkid: 3857),是不须要任何参数的:blog
可是要是换一个椭球体的话,好比换成cgcs2000,那么就须要定义地理转换参数了,以下:排序
固然,在新版本(10.4以后)的ArcGIS中,若是你不设定转换参数,也能够强转,只是转完以后,不保证精确度而已,而在比较老的版本里面,不设置转换参数,就直接不容许执行的。
因此,在转换的时候,定义转换参数是很是重要的,下面咱们来看看怎么计算而且设定转换参数。
首先贴出公式,数学恐惧症的同窗略过:
实际上就是一个七元方程组……好吧,算我没说,咱们直接用软件来算。
要计算七元方程式组,就最少须要3个点来进行解算,限于写代码很痛苦,因此咱们目前直接采用网上最流行的工具COORD GM来进行计算(有关心算法的,之后有机会再给你们讨论)。
这个神奇的软件以下:(PS:我很喜欢做者设置的这个图标)。
执行流程以下:
首先,准备三组坐标……准备的方法就你们各显身手了,好比用差分GPS去测量……,下面给出的三组模拟坐标,确定是假的,仅供测试。
其中一组是WGS84的经纬度,一组是CGCS2000 3度分带 117E的投影坐标,咱们就用这两组坐标来看看如何反算七参数。
首先,用ARCGIS的同窗,要先明确一个问题,就是ArcGIS里面的XY坐标,与传统测量里面的XY坐标,是正好相反的,以下所示:
为何会这样?由于传统测绘领域(包括OGC标准的GeoJSON里面,都是定义纬度在前,经度在后,缘由是纬度的英文单词是latitude,简写为LAT;而经度是longitude,简写为LON……字母排序,你懂的)
明确这个问题以后,进入COORD GM操做时间:
步骤一:在COORD GM中设定要CGCS2000的椭球体参数:
CGCS2000椭球体的参数是公开的,在ArcGIS里面就有,这里只要须要输入长半轴和扁率就能够了
而后开始计算七参数了:
选定好各类参数,注意输入顺序
三组坐标输入完成以后,点击计算,获得结果:
这个就是计算出来的七参数,可是目前在ArcGIS里面还不能直接用,由于ArcGIS里面的单位与COORD里面是不同的:
其中,ArcGIS里面的选择角度的单位是秒,而COORD里面是弧度;而ArcGIS里面的缩放比例尺用的是标准单位,而COORD里面用的百万分之,因此要进行以下转换:
后面那蓝色的就是能够在直接ArcGIS里面使用的参数了,下面把这些参数设置到ArcGIS中去:
Toolbox里面的投影转换找到建立地理变化:
按照以下信息,输入参数:
点击OK,完成建立
建立完成以后,在你的电脑的以下位置,会生成一个转换的配置文件:
C:用户你的用户名(好比Admin)AppDataRoamingEsriDesktop10.x(ArcGIS的版本)ArcToolboxCustomTransformations
好比个人机器上面,就在这个地方,配置文件的名称就是你设置的转换方法的名称:
下面就能够进行投影转换了:
而后你设置了数据和输入输出坐标系以后,系统会自动找到你设置的地理变换方法:
下面点击OK,完成坐标转换:
下面给出我这里的三组测试坐标系,你们能够用来练习一下:
No.1:
40.420897457099997,116.536157668000001
4476368.246360000222921,460634.908516999974381
No.2:
39.954091684500000,116.018334870999993,
4424893.136629999615252,416114.988767999981064
No.3:
39.834201677400003,116.712166401999994,
4411159.581939999945462,475361.417197000002488
输出结果:
DX=-0.016777
DY=0.033226
DZ=0.031063
WX=-0.0000000034
WY=0.0000000069
WZ=0.0000000064
K=-0.000000007618
ArcGIS参数
XT = -0.016777
YT = 0.033226
ZT = 0.031063
XR = -0.07015968
YR = 0.14238288
ZR = 0.13206528
SD = -0.007618
计算结果如上,若是计算结果一致,就表示你的操做步骤正确了,固然,输入的数值精度小数位不一样,结果也会出现细微误差,这个能够忽略。