一、坐标系的基本概念
坐标系分为地理坐标系和投影坐标系,以下是对这两种坐标系的解释:
地理坐标系:为球面坐标。参考平面地是椭球面,坐标单位:经纬度
投影坐标系:为平面坐标。参考平面地是水平面,坐标单位:米、千米等
地理坐标转换到投影坐标的过程可理解为投影(投影:将不规则的地球曲面转换为平面)
二、测绘中各种坐标系
1、大地坐标系:
采用大地纬度、经度和大地高程来描述空间位置的。纬度是空间的点与参考椭球面的法线与赤道面的夹角;经度是空间的点与参考椭球的自转轴所在的面与参考椭球的起始子午面的夹角;大地高程是空间的点沿着参考椭球的法线方向到参考椭球面的距离。
将某点投影到椭球面上的位置用(B,L,H)表示。(大地经纬度L、大地纬度表示B)
2、空间直角坐标系:
坐标原点位于参考椭球的中心,Z轴指向参考椭球的北极,X轴指向起始子午面与赤道的交点,Y轴位于赤道面上切按右手系于X轴呈90度夹角,某点中的坐标可用该点在此坐标系的各个坐标轴上的投影来表示。
某点位置用(X,Y,Z)表示。
3、平面直角坐标:
如坐标原点o是任意假定的,则为独立的平面直角坐标系。
由于测量上所用的方向是从北方向(纵轴方向)起按顺时针方向以角度计值(象限也按顺时针编号)。因此,将数学上平面直角坐标系(角值从横轴正方向起按逆时针方向计值)的 x 和 y轴互换后,数学上的三角函数计算公式可不加改变直接用于测量数据的计算。
4、高斯-克吕格尔平面直角坐标系(Gis中高斯-克吕格尔平面直角坐标系,不是数学里面的平面坐标系):
根据高斯-克吕格尔投影所建立的平面坐标系,或简称高斯平面坐标系。它是大地测量、城市测量、普通测量、各种工程测量和地图制图中广泛采用的一种平面坐标系。
高斯-克吕格尔投影是德国的 C.F.高斯于1822年提出的,后经德国的克吕格尔(J.H.L.Krüger)于1912年加以扩充而完善。用大地经度和纬度表示的大地坐标是一种椭球面上的坐标,不能直接应用于测图。因此,需要将它们按一定的数学规律转换为平面直角坐标。大地坐标(B,L)转换为平面直角坐标(X,Y)的一般数学表示法为:X=F1(B,L), Y=F2(B,L), 式中F1、F2为投影函数。
三、同一基准面下的坐标转换
同一基准面的意思为前后两个坐标系的大地基准相同,仅是投影方式的变化。这只是一个投影变换,不需要人工干预,大部分软件可以自动完成,结果精确。
1、CASS【坐标换带】功能进行转换
2、ArcGis【投影】工具进行转换
在【ArcToolbox】中双击【数据管理工具】→【投影和变换】→【投影】。(仅演示矢量要素)
打开【投影】对话框,然后输入数据,并设置输出坐标及数据路径即可。
3、FME【Reprojector】、【EsriReprojector】转换器进行转换
四、不同基准面下的坐标转换
不同基准面的意思为前后两个坐标系的大地基准不同。比如54转80、80转2000。不同基准面下的坐标转换大部分软件不使用转换参数,转换结果误差较大。转换参数属于涉密数据,不可通用。
1、转换参数
四参数:
两个不同的二维平面直角坐标系之间转换时,通常使用四参数模型(数学方程组)。在该模型中有四个未知参数,即:
(1)两个坐标平移量(△X,△Y),即两个平面坐标系的坐标原点之间的坐标差值。
(2)平面坐标轴的旋转角度a,通过旋转一个角度,可以使两个坐标系的X和Y轴重合在一起。
(3)尺度因子m,即两个坐标系内的同一段直线的长度比值,实现尺度的比例转换。通常m值几乎等于1。
通常至少需要两个公共已知点,在两个不同平面直角坐标系中的四对XY坐标值,才能推算出这四个未知参数。计算出了这四个参数,就可以通过四参数方程组,将一个平面直角坐标系下一个点的XY坐标值转换为另一个平面直角坐标系下的XY坐标值。
实际使用中,4参数坐标相似变换,其一般公式如下:
七参数:
两个不同的三维空间直角坐标系之间转换时,通常使用七参数模型(数学方程组),在该模型中有七个未知参数,即:
(1)三个坐标平移量(△X,△Y,△Z),即两个空间坐标系的坐标原点之间坐标差值。
(2)三个坐标轴的旋转角度(εx,εy,εz),通过按顺序旋转三个坐标轴指定角度,可以使两个空间直角坐标系的XYZ轴重合在一起。
(3)尺度因子m,即两个空间坐标系内的同一段直线的长度比值,实现尺度的比例转换。通常m值几乎等于1。
通常至少需要三个公共已知点,在两个不同空间直角坐标系中的六对XYZ坐标值,才能推算出这七个未知参数。计算出了这七个参数,就可以通过七参数方程组,将一个空间直角坐标系下一个点的XYZ坐标值转换为另一个空间直角坐标系下的XYZ坐标值。
实际使用中,7参数坐标相似变换,其一般公式如下:
四参数与七参数的使用区别:
简单而言,四参数是用于两个平面直角坐标系之间的互相转换,而七参数是用于两个三维空间直角坐标系之间的转换。
四参数可以利用任意两个具有三维坐标的已知等级控制点求出,求解较为简单,也较容易理解;而七参数需要在测区布设一定密度的等级控制网点,利用整个网的WGS-84坐标系下的三维约束平差结果和当地坐标系统的二维约束平差结果及各点的高程解算,求解较为复杂,理解起来相对困难。
四参数法一般在5KM范围之内,而七参数法至少作用距离可以达到15KM。故而四参数法一般用于某些项目部的工地,而七参数一般覆盖某个地级市或是行政区。
2、CASS【坐标转换】功能进行转换
通过读入或拾取公共点,计算四参数、七参数进行单点、图形、数据转换。
But: 非正版CASS有个很大的坑,计算的七参貌似是有问题😓
3、ArcGis【投影】工具进行转换
有了四参数、七参数首先【创建自定义地理(坐标)变换】:
这里有两点需要注意:
1.使用七参数需要确认旋转单位是弧度还是秒;
2.使用七参数需要确认比例差是ppm还是m。
添加自定义地理(坐标)变换后,打开【投影】对话框,然后输入数据,并设置输出坐标及数据路径即可。
4、FME【EsriReprojector】、【AffineWarper】、【Affiner】、【3DAffiner】转换器进行转换
【EsriReprojector】转换器:
通过EsriReprojector转换器附加参数转换,是网上介绍最多的方法。在ArcGis中创建自定义地理(坐标)变换之后,在FME里使用EsriReprojector转换器,可以在“地理转换”下拉选项中使用参数转换。
本来我以为到这里就该结束了,但是万万没想到😂。通过调试发现是“EsriReprojector”的锅 What 🤣去年还能用,今年怎么。。。难道是ArcGis里面参数输错了???
于是回到ArcGis里面😱居然成功了👻👻👻
找了好久都解决不了,总不能在一棵树上吊死吧。此路不通换条路走,于是走上了艰辛的搜索之路。最后居然在bilibili发现了官方的教学视频。😇我去B站就是学习的,什么弹琴、射箭的视频统统没有刷过。😎
【AffineWarper】转换器:官方教学视频
在要素集的空间坐标上执行变形操作。它用于调整一组观察到的输入要素,根据被一组控制点定义的空间转换器。 这种转换器基于Control矢量要素计算仿射变换(缩放,旋转和偏移),并且通过应用这种转换对 Observed要素生成输出,当整个Observed数据需要单一的变换时进行了很好的更正。
每个Control表示一个控制向量(两点线要素),它的起点位于原始的Observed数据里在某个位置上,其终点在预期输出的数据里相应的位置上。每个控制向量表示从观察顶点到所需顶点的方向和距离所需的校正。只带有一个点的控制向量被当做从观察数据集到相关数据集上其位置不发生改变的要求。这通常被称为连接点。
控制向量可以存储在任何格式的数据集中并读入FME,或者直接在FME工作空间中生成,通常情况下,这些向量都是事先不知道的,必须从输入的数据中生成。
输入公共点,数据自动进行坐标转换。初步满足了功能需求,但是公共点需明文使用终归有安全隐患。还得回归Affiner使用。
【Affine】转换器:
Affine转换器帮助很简单,每个字我都认识。结合到一起😏这是什么鬼???
通过搜索发现Affine转换器使用教程,网上很多都是简单交代。最后还是在官方教学视频里找到详细使用说明。
通过这张截图,可以很清晰的知道该干嘛。
首先输入四参数(单位:米、弧度)
接着按公式依次输入A B C D E F 六个系数
运行之后:这就结束了😋
【3DAffine】转换器:
四参数搞定了,七参数应该也很简单吧😁对照公式和帮助
愉快的输入吧(单位:米、弧度,ppm需➗1000000)
顺利的运行之后👻
为什么跑到上面😭
仔细的检查之后,我确定没有输错参数、公式。那就本着怀疑的精神找问题,难道是公式错了?🧐 不对,假如公式没错的情况下。。。不会我七参错了吧👻👻👻
这里跳入了很大的一个坑:
Cass通过公共点算的七参数,ArcGis通过七参数投影精度满足需求🤣。FME通过七参数仿射变换就飞了🤣
于是通过其他方式重新计算了七参数。。。
为什么是重新计算呢?相同的公共点,两种方式计算的七个参数没有一个对的上。。。
索性参数都算完了,再试一遍吧🤣
然鹅,居然对上了👻👻👻
好吧,完结撒花。辛苦了,我的头发!★,°:.☆( ̄▽ ̄)/$:.°★