资讯专栏INFORMATION COLUMN

gcoord: 转换WGS84、GCJ02、BD09坐标,解决百度地图高德地图坐标系不统一的问题

yimo / 2387人阅读

摘要:做过地图相关开发的同学肯定会遇到这样一个问题同样的经纬度坐标,在百度地图和高德地图上位置不一样。解决方案百度地图以及高德地图都提供了一些方法来转换不同坐标系下的坐标,但是它们都需要进行网络请求,性能很差。

做过地图相关开发的同学肯定会遇到这样一个问题:同样的经纬度坐标,在百度地图和高德地图上位置不一样。

关于坐标系

我们通常用经纬度来表示一个地理位置,但是由于一些原因,我们从不同渠道得到的经纬度信息可能并不是在同一个坐标系下。

高德地图、腾讯地图以及谷歌中国区地图使用的是GCJ-02坐标系

百度地图使用的是BD-09坐标系

底层接口(HTML5 Geolocation或ios、安卓API)通过GPS设备获取的坐标使用的是WGS-84坐标系

不同的坐标系之间可能有几十到几百米的偏移,所以在开发基于地图的产品,或者做地理数据可视化时,我们需要修正不同坐标系之间的偏差。

WGS-84 - 世界大地测量系统

WGS-84(World Geodetic System, WGS)是使用最广泛的坐标系,也是世界通用的坐标系,GPS设备得到的经纬度就是在WGS84坐标系下的经纬度。通常通过底层接口得到的定位信息都是WGS84坐标系。

GCJ-02 - 国测局坐标

GCJ-02(G-Guojia国家,C-Cehui测绘,J-Ju局),又被称为火星坐标系,是一种基于WGS-84制定的大地测量系统,由中国国测局制定。此坐标系所采用的混淆算法会在经纬度中加入随机的偏移。

国家规定,中国大陆所有公开地理数据都需要至少用GCJ-02进行加密,也就是说我们从国内公司的产品中得到的数据,一定是经过了加密的。绝大部分国内互联网地图提供商都是使用GCJ-02坐标系,包括高德地图,谷歌地图中国区等。

导航电子地图在公开出版、销售、传播、展示和使用前,必须进行空间位置技术处理。— GB 20263―2006《导航电子地图安全处理技术基本要求》,4.1
BD-09 - 百度坐标系

BD-09(Baidu, BD)是百度地图使用的地理坐标系,其在GCJ-02上多增加了一次变换,用来保护用户隐私。从百度产品中得到的坐标都是BD-09坐标系。

解决方案

百度地图以及高德地图都提供了一些方法来转换不同坐标系下的坐标,但是它们都需要进行网络请求,性能很差。
在春节假期时,我做了一个库gcoord来做这些事。

gcoord

gcoord主要解决了两个问题

能将坐标在不同坐标系下相互转换

能够处理GeoJSON

GeoJSON是地理行业一种通用的数据格式,它本质上就是JSON,不过对字段有一些约定。

gcoord使用起来非常简单
例如从手机的GPS得到一个经纬度坐标,需要将其展示在百度地图上,则可以通过gcoord将当前坐标从WGS-84坐标系转换为BD-09坐标系

var result = gcoord.transform(
    [ 116.403988, 39.914266 ],    // 经纬度坐标
    gcoord.WGS84,                 // 当前坐标系
    gcoord.BD09                   // 目标坐标系
);
console.log( result );  // [ 116.41661560068297, 39.92196580126834 ]
详细的使用方式请查看gcoord的文档

欢迎大家star

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110122.html

相关文章

  • 前端小知识--地图坐标转换

    摘要:实际中我们可能会用到不同的地图,那么就对应到不同坐标系的转换,比如说,你有一份的数据服务,你要展现在百度或者高德地图上,这时候你就需要转换了。 地图坐标转换 LBS,基于位置的服务(Location Based Service),近年来已经无处不在,尤其是我们前端,相信或多或少都有接触一些地图API服务,比如高德、百度啊、谷歌啊~但是用的时候可能看到下面这些字眼:比如BD09、火星坐标...

    liangdas 评论0 收藏0
  • 百度高德,Google地图定位偏移以及坐标转换

    摘要:高德和在国内都是使用坐标系或在此基础上面加密为直接的坐标系,可以说,是国内最广泛使用的坐标系百度坐标系,百度坐标系是在坐标系的基础上再次加密偏移后形成的坐标系,只适用于百度地图。 概述 一:在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: 1.WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Google和高德地图定位的的经...

    nidaye 评论0 收藏0
  • 如何用Python完成百度高德地图转换

      众所周知,Python的一个使用场景还是比较多的,在工作当中,也会涉及到多方面的一些事情。那么,今天小编写这篇文章的一个主要目的,给大家来介绍关于如何用Python完成百度与搞得地图转换,下面就给大家详细介绍下。  一、地理编码与逆编码  地理编码与逆编码表示的是地名地址与地理坐标(经纬度)互相转换的过程。其中,将地址信息映射为地理坐标的过程称之为地理编码;将地理坐标转换为地址信息的过程称之为...

    89542767 评论0 收藏0
  • 微信获取用户地理位置(经纬度)和百度获取实际地址经纬度之间相差较大解决

    摘要:前提了解坐标系分类经纬度美国,国际通用,如谷歌国外地图地图火星系国测局制定的标准,国内地图必须至少使用此对位置进行首次加密,高德地图腾讯搜搜地图阿里云地图灵图地图谷歌中国地图百度在标准基础上进行二次加密,百度地图这两天一直在研究经纬度 前提了解: 坐标系分类(经纬度): WGS84 美国GPS,国际通用,如谷歌国外地图、osm地图 火星系GCJ-02 国测局制定的标准,国内地图必须至少...

    gougoujiang 评论0 收藏0
  • GPS坐标互转:WGS-84(GPS)、GCJ-02(Google地图)、BD-09(百度地图)

    摘要:转换的结果和百度提供的接口精确到小数点后位请放心使用卫星椭球坐标投影到平面地图坐标系的投影因子。 WGS-84:是国际标准,GPS坐标(Google Earth使用、或者GPS模块) GCJ-02:中国坐标偏移标准,Google Map、高德、腾讯使用 BD-09:百度坐标偏移标准,Baidu Map使用 WGS-84 to GCJ-02 GPS.gcj_encrypt(); GC...

    Baaaan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<