20221224-常用坐标系及投影:WGS84-GCJ02-CGCS2000-BD09-Pseudo-Mercator-UTM-BD09MC

简介

先分类

WGS84 GCJ02 CGCS2000 BD09 是地心坐标系,坐标表现形式

Pseudo-Mercator UTM BD09MC 是投影坐标系,坐标表现形式为x y

WGS84 CGCS2000 是原始坐标系,GCJ02 BD09 是加密坐标系

目前,谷歌、OSM 等地图使用的是 WGS84 坐标系和Pseudo-Mercator 投影坐标系,高德、腾讯等地图使用的是GCJ02 坐标系和Pseudo-Mercator 投影坐标系;

天地图使用的CGCS2000坐标系和Pseudo-Mercator 投影坐标系

百度地图使用的是BD09坐标系和BD09MC 投影坐标系

UTM 投影坐标系经常应用在无人驾驶及高精地图上面

国内android系统手机采集的AGPS 数据是GCJ02 坐标系的

RTK 和一些PDA 设备采集的GPS 数据是WGS84 坐标系的

ios系统手机采集的AGPS数据是WGS84 坐标系的,GPS定位芯片获取的定位数据是WGS84 坐标系的,北斗芯片获取的定位数据是CGCS2000 坐标系的

二、分项介绍

WGS84 坐标系

全称 world geodetic system-1984 既 1984 年的全球坐标系统

美国GPS 系统使用的是WGS84 坐标系,受益于GPS 系统的发展,现在全球用的最多的坐标系就是WGS84 坐标系,它的EPSG 编码是4326

EPSG 是大地基准面,空间参考系统,地球椭球体、坐标转换 和相关度量单位的公共注册中心,它为每个坐标系都分配有一个编码

WGS84 坐标系的坐标原点为地球质心,地心空间直角坐标系的Z轴指向 BIH (国际时间服务机构) 1984.0 定义的协议地球极 CTP 方向,X轴指向BIH 1984.0 的零子午面和CTP 赤道的交点,Y轴与Z 轴,X轴垂直构成右手坐标系

它的地球椭球基本参数如下

赤道半径:a=6378137±2(m)

扁率:f=0.003352810664=1/298.257223565

(假设,赤道半径(长半轴)为a,极半径(短半轴)为b,扁率f=(a-b)/a。)

还有几个参数为 地球引力和地球质量的乘积、正常化二阶带谐系数、地球重力场二阶带球谐系数

地球自转角速度,这几个跟大地测量和地球物理相关,很深奥,我们只要了解赤道半径和扁率就行了

地球引力和地球质量的乘积 GM=3986005*108^3s^{-2}\pm 0.6 * 108 m^3s^{-2}

正常化二阶带谐系数 C20=-484.16685*10^{-6}\pm 1.3 * 10 ^{-9}

地球重力场二阶带球谐系数 J2=108263*10^{-8}

地球自转角速度 \omega = 7292115*10^{-11}rads ^{-1} \pm 0.150*10^{-11} rads^{-1}
WGS84 坐标系的OGC WKT 描述为

1
GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]

参见:https://epsg.io/4326,

这个网站上可以查阅常用坐标系的各种表现形式,对常用文件格式、软件、数据库、框架都做了兼容

WGS84 坐标系的EPSG 编码为4326,赤道半径为6378137,扁率为1/298.257223565,是目前应用最为广泛的坐标系统,只要跟GPS 定位相关,使用的都是WGS84 坐标系,谷歌、OSM 也用的WGS84坐标系,很多软件 QGIS ARCGIS 、前端脚本库 leaflet mapbox openlayer
在没有特别声明的时候,默认数据使用的是WGS84 坐标

CGCS2000 坐标系

China Geodetic Coordinate System 2000,2000 国家大地坐标系,是我国当前最新的国家大地坐标系,它的EPSG 编码为 4490

2000 国家大地坐标系的原点为包括海洋和大气的整个地球的质量中心,2000 国家大地坐标系 的Z 轴由原点指向历元2000.0 的地球参考极的方向,该历元的指向由国际时间局给定的历元为1984.0 的初始指向推算,定向的时间演化保证相对于地壳不产生残余的全球旋转,X 轴由原点指向格林尼治参考子午线与地球赤道面 历元 2000.0 的交点,Y轴与Z轴 X轴构成右手正交坐标系,采用广义相对论意义下的尺度

相较于WGS84 CGCS2000 坐标系的区别主要在于,它采用的是2000年的地球物理和大地测量的结果平差计算而设定的,坐标系Z轴 指向历元2000 的地球参考极方向,这些差异对高精数据有影响,但对于精度在10m 以上的数据来说,这些差异可以忽略不计

既非高精度的大多数情况下,我们可以认为WGS84 坐标系=CGCS2000坐标系

很多软件和框架还没有兼容CGCS2000坐标系,我们在使用CGCS2000坐标系的数据的时候,可以设置为WGS84坐标系,这样也便于传输和查阅

它的地球椭球基本参数如下
赤道半径 a=6378137m

扁率 f=1/298.257222101

地心引力常数 GM = 3.986004418*1014m^3s^{-2}

自转角速度 \omega=7.292115*10^{-5}rad s^{-1}

短半轴 b= 6356752.31414 m

极曲率半径 = 6399593.62586 m

第一偏心率 e=0.0818191910428

CGCS2000坐标系的OGC WKT 描述为

1
GEOGCS["China Geodetic Coordinate System 2000",DATUM["China_2000",SPHEROID["CGCS2000",6378137,298.257222101,AUTHORITY["EPSG","1024"]],AUTHORITY["EPSG","1043"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4490"]]

参见:

https://epsg.io/4490

小结:

大多数情况下,我们可以认为CGCS2000 坐标系=WGS84 坐标系,很多软件和框架都还没有兼容CGCS2000 坐标系,我们在使用CGCS2000 坐标系的数据的时候,可以设置为WGS84 坐标系,这样也便于传输和查阅

GCJ02 坐标系

为了数据安全和保密,通过地形图非线性保密处理算法,俗称火星加密,加密过的WGS84 坐标系,俗称国测局坐标系,或火星坐标系

GCJ02 坐标系与WGS84 坐标系之间的偏差大概在50-700m左右

目前国内大部分地图底图和矢量数据(除了LBS 服务的坐标数据,还包括android 手机的定位数据)都使用GCJ02 坐标系,为了使GCJ02 坐标系的底图与数据和WGS84 坐标系的底图与数据适配,通常会使用坐标系纠偏算法,将坐标系统一

各种形式的纠偏算法 javascript java python 等,都可以在网上搜索到,数据处理和webgis 开发,坐标系纠偏与数据融合统一是很重要的环节

通过对原始数据和加偏后的数据进行分析,猜测加偏的算法大概是,使用克拉索夫斯基椭球的参数,将原始坐标对应的经线和纬线上的偏差转为弧度后,与原始坐标相加,形成加偏坐标

这个算法非常优秀,它既能保证GCJ02 坐标系,相对于WGS84 坐标系的线性单调性,又能保证GCJ02 坐标系在伪距墨卡托投影下,相对于WGS84 坐标系在伪距墨卡托投影下的线性单调性,既能保证数据在加偏后,仍能维持实际的空间相对位置,又能保证数据可以无损的纠偏回去

小结

GCJ02 坐标系是一种加密坐标系,目前国内大部分地图底图 和矢量数据 都使用的是GCJ02 坐标系,GCJ02 的加密算法非常精妙,地图底图和矢量数据在使用之前,需要将坐标系进行统一

BD09 坐标系

BD09 坐标系是百度地图使用的地心坐标系,2009年,百度地图在GCJ02的基础上,做了二次加密,形成了BD09 坐标系

BD09 坐标系大概是先将GCJ02 坐标转为极坐标后,添加一个常量叫做偏移值,再将偏移后的极坐标转回到直角坐标

这种加偏算法,仅能保证相对于GCJ02 坐标系的线性单调性,无法保证投影后的线性单调性,所以百度地图的墨卡托投影需要分区域进行

百度地图提供WGS84、GCJ02坐标系向BD09坐标系的转换API:https://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition;在前端,百度地图也支持声明数据坐标系,以自动适配百度地图底图:https://lbsyun.baidu.com/index.php?title=jspopularGL/guide/coorinfo

除了百度自己的API外,网上也能搜索到BD09、GCJ02、WGS84坐标系之间的转换方法:https://blog.csdn.net/sinat_413

因为在GCJ02坐标系的基础上,又做了一次加密,所以百度地图与其他地图的数据兼容性变得很不好,但作为国内硕果仅存的还在做街景的商业地图平台,加之其与echart 开源 javascript 库 的良好结合,我们很多时候,还需要使用百度地图,这时候,虽然麻烦,但还是需要对它的底图和数据进行坐标系统一

小结

BD09 坐标系是在GCJ02 坐标系基础上二次加密而成,仅有百度地图在用,但百度地图有街景、有三维、有echart,很多情况下,我们需要使用百度地图的底图和数据,这时候,就需要对坐标系进行统一了,百度地图webapi 和js api 都支持坐标系的转换

墨卡托投影法

它是所有网络地图投影的基础

墨卡托投影法,又称麦卡托投影法,正轴等角圆柱投影,是一种等角的圆柱形地图投影法

本投影法得名于法兰德斯出身的地理学家杰拉杜斯·墨卡托,他于1569年发表长202公分、宽124公分以此方式绘制的世界地图。在以此投影法绘制的地图上,经纬线于任何位置皆垂直相交,使世界地图可以绘制在一个长方形上。由于可显示任两点间的正确方位,航海用途的海图、航路图大都以此方式绘制。在该投影中线型比例尺在图中任意一点周围都保持不变,从而可以保持大陆轮廓投影后的角度和形状不变(即等角);但墨卡托投影会使面积产生变形,极点的比例甚至达到了无穷大。

墨卡托投影法公式:

img

其中x和y是平面笛卡尔坐标,λ是经度,φ是纬度,λ0是地图的中央经线。

逆推公式为:

img

在制作小比例尺地图的时候,近似认为地球是正球体,将上述中的x 和y 乘以地球半径,即可形成对应地点的墨卡托投影相对坐标,在制作大比例尺地图的时候,要考虑到地球扁率

小结

墨卡托投影 法是一种等角圆柱形地图投影,它的投影公式计算简单,可以将地球投影到一张长方形图上,它是web-mercator 投影的基础

Pseudo-Mercator 投影

是墨卡托投影的一种变体,是WGS84 坐标系的伪距墨卡托投影,是网络地图应用的标准投影,自从2005年,谷歌地图使用web-mercator 投影发布自己的瓦片地图其,后续的图商 OSM 高的 腾讯 百度 都沿袭了这种投影法发布自己的地图,它的EPSG 编码为3857

墨卡托投影在大比例下会考虑地球扁率,但web-mercator 在所有比例尺下都使用球面公式,会导致局部地区的地图偏离同一比例尺下的椭球面墨卡托地图,离赤道越远,偏差就越明显,在地面上可以达到40km

因为很多人不知道web-mercator 和墨卡托投影有这样的差别,导致两者经常被乱用,为了避免投影乱用,致使数据混淆,很多官方机构规定正规途径禁用 web-mercator 投影

通常情况,web mercator 投影仅在网络地图上使用

web-mercator 投影公式与标准球面墨卡托的公式基本相同,但将世界坐标调整为左上角 为00 右下角为256 256 的正方形,假设地图投影在一个256 256 像素的图幅上

img

其中x 和y 是像素坐标,\lambda 是精度 \varphi 是维度,pixel 是像素,zoom level 是地图瓦片比例尺层级

web-mercator 投影的数据覆盖范围 在经度 -180 180 纬度 -85 85 之间
这有两个好处,其一是避免将极点投影到无穷远处,其二是能将整个投影地图变成正方形,虽然他会把部分南北极地区截掉,但毕竟,除了极为特殊的情况外,企鹅和北极熊不看网络地图

web-mercator投影的缺点是变形失真比较严重,不适用于大比例尺,高精度数据的显示,但优点也很明显,投影公式计算简单,投影结果是正方形,切图方便,坐标结果是各层级的像素坐标

Web-Mercator投影坐标系的OGC WKT描述为:

PROJCS[“WGS 84 / Pseudo-Mercator”,GEOGCS[“WGS 84”,DATUM[“WGS_1984”,SPHEROID[“WGS 84”,6378137,298.257223563,AUTHORITY[“EPSG”,”7030”]],AUTHORITY[“EPSG”,”6326”]],PRIMEM[“Greenwich”,0,AUTHORITY[“EPSG”,”8901”]],UNIT[“degree”,0.0174532925199433,AUTHORITY[“EPSG”,”9122”]],AUTHORITY[“EPSG”,”4326”]],PROJECTION[“Mercator_1SP”],PARAMETER[“central_meridian”,0],PARAMETER[“scale_factor”,1],PARAMETER[“false_easting”,0],PARAMETER[“false_northing”,0],UNIT[“metre”,1,AUTHORITY[“EPSG”,”9001”]],AXIS[“X”,EAST],AXIS[“Y”,NORTH],EXTENSION[“PROJ4”,”+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs”],AUTHORITY[“EPSG”,”3857”]

参见:

https://epsg.io/3857

小结:

web-mercator 投影坐标系是网络地图的投影坐标系,几乎所有的网络地图都使用这种投影,它的投影结果是正方形的,计算简单,切图方便

BD09MC 投影

BD09MC 是BD09 坐标系的web-mercator 投影坐标系

前文已经说过,GCJ02坐标系是WGS84坐标系的加密结果,GCJ02坐标系相对于WGS84坐标保证了投影后的线性单调性,所以GCJ02坐标系可以直接使用Web-Mercator投影,
但作为GCJ02 坐标系的二次加密结果BD09 坐标系没有做到投影后的线性单调性,为了保障投影后的线性单调性,百度地图基于web-mercator投影进行了修改,加入了常量矩阵,分区域对投影结果进行纠正

因为BD09坐标系采用极坐标加常量的方法进行偏移,所以BD09MC投影不是基于正球体的,而是椭球,其椭球赤道半径a=6378206m,极半径b=6356584.314245179m,数据覆盖范围与Web-Mercator投影一致。

BD09MC投影坐标系与Web-Mercator投影坐标系之间的转换可参见:

https://blog.csdn.net/sinat_41310868/article/details/113791826

地图底图瓦片栅格的转换,考虑到精度要求不需要太高,通常情况下,仅需进行瓦片中心点坐标的平移即可

小结

因为BD09坐标系是极坐标加常量加密,无法保证投影后的线性单调性,所以BD09MC 投影坐标系需要在BD09 坐标系进行web-mercator投影后,进行坐标纠正,因为精度不需要太高,地图瓦片的坐标纠正,仅需进行瓦片中心点坐标的平移即可

8 UTM投影

Universal Transverse Mercator,通用横轴墨卡托投影,是一种国际标准化的地图投影法,使用笛卡尔坐标系,标记南纬80°至北纬84°之间的所有位置,它的坐标基础是WGS84 坐标系,因为UTM 是一种分度带投影,所以不同经度区间的UTM 投影坐标系的EPSG 编码不同

UTM 采用网格编码,每个网格的编码经度在前,纬度在后

经度区间,每6° 被编排为一经度区间,每一个经度区间均以一个数字表示,由西向东数以01至60编排

纬度区间,从南纬80°开始,每8°被编排为一个纬度区间,而最北的纬度区间 (北纬74°以北) 则被延伸至84°,以覆盖世界上大部分陆地,每一个纬度区间均以一个英文字母表示,由南向北数以C至X 编排

具体情况如下图

在网格编码的基础上,某一点的UTM 坐标表示为该点所在的网格编码,加上该点由网格西南角起向北和向东的距离 细分网格数

坐标可由不同位数的数字组成,根据精度而定

如下图,假设在一个大网格 中,网格被不断以10*10的尺度被细分 第一次细分为100*100

A点的UTM细分坐标为17T 11 83,B点的UTM细分坐标为17T 106 827,C点的细分坐标为17T 1085 8255。

通常,一些自动驾驶项目采集的高精地图数据(点云、街景)是UTM投影坐标系的,某些网站上的卫星影响和自然资源数据,也使用UTM投影编码进行索引

小结

UTM 是通用横轴墨卡托投影,以细分网格的方式表示地球上的区间,一些高精地图数据使用的是UTM投影坐标系,某些网站上的卫星影像和自然资源数据,也是用UTM 投影编码进行索引

三、总结
地球是复杂的,表示地球的手段也是多样的,全球在用的坐标系与投影成千上万,以上仅仅是一些应用比较广的地图坐标系和投影,但这些坐标系和投影,已经涵盖了绝大多数地图的网络数据与应用。

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2024 TeX_baitu
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~