01
定义
首先在讲述本文前,需要明确地理坐标系和投影坐标系的区别。两者定义以及联系如下:
地理坐标系:是使用三维球面来定义地球表面位置,是基于球体或旋转椭球体的坐标系。使用基于经纬度的坐标系统来描述地球上某个点所处的位置。
投影坐标系:在二维平面中进行定义。与地理坐标系不同,使用基于X,Y值的坐标系统来描述地球上某个点所处的位置。投影坐标系始终基于地理坐标系,而后者则是基于球体或旋转椭球体的。
两者联系:投影坐标系始终基于地理坐标系,它对应于某个唯一的地理坐标系,通常地理坐标系和投影坐标系是一对多的关系。而地理坐标系是基于球体或旋转椭球体的。
02
火星、百度、高德等坐标介绍
其次我们要搞懂什么是火星坐标系,百度以及高德等互联网地图采用的坐标系跟火星坐标系的关系。
GCJ-02 坐标系,即火星坐标系。这是由国测局02年发布的坐标系,所以又称为国测局坐标,它是对经纬度数据加入随机的偏差进行加密的算法。互联网地图都是基于GCJ-02进行一次或者多次加密的,不允许使用WGS-84坐标。
BD09坐标系:百度地图采用的百度坐标系,在GCJ-02基础上二次加密而成。高德、腾讯都是使用GCJ-02 坐标系。
03
GCJ-02 坐标系、BD09坐标系和WGS84 坐标系互转
WGS84 坐标系:Google地图使用,也是大多数科研人员使用到的地理坐标系。
本文参考GitHub的代码,在此基础上改进一点点。实现GCJ-02 坐标系、BD09坐标系和WGS84 坐标系之间的互转
使用前记得改路径,代码如下:
04
结果示意
原始数据:
转换后的数据: