地图各类坐标系用途+互转

一、前言

最近改用了百度地图,一下子从之前的火星坐标系GCJ-02换成BD-09,一下子还不太习惯,一开始还以为是数据不准,导致页面叠加物都偏移了,但是整体都偏移就感觉不太对劲。

问了老前辈,才知道是不同坐标系的锅,赶紧恶补恶补。

所以今天我们就来讲讲这些坐标系的种类、用途和互相之间如何转换吧。

二、坐标系的种类

为什么要有这么多坐标系,因为国内对地理坐标有特殊的政策,防止外部势力轻易获取详细的各种重点设施的地理坐标,所以就规定了GPS获取的原始坐标,不允许在网上对外提供,凡是电子地图,就必须对位置做偏移处理,同时偏移不是简单的线性偏移,而是根据不同的算法,计算得出的结果,这就是不同的坐标系。不同坐标系下,偏移值在几十到几百米不等。

1、地心坐标系WGS-84

地心坐标系,也是GPS原始的坐标体系,目前世界上通用的坐标系就是它,代表厂商有MapBox、Cerium、OpenStreeMap、BingMap等。

2、火星坐标系GCJ-02

火星坐标系,由地心坐标系WGS-84加密后形成,制订方是中国国家测绘局,目前在高德、腾讯、谷歌中国、阿里云地图等地图厂商,用得就是该坐标系。

3、百度坐标系BD-09

百度坐标系,作为国内地图老东家,百度拥有自己的坐标系BD-09,他是在火星坐标系GCJ-02的基础上,再次加密得来的。

目前而言就只有百度相关产品在使用。

这里就需要注意了,如果之前都是用的高德、腾讯等地图产品,转战百度地图后,记得根据不同坐标系对坐标进行转换。

4、天地图CGCS2000

天地图是我国当前最新的国家大地坐标系,原点为包括海洋和大气的整个地球的质量中心,和WGS-84坐标系的椭球体基本类似,偏差值在0.11mm, 所以天地图和WGS-84基本可以兼容使用。

目前由国家地理信息公共服务平台,提供天地图的相关产品。

三、推荐一个好用的工具库coordtransform

coordtransform工具库,提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、
和WGS84坐标系之间的转换的工具模块,天地图的话,就默认用WGS84的相关方法即可

1、用法

// 安装
npm install coordtransform  

2、引入使用

// 在对应文件里


var coordtransform=require('coordtransform')
//百度经纬度坐标转国测局坐标  参数,经度lng,纬度lat
var bd09togcj02=coordtransform.bd09togcj02(116.404, 39.915)
// 返回格式为【经度,纬度】数组
// 如上面的bd09togcj02=[ 116.39762729119315, 39.90865673957631 ]

其他函数顾名思义,都是从一个坐标系转换成另一个坐标系。

gcj02tobd09、wgs84togcj02、gcj02towgs84


四、坐标系之间的转换

我把目前收集到的通用转换代码,放到了在线连接上,可自取。

目前提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换,基本和第三点用法相似。

有需要的jym,可以copy下来,放到自己的项目里去,全局或者局部引入都可,比第三方库用着稳定,也可以按自己的业务逻辑,随意修改源码,更改返回形式。

五、小结

坐标偏移基本只有国内范围才需要,国外的坐标不需要偏移。

多学一点,多知道一些,有备无患,指不定将来啥时候就用得上。

ps: 我是地霊殿__三無,希望能帮到你。

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MY9k8goz' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片