专栏名称: 申龙斌的程序人生
分享可繁殖的知识与技能:GTD时间管理、读书心得、个人成长、财富自由之路
目录
相关文章推荐
OSC开源社区  ·  深度实测Manus,我依然认为这就是AI ... ·  2 天前  
OSC开源社区  ·  30个小确幸(程序员版) ·  昨天  
程序员的那些事  ·  被骂了!腾讯道歉 + 立刻改正 ·  4 天前  
程序猿  ·  雷军提出建议!他本人也曾是“受害者” ·  6 天前  
51好读  ›  专栏  ›  申龙斌的程序人生

明白了这些术语,才算懂个“球”

申龙斌的程序人生  · 公众号  · 程序员  · 2019-04-20 22:02

正文

最近公司要开展国家2000坐标转换相关的工作,身边的测绘专业的同事给我科普了一下GIS基础知识,甩给我一堆缩写、概念和PPT:

  • BJ54

  • XA80

  • WGS84

  • CGCS2000

  • 大地水准面

  • 大地原点

  • 参心坐标系

  • 起始子午线

  • 地理坐标系

  • 椭球体参数

  • 基准面

  • 高斯克吕格投影

  • 墨卡托投影

  • 七参数


然后我的表情就是这样了:


小学地理老师从小告诉我们地球是圆的,我也知道直角坐标系、经纬度,不过我的地理知识可能是排球老师教的,可能知道的就这么多了。如今我整天都用GPS定位,我看到的地图是下面这样的,专业人士们为什么把地球研究得如此复杂?


随着翻阅了一堆公众号文章和资料,发现懂个“球”(地球)还真不容易,需要了解天文、地理、数学、历史等相关知识,想把北京54的坐标精确地转换国家2000坐标还真够费劲的。


在所有的概念里,最重要的两个概念应该是 坐标系 投影 。把这两个概念搞懂,再熟悉一些常用的坐标系和投影,平常工作就足够用了。



三维空间直角坐标系


初中都学过几何知识,空间直角坐标系都不陌生,球面上的点P有三个坐标分量,分别为(x, y, z)。

假设地球是一个完美的球,O点是球心,X轴、Y轴和Z轴还需要明确一下,Z轴可以对应于南北极的连线,X轴是 本初子午线 与赤道平面的交线。


我的小学地理也不及格,抓紧百度了一下本初子午线,就是指通过英国伦敦的格林尼治天文台原址的那条经线,也称为0°经线,或零子午线。英文名字是Prime Meridian。



这条本初子午线还是伦敦的一个景点,我也没有去过,从网上找到了一张图片。


有了X轴和Z轴,Y轴基本就确定了,只差一个方向,地图学里用右手坐标系,就是我图上画的那种X/Y/Z的位置关系。



大地坐标系


地理中还学过一种经纬度表示坐标的方法,在GIS中称为大地坐标系。

从0°经线的位置向东转过的角度就是经度,范围从-180°到180°。西边为负,东边为正。

从赤道向北转过的角度就是纬度,范围从-90°到90°。北半球为正,南半球为负。




参考椭球体


以上一直把地球认为是一个完美的球体,但现实中的地球有点扁,赤道方向稍长一点,南北极方向略短,数学上用椭球体来近似描述我们的地球。


所以上面说的纬度的定义实际上并不准确,在椭球体里,还有大地纬度、天文纬度之类的准确说法,数值会有略微差异,这里为了简化理解,就当成从赤道平面转过的角度。


从中心点O开始,东西方向上的长度称为长半轴a,南北极方向上的长度称为短半轴b,a和b具体是多少呢?不同的科学家有不同的参考答案,所以给定一套椭球体参数,就有一种地球描述,称为 参考椭球体 ,英文称为Reference ellipsoid。



常见的几种参考椭球体


参考椭球体 长半轴a(米)
短半轴b(米) 备注
北京54 6378245 6356863
Krasovsky 1940
西安80 6378140 6356755
1975国际椭球
WGS84 6378137 6356752.3142
GPS标准
CGCS2000 6378137 6356752.3141 我国标准


北京54


最早的北京54坐标系用的是苏联老大哥1942年的测量成果,克拉索夫斯基(Krasovsky)是苏联的一位数学家、大地测量学家,该椭球就是用他的名字命名 。后来发现,这个椭球体与我国的地面情况吻合得不太理想,有些地方的误差还挺大,就有了后来的西安80和CGCS2000。


西安80


1978年,因为北京54坐标系误差较大,我国决定采用新的坐标系,以陕西省泾阳县永乐镇为大地原点,称为1980年西安坐标系。其椭球体参数采用了1975年国际大地测量与地球物理联合会的推荐值。


什么是 大地原点 ?由于地球起伏不平,为了计算出一个与我国地貌比较吻合的椭球,要在我国范围内找一个 大地基准点 ,经过一番测量和计算( 平差 这个概念就不引入了),最后就选在西安了。我的解释不够专业和严谨,但大概意思就是这样。

西安大地原点标志塔(图片取自网络)


参心坐标系


北京54和西安80都是以参考椭球的几何中心为原点的大地坐标系,称为参心坐标系(reference-ellipsoid-centric coordinate system)。“参心”意指参考椭球的中心。


地心坐标系


以地球质心为原点建立的坐标系,就称为地心坐标系(geocentric coordinate system)。WGS84和CGCS2000都是地心坐标系。



WGS84


即世界大地坐标系(World Geodetic System 1984),是为美国GPS全球定位系统使用而建立的坐标系统,其坐标原点是地球质心。Google Earth和ArcGIS等软件都采用WGS84坐标系。


CGCS2000


2000中国大地坐标系(China Geodetic Coordinate System 2000),又称之为2000国家大地坐标系,2007年在中国正式实施。其椭球参数与WGS84的相差极小,如果没有极其精确的定位需求,可以不用把WGS84坐标转换成CGCS2000坐标。




投影


前面介绍了几种椭球体和相应的坐标系,想准确直观地表示地球上某点的位置,应该用地球仪来展示。但携带地球仪太不方便,也没办法打印出来挂在墙上,也不能显示在计算机屏幕上。


为此,要利用数学上的一种 投影 变换,把三维的球面变换到二维平面上,三维球面上的点与二维平面上的点完全一一对应。


这样的变换不可能完美,总会变形,或者长度变形,或者角度变形,或者面积变形,因此在不同的场合下,会使用不同的投影方法。



墨卡托投影


最容易想到的一种投影方法是把经线和纬线都扯直,平铺在一个平面上,当然这种描述方法太不严谨。荷兰地图学家墨卡托(Mercator)在1569年就提出了这种方法。这种投影还有一种很学术的名称: 等角正切圆柱投影


有个形象的比喻:假设地球被围在一中空的圆柱里,赤道与圆柱相切接触,然后再假想地球中心有一盏灯,把球面上的图形投影到圆柱体上,再把圆柱体展开,这就是墨卡托投影,注意这是一种近似描述。


墨卡托投影没有角度变形,常用作航海图和航空图,但长度和面积变形明显,赤道位置无变形,但北极和南极变形严重。从网上找到两幅示意图,可以看到墨卡托投影的原理以及变形情况。


图片取自知乎



Web墨卡托投影

Google Map、Virtual Earth等网络地理信息系统常用Web Mercator投影,也叫Spherical Mercator,它与常规墨卡托投影的主要区别就是把地球模拟为球体而非椭球体。


本初子午线和赤道的交点为坐标零点,X轴向东为正,Y轴向北为正。赤道半径为6378137米,赤道周长为40075016.6855784,因此X轴的取值范围是[-20037508.3427892, 20037508.3427892]。


Y轴按理说在纬度为90°时,y值为无穷大,这会让程序员崩溃的,为了编程方便和效率,程序员把Y轴的取值范围也限定在 [-20037508.3427892, 20037508.3427892]之间, 程序员把世界地图弄成了正方形







请到「今天看啥」查看全文