转换WGS84、GCJ02、BD09坐标,解决百度高德坐标偏移

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

关于坐标系

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

  • 高德地图、腾讯地图以及谷歌中国区地图使用的是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的文档

原文链接“:转换WGS84、GCJ02、BD09坐标,解决百度高德坐标偏移_慕课手记

转换WGS84、GCJ02、BD09坐标,解决百度高德坐标偏移相关推荐

  1. Python3 Wgs84\gcj02\bd09\mercator\bd09mc坐标系转换与投影

    最基础的一组经纬度坐标转换,在网上找到过JavaScript和java版本的,但是没有找到python版本的,把JavaScript版本的改成了python版本的,能凑合用. "" ...

  2. GPS坐标转百度地图坐标的方法

    转自:GPS坐标转百度地图坐标的方法 - 程序员大本营 首先需要认识一下GPS的坐标系.GPS坐标系遵循WGS-84标准,在这个标准下,GPS芯片可以发出不同的数据包格式.根据其数据帧帧头的不同,GP ...

  3. JS实现GPS坐标转化为高德坐标

    1.GPS坐标转化为高德坐标代码 var GPS = {PI: 3.14159265358979324,x_pi: 3.14159265358979324 * 3000.0 / 180.0,trans ...

  4. wgs-84,gcj-02,bd-09的相互转换,高德,世界测量,百度坐标系的相互转换,坐标系转换

    高德使用的是gcj-02坐标系,百度使用的是bd09坐标系,注意其间的相互转换 1.首先创建一个GPS对象类 public class Gps {private double wgLat;privat ...

  5. 【Java代码】坐标系说明+WGS84\GCJ02\BD09坐标系转换工具+Java坐标系转换及验证源代码分享(粘贴可用)

    1. 坐标系说明 开发地图应用服务时,一定会接触到各种坐标系,而保证坐标系的正确与合理是一切数据分析的前提,总的来说,坐标系可以分为两大类:地理坐标系GCS(Geographic Coordinate ...

  6. C#GPS坐标转百度地图坐标

    国际经纬度坐标标准为WGS-84,国内要求必须至少使用国测局制定的GCJ- 02,对地理位置进行首次加密.百度坐标在此基础上,进行了BD-09二次加密措施.百度对外接口的坐标系并不是GPS采集的真实经 ...

  7. html5 gps 坐标转高德地图坐标,GPS坐标转百度地图坐标的方法

    首先需要认识一下GPS的坐标系.GPS坐标系遵循WGS-84标准,在这个标准下,GPS芯片可以发出不同的数据包格式.根据其数据帧帧头的不同,GPS数据可以分类为GPGGA.GPGSA.GPGSV.GP ...

  8. 百度地图批量转换 GPS坐标转百度地图坐标 问题

    百度地图的官方网址 官方批量转换的demo 花了几天时间了解了一下百度地图,之前是后端的一个小伙伴在负责,他跟我吐槽这是前端的东西,让我来写(之前他们老大交给他了,我也以为是后端的任务(๑′ᴗ‵๑). ...

  9. gps数据转坐标c语言,GPS原始坐标转百度地图坐标(纯C代码)

    一.环境介绍 GPS模块型号:中科微电子GPS模块 GPS输出的原始数据帧: $GNGGA,114955.000,2842.4158,N,11549.5439,E,1,05,3.8,54.8,M,0. ...

最新文章

  1. Windows 典藏篇-vc++运行库安装,Microsoft Visual C++ Build Tools官方工具
  2. UA OPTI501 电磁波 Lorentz Oscillator Model 3 相速度与群速度
  3. kubeadm单集群部署k8s1.15.1flannel网络
  4. Flutter 中的基本路由
  5. JS判断Iframe是否加载完成
  6. 万字详解Oracle架构、原理、进程,学会世间再无复杂架构
  7. 基于jdk proxy的动态代理模式
  8. 头条鼓励内容营销吗?创作商品营销内容会不会限制推荐?
  9. C语言中的逗号操作符
  10. NumPy库---数组的基本操作
  11. c语言二进制转十六进制代码,C语言--二进制转十六进制
  12. ApacheCN 翻译活动进度公告 2019.5.31
  13. JumpServer页面访问502、504问题记录
  14. esp32对接阿里云生活物联网平台 天猫精灵控制 云智能APP远程控制 ali-sdk开发
  15. Rstudio 修改RMD快捷键快速插入Python代码块
  16. PlumeLog分布式日志系统+Spring Boot
  17. LINE chatbot机器人开发
  18. 【Ubuntu】postman安装、创建桌面快捷方式
  19. 三级管功放电路设计及参数选择
  20. 绿皮书一些quant 题目 (1)

热门文章

  1. 方舟找不到mod服务器了,方舟生存进化灭绝MOD全图文攻略 方舟灭绝MOD上手指南_MOD介绍及服务器设置_游侠网...
  2. SpringMVC之实现文件上传与下载
  3. SpringCloud(7)—— 国寿i动项目经验之(过滤器Filter技术(请求体二次解密处理技术))...
  4. 查看keyStore密钥
  5. 一位沪飘 7 年程序员的悲催 2020!
  6. vue 自定义月日历日程组件(MSchedule)
  7. 绝地求生服务器维护9月19日,绝地求生9月19日更新到什么时候?9月19日更新时间一览...
  8. 机器学习分类和预测任务
  9. resultMap实现多表联查
  10. iOS: UIWebView 中不加载图片(即浏览器常见的无图模式)