一、前言:
目前基于位置的应用越来越多,如滴滴打车、美团外卖、大众点评等等。在实际的工作中或者是个人开发项目都有对地图位置相关的功能需求,目前国内比较常见的地图开发平台有百度、高德,国外的google。对于刚接触到地图开发的开发者,可能会遇到各种各样的问题,如为什么有各平台的地图坐标系不一样?同样的经纬度在两个平台上为什么会差这么多?它们之间是什么关系?什么又是墨卡托坐标?本文将针对这些问题进行简单解释。
二、坐标系
WGS-84:是美国设计的全球大地坐标系。国际标准利用GPS采集的坐标就是WGS-84坐标系的坐标。一般用度、分、秒表示。
GCJ-02:是中国国家测绘地理信息局发布的坐标系,又称“火星坐标系”或“出版坐标系”。是为了国家安全,对在WGS-84基础上进行参数、偏移处理,得到的坐标系。国内要求互联网地图必须至少采用这个坐标系,或者在这个坐标系上再次进行参数、偏移处理。
BD-09:是百度在GCJ-02的基础上再次进行参数、偏移处理得到的百度坐标系。
三、坐标偏差
google、高德地图在国外采用的WGS-84坐标系,在国内采用的GCJ-02。
百度地图在全球都采用的BD-09坐标系。
因此要想坐标位置准确,那么必须满足相应的坐标展示在对应的地图坐标系上。
比如解放碑点的位置GPS坐标为(0,0),那么在高德地图上的坐标可能就为(1,2),在百度地图上
坐标可能就为(3,4)。为什么不一样,就是因为三个平台采用的参考不一样,及坐标系不一样。
当然三种坐标可以相互转换,网上已经有很多例子。
四、地图投影
我们都知道地球是个不规则的椭球,空间位置实际是一个球面坐标,而地图投影就是将3D的球面转换到2D的平面。
平时我们一般说的经纬度坐标就是一种球面坐标,范围取值,经度[-180,180],纬度[-90,90]。
而投影坐标是米或者千米等为单位的,是一种以xy表示的平面坐标,范围是最小(-20037508.3427892, -20037508.3427892 )到最大(20037508.3427892, 20037508.3427892)。
目前大部分互联网地图都采用的web墨卡托投影
五、其他
1、GPS的度分秒坐标转换到度
例:41°37'21.52换算37分就是37/60度,21.52秒就是21.52/3600度,结果就是41 + 37/60 + 21.52/3600 度。
2、经纬度顺序
有些公司(比如高德,百度,腾讯)是先经度,再纬度,即Point(lng lat)。但谷歌坐标的顺序恰好相反,是(lat lng)。