GIS的基本概念二:大地水准面、旋转椭球体(椭球体)、大地基准面

        上一章粗略整理了一下坐标系的概念,基本理解如何用坐标来表示地理空间。面对现实的地球,还是有一个疑问。众所周知,我们的地球表面是一个凹凸不平的表面,对于地球测量而言,地表是一个无法用数学公式进行表达的曲面,这样的曲面不能作为制图和测量的基准。所以为了达到我们用数学进行表达的目的,就得对真实的地球进行建模,进行逼近。为了更好的逼近地球,人们引入了以下几个重要概念

一.大地水准面

             1.定义:由德国的大地测量学家利斯延于1873提出。假设海水面处于静止平衡状态下,将其延伸到大陆下面,构成一个遍及全球的闭合曲面,这个曲面就是大地水准面。

 由上面的定义可以看出,海水处于静止状态,可知大地水准面是重力等位面,即物体沿该面运动时,重力不做功(水在上面不会自然流动)

图1.1地球模型示意图
如上图,由于地球表面起伏不平,地球内部质量分布不匀,故地球的重力场分布也是不一致的,从而导致大地水准面是一个略有起伏的不规则曲面。大地水准面的提出,对大地测量带来重要的突破。
大地水准面是大地测量基准之一,确定大地水准面是国家基础测绘中的一项重要工程。它将几何大地测量与物理大地测量科学地结合起来,使人们在确定空间几何位置的同时,还能获得海拔高度和地球引力场关系等重要信息。大地水准面的形状反映了地球内部物质结构、密度和分布等信息,对海洋学地震学地球物理学地质勘探、石油勘探等相关地球科学领域研究和应用具有重要作用。
大地水准面是测绘工作中假想的包围全球的平静海洋面,与全球多年平均海水面重合,形状接近一个旋转椭球体,是地面高程的起算面。
一个假想的、与静止海水面相重合的重力等位面,以及这个面向大陆底部的延伸面。它是高程测量中正高系统的起算面。
大地水准面同平均地球椭球面或参考椭球面之间的距离(沿着椭球面的法线)都称为大地水准面差距。前者是绝对的,也是唯一的;后者则是相对的,随所采用的参考椭球面不同而异。
       
绝对大地水准面差距[1]  大地水准面到平均地球椭球面间的距离(图1)。它的数值最大在 ±100米左右。绝对大地水准面差距可以利用全球重力异常按斯托克斯积分公式进行数值积分算得(见地球形状),也可以利用地球重力场模型的位系数按计算点坐标进行求和算得。原则上可以选取其中任一公式。前者虽然精度较高,但运算复杂;后者由于不能按无穷级数计算,精度受到限制,但运算方便。因此,在实践中总是根据不同的要求,采用其中的一种或综合两者优点采用一个混合公式计算。
绝对大地水准面差距除了用上述方法确定之外,还可以利用卫星测高仪方法确定(见卫星大地测量学)。
相对大地水准面差距  大地水准面到某一参考椭球的距离。因为参考椭球的大小、形状及在地球内部的位置不是唯一的,所以相对大地水准面差距具有相对意义。每一点的相对大地水准面差距,可以由大地原点开始,按天文水准天文重力水准的方法计算出各点之间相对大地水准面差距之差,然后逐段递推出来。

二.旋转椭球体(椭球体)

  从上面定义可知大地水准面是一个逼近真实地球的重要模型,同时其也是一个不规则的曲面,无法用数学表达式的方式就行建模。所以我们就需要二次逼近。
  人们选择了一个非常接近大地水准面且能用数学模型表达的曲面代替大地水准面,这个曲面称作旋转椭球面。旋转椭球面所包围的数学形体就成为旋转椭球体,有时也简称椭球体。可以参考图1.1
  椭球体的数学几何定义:O是椭球中心,NS为旋转轴,a为长轴,b为短轴

图1.2 旋转椭球体

重要概念

子午圈:包含旋转轴的平面与椭球面相截所得的椭圆

纬圈:垂直于旋转轴的平面与椭球面相截所得的圆

赤道:通过椭球中心的平行圈(纬圈)

地球椭球的五个基本几何参数

椭球的长半轴:a

椭球的短半轴:b

椭圆的扁率:

椭圆的第一偏心率 : 

椭圆的第二偏心率  : 

其中、称为长度元素;扁率反映了椭球体的扁平程度。偏心率和是子午椭圆的焦点离开中心的距离与椭圆半径之比,它们也反映椭球体的扁平程度,偏心率愈大,椭球愈扁。

两个常用的辅助函数,W第一基本纬度函数,V第二基本纬度函数:

         

       由于旋转椭球体是通过大地水准面得出的,而当具体到各个国家是,椭球体并不能完美的还原当地的实际情况。所以人们在实际使用中又提出了针对各自地区的参考椭球体模型。

        参考椭球体的定义:具有一定几何参数、定位及定向的用以代表某一地区大地水准面的地球椭球。地面上一切观测元素都应归算到参考椭球面上,并在这个面上进行计算。参考椭球面是大地测量计算的基准面,同时又是研究地球形状和地图投影的参考面

表1.1几种常见的椭球体参数值

 

克拉索夫斯基椭球体

1975年国际椭球体

WGS-84椭球体

6 378 245.000 000 000 0(m)

6 356 863.018 773 047 3(m)

6 399 698.901 782 711 0(m)

1/298.3

0.006 693 421 622 966

0.006 738 525 414 683

6 378 140.000 000 000 0(m)

6 356 755.288 157 528 7(m)

6 399 596.651 988 010 5(m)

1/298.257

0.006 694 384 999 588

0.006 739 501 819 473

6 378 137.000 000 000 0(m)

6 356 752.314 2(m)

6 399 593.625 8(m)

1/298.257 223 563

0.006 694 379 901 3

0.006 739 496 742 27

       我国建立1954年北京坐标系应用的是克拉索夫斯基椭球;建立1980年国家大地坐标系应用的是1975年国际椭球;而全球定位系统(GPS)应用的是WGS-84系椭球参数。

1.大地基准面(引用至http://wenku.baidu.com/view/061c40c7aa00b52acfc7cad1.html

       大地基准面(Geodetic datum),设计用为最密合部份或全部大地水准面的数学模式。它由椭球体本身及椭球体和地表上一点视为原点间之关系来定义。此关系能以6个量来定义,通常(但非必然)是大地纬度

、大地经度、原点高度、原点垂线偏差之两分量及原点至某点的大地方位角。

       让我们先抛开测绘学上这个晦涩难懂的概念,看看GIS系统中的基准面是如何定义的,GIS中的基准面通过当地基准面向WGS1984的转换参数来定义,转换通过相似变换方法实现,具体算法可参考科学出版社1999年出版的《城市地理信息系统标准化指南》第76至86页。假设Xg、Yg、Zg表示WGS84地心坐标系的三坐标轴,Xt、Yt、Zt表示当地坐标系的三坐标轴,那么自定义基准面的7参数分别为:三个平移参数ΔX、ΔY

、ΔZ表示两坐标原点的平移值;三个旋转参数εx、εy、εz表示当地坐标系旋转至与地心坐标系平行时,分别绕Xt、Yt、Zt的旋转角;最后是比例校正因子,用于调整椭球大小。

        那么现在让我们把地球椭球体和基准面结合起来看,在此我们把地球比做是“马铃薯”,表面凸凹不平,而地球椭球体就好比一个“鸭蛋”,那么按照我们前面的定义,基准面就定义了怎样拿这个“鸭蛋”去逼近“马铃薯”某一个区域的表面,X、Y、Z轴进行一定的偏移,并各自旋转一定的角度,大小不适当的时候就缩放一下“鸭蛋”,那么通过如上的处理必定可以达到很好的逼近地球某一区域的表面。

        因此,从这一点上也可以很好的理解,每个国家或地区均有各自的基准面,我们通常称谓的北京54坐标系、西安80坐标系实际上指的是我国的两个大地基准面。我国参照前苏联从1953年起采用克拉索夫斯基(Krassovsky)椭球体建立了我国的北京54坐标系,1978年采用国际大地测量协会推荐的1975地球椭球体(IAG75)建立了我国新的大地坐标系--西安80坐标系,目前大地测量基本上仍以北京54坐标系作为参照,北京54与西安80坐标之间的转换可查阅国家测绘局公布的对照表。WGS1984基准面采用WGS84椭球体,它是一地心坐标系,即以地心作为椭球体中心,目前GPS测量数据多以WGS1984为基准。 克拉索夫斯基(Krassovsky)、1975地球椭球体(IAG75)、WGS1984椭球体的参数可以参考常见的地球椭球体数据表。 椭球体与基准面之间的关系是一对多的关系,也就是基准面是在椭球体基础上建立的,但椭球体不能代表基准面,同样的椭球体能定义不同的基准面。

  • 13
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
海拔高转换和椭球高转换都是将高程数据从一个基准面转换到另一个基准面。其中海拔高是以地球表面的平均海平面为基准面的高程,而椭球高是以椭球表面为基准面的高程。在C++中实现海拔高转换和椭球高转换,需要先了解高程转换的原理和公式,然后编写相应的代码实现。 海拔高转换需要考虑大地水准面的影响,常见的海拔高转换方法是采用正常高和大地水准面高之间的转换关系。椭球高转换则是将椭球高转换为大地水准面高,需要考虑椭球的形状和大小。 以下是一个简单的C++代码示例,实现了海拔高转换和椭球高转换: ```c++ #include <cmath> using namespace std; // 地球椭球参数 const double a = 6378137.0; // 长半轴 const double b = 6356752.3142; // 短半轴 const double e2 = (a * a - b * b) / (a * a); // 第一偏心率的平方 // 正常高转大地水准面高 double normal2geoid(double h, double lat) { double gm = 9.7803253359; // 椭球重力加速度 double k = 0.00193185138639; // 常数 double sin2lat = sin(lat) * sin(lat); double m = gm / sqrt(1 - e2 * sin2lat); double g = gm * (1 + k * sin2lat) / (m + h); double N = a / sqrt(1 - e2 * sin2lat); double H = (m * h - g * (N + h)) / g; return H; } // 椭球高转大地水准面高 double ellipsoid2geoid(double h, double lat) { double N = a / sqrt(1 - e2 * sin(lat) * sin(lat)); double H = h - N; return H; } // 大地水准面高转椭球高 double geoid2ellipsoid(double H, double lat) { double N = a / sqrt(1 - e2 * sin(lat) * sin(lat)); double h = H + N; return h; } int main() { double h = 100.0; // 海拔高 double lat = 30.0 * M_PI / 180; // 经度 double H = normal2geoid(h, lat); // 正常高转大地水准面高 double h1 = ellipsoid2geoid(H, lat); // 大地水准面高转椭球高 double H1 = geoid2ellipsoid(h1, lat); // 椭球高转大地水准面高 return 0; } ``` 以上代码中,我们定义了三个函数:normal2geoid()用于正常高转大地水准面高,ellipsoid2geoid()用于椭球高转大地水准面高,geoid2ellipsoid()用于大地水准面高转椭球高。在这些函数中,我们先根据经度和椭球参数计算出大地水准面的参数,然后根据相关公式计算出高程数据的转换结果。 在main()函数中,我们定义了一个海拔高h和一个经度lat,然后依次调用normal2geoid()、ellipsoid2geoid()和geoid2ellipsoid()函数,将海拔高转换为椭球高,再将椭球高转换为大地水准面高,最后再将大地水准面高转换为椭球高,以此验证转换的正确性。 希望这个示例能够对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值