得鹿梦鱼 得鹿梦鱼

空间数据的变换算法

平面坐标变换

平面直角坐标系的建立

在平面上选一点OO为直角坐标原点,过OO点做互相垂直的两轴,建立平面直角坐标系

平面坐标变换矩阵

T=[adgbehcfi]\text{T}=\left [\begin{matrix}a & d & g \\b & e & h \\c & f & i\end{matrix}\right ]

从变化功能上可以吧TT分为4个子矩阵
T1=[adbe]对图形进行缩放、旋转、对称、错切T_1=\left [\begin{matrix}a & d \\ b & e \end{matrix}\right ]\text{对图形进行缩放、旋转、对称、错切}
T2=[cf]对图形进行平移T_2=\left [\begin{matrix}c & f \end{matrix}\right ]\text{对图形进行平移}
T3=[gh]对图形进行投影变换T_3=\left [\begin{matrix}g \\h\end{matrix}\right ]\text{对图形进行投影变换}
T3=[i]对图形进行整体缩放T_3=\left [\begin{matrix}i\end{matrix}\right ]\text{对图形进行整体缩放}

平移变换

[xy1]=[xy1]×[100010TxTy1]=[x+Txy+Ty1]\left [\begin{matrix}x^* & y^* & 1\end{matrix}\right ] \text{=}\left [\begin{matrix}x & y & 1\end{matrix}\right ]\times\left [\begin{matrix}1 & 0 & 0 \\0 & 1 & 0 \\T_x & T_y & 1 \end{matrix}\right ]\text{=}\left [\begin{matrix}x + T_x & y + T_y & 1\end{matrix}\right ]

比例变换

[xy1]=[xy1]×[Sx000Sy0001]=[x×Sxy×Sy1]\left [\begin{matrix}x^* & y^* & 1 \end{matrix}\right ] \text{=}\left [\begin{matrix}x & y & 1 \end{matrix}\right ]\times\left [\begin{matrix}S_x & 0 & 0 \\ 0 & S_y & 0 \\ 0 & 0 & 1 \end{matrix}\right ]\text{=}\left [\begin{matrix}x \times S_x & y \times S_y & 1 \end{matrix}\right ]

对称变换

[xy1]=[xy1]×[ad0be0001]=[ax+bydx+ey1]\left [\begin{matrix}x^* & y^* & 1 \end{matrix}\right ] \text{=}\left [\begin{matrix}x & y & 1 \end{matrix}\right ]\times\left [\begin{matrix}a & d & 0 \\ b & e & 0 \\ 0 & 0 & 1 \end{matrix}\right ]\text{=}\left [\begin{matrix}ax + by & dx + ey & 1 \end{matrix}\right ]
当b = d = 0; a = -1, e = 1时 关于y轴对称
当b = d = 0; a = 1, e = -1时 关于x轴对称
当b = d = 0; a = -1, e = -1时 关于原点对称
当b = d = 1; a = e = 0时 关于 y= x对称
当b = d = -1; a = e = 0时 关于 y= -x对称

旋转变换

[xy1]=[xy1]×[cosθsinθ0sinθcosθ0001]=[xcosθysinθxsinθ+ycosθ1]\left [\begin{matrix}x^* & y^* & 1 \end{matrix}\right ] \text{=}\left [\begin{matrix}x & y & 1 \end{matrix}\right ]\times\left [\begin{matrix}\cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{matrix}\right ]\text{=}\left [\begin{matrix}x\cos\theta - y\sin\theta & x\sin\theta + y\cos\theta & 1 \end{matrix}\right ]

错切变换

[xy1]=[xy1]×[1d0b10001]=[x+bydx+y1]\left [\begin{matrix}x^* & y^* & 1 \end{matrix}\right ] \text{=}\left [\begin{matrix}x & y & 1 \end{matrix}\right ]\times\left [\begin{matrix}1 & d & 0 \\ b & 1 & 0 \\ 0 & 0 & 1 \end{matrix}\right ]\text{=}\left [\begin{matrix}x + by & dx + y & 1\end{matrix}\right ]

复合变换

复合变换是指图形做一次以上的几何变换,变换结果是每次变换矩阵相乘

注意

平移变换值改变图形的位置,不改变图形的大小和形状
旋转变换仍保持图形各部分间的线型关系和角度关系,变换后直线的长度不变,
比例变换可改变图形的大小和形状
错切变换可以引起图形角度关系的改变,是指导致图形发生畸变
拓扑不变的几何变换不改变图形的连接关系和平行关系

球面坐标变换

球面坐标系的建立

为在球面上确定点位可视需要而采用不同的坐标系,实践中常使用的有地理坐标系φ,λ\varphi,\lambda、球面坐标系a,za,z和球面直角坐标系x,yx,y

地理坐标与球面极坐标之间的关系
{cosz=sinφsinφ0+cosφcosφ0cosλλ0sinzcosa=sinφcosφ0cosφsinφ0cosλλ0sinzsina=cosφsinλλ0\begin{cases}\cos z = \sin\varphi\sin{\varphi_0} + \cos\varphi\cos{\varphi_0}\cos\lambda - {\lambda_0}\\\sin z \cos a =\sin\varphi\cos{\varphi_0} - \cos\varphi\sin{\varphi_0}\cos\lambda - {\lambda_0}\\\sin z \sin a = \cos\varphi\sin\lambda - {\lambda_0}\end{cases}
其中φ0,λ0{\varphi_0},{\lambda_0}为球面坐标系原点Q的地理坐标

球面直角坐标与球面极坐标的关系
{cota=sinxcotycosz=cosxcotyx=xφ0\begin{cases}\cot a = \sin\triangle{x}\cot{y}\\\cos z = \cos\triangle{x}\cot{y} \\\triangle{x} = x - {\varphi_0}\end{cases}

在采用球面级坐标系时,首先要确定一个极坐标的“极点”Q,球面上的各点便可以以新级Q为原点,以方位角α\alpha和天定距zz表示其位置,从形式上不难看出。新极点相当于地理坐标系中的北(南)极,方位角α\alpha相当于λ\lambda,天定距相当于90φ90^{\circ} - \varphi

球面上的坐标系

确定新极Q地理坐标中的φ0,λ0{\varphi_0},{\lambda_0}

  • 新极在投影区域的中心点上

通常可按照已有的数据确定Q点以及φ0,λ0{\varphi_0},{\lambda_0}或者取GIS数据区域边界上一定数量点的经纬度求其平均值
{φ0=1ni=1nφiλ0=1ni=1nλi\begin{cases}{\varphi_0} = \frac{1}{n} \sum_{i=1}^n {\varphi_i} \\{\lambda_0} = \frac{1}{n} \sum_{i=1}^n {\lambda_i}\end{cases}

  • 新极通过投影区域中部大圆的天顶
  • 新极通过投影区域中部小圆的天顶

仿射变换

仿射变换是使用最多的一种几何纠正方式。在保留线条平行条件下。仿射转换允许对长方形目标做旋转、平移、倾斜和不均匀缩放。
旋转指在原点旋转x和y轴;
平移是指吧原点移动到新的位置;
倾斜是指一个倾向形状改变为平行四边形;
不均匀缩放是指x或者y方向同时或者单独增大或者缩小比例尺

底图投影变换

概述

当系统所使用的数据是来自不同地图投影的图幅时,需要将一种投影的几何数据转换成所需投影的几何数据,这就需要进行地图投影变换。
地图投影变换的实质是建立2个平面场之间的点的一一对应关系。基本公式为
{X=f1x,yY=f2x,y\begin{cases}X = f_1x,y \\Y = f_2x,y\end{cases}

  • 解析变换法
  1. 反解变换法

是一种中间过渡的方法,即先解出原地图投影点的地理坐标,将其带入新图的投影公式求的坐标
反解变换法

  1. 正解变换法

不需要反解出原地图投影点的地理坐标的解析公式,而是直接求出两种投影点的直角坐标关系式
正解变换法

  • 数值变换法

如果原投影点的坐标解析式不知道,或者不易求出两投影之间坐标的直接关系,可以采用多项式逼近的方式,即用数值变换法来建立两投影间的变换公式;例如可以采用二元三次多项式进行变换
{X=a00+a10x+a01y+a20x2+a11xy+a02y2+a30x2+a21x2y+a12xy2+a03y3Y=b00+b10x+b01y+b20x2+b11xy+b02y2+b30x2+b21x2y+b12xy2+b03y3\begin{cases}X = a_{00} + a_{10}x + a_{01}y + a_{20}x^2 + a_{11}xy + a_{02}y^2 + a_{30}x^2 + a_{21}x^2y + a_{12}xy^2 + a_{03}y^3 \\Y = b_{00} + b_{10}x + b_{01}y + b_{20}x^2 + b_{11}xy + b_{02}y^2 + b_{30}x^2 + b_{21}x^2y + b_{12}xy^2 + b_{03}y^3\end{cases}
通过选择10个以上的2个投影之间的公共点,并组成最小二乘法的条件式
{X=i=1nXiXi2=minY=i=1nYiYi2=min\begin{cases}X = \sum_{i=1}^n {X_i - {X'}_i}^2 = min \\Y = \sum_{i=1}^n {Y_i - {Y'}_i}^2 = min\end{cases}
n为点数,Xi,Yi为实际变换值,Xi,Yi为理论值n为点数, X_i, Y_i为实际变换值, {X'}_i, {Y'}_i为理论值

数值解析变换法

当已知新投影的公式,但不知原投影的公式时,可先通过数值变换求出原投影的地理坐标,然后带入新投影公式,求出新投影点的坐标

数值解析变换法

兰伯特投影

  1. 兰伯特等角投影
    在双标准纬线下是一“等角正轴割圆锥投影”,设想用一个正圆锥割于球面两标准纬线,应用等角条件将地球面投影到圆锥面上,然后沿一母线展开,
    分布规律
  • 角度没有变形
  • 两条标准纬线上没有任何变形
  • 等变形线和纬线一致,即同一条纬线上的变形处处相等
  • 在同一经线上,两标准纬线外侧为正方形,而两标准纬线之间为负变形
  • 同一纬线上等经差的线段长度相等,两条纬线间的经线长度处处相等

墨卡托投影

是一种“等角正切圆柱投影”,假设地球被围在一中空的圆柱里,其标准纬线和圆柱相切接触,然后在假想地球中心有一盏灯,把球面上的圆形投影都圆柱体上,在吧圆柱体展开

墨卡托投影没有角度变形,由每一点向个方向的长度比相等,它的经纬线都是平行直接,且相交称为直角,经线间隔相等,纬线间隔从标准纬线向两级逐渐增大,墨卡托投影的地图上的长度和面积变形明显,但标准纬线无变形,从标准纬线向两级变形逐渐增大,但因为它具有各个方向均等扩大的特性,保持了方向和相互位置的正确

高斯-克吕格投影

是一种“等角横切圆柱投影”,假想有一个椭圆柱套在地球椭球体的外面,并与某一子午线(中央子午线)相切,椭圆柱的中心轴位于椭球的赤道上,将中央经线东西各一定的经差范围内的经纬线交点投影到椭圆柱面上,并将此圆柱展开为平面,即得本投影
没有角度变形,在长度和面积上变形也很小,中央经线无变形,自中央经线想投影带边缘,变形逐渐增加,变形最大处在投影带内赤道的两端

通用横轴墨卡托投影

一种“横轴等角割圆柱投影”