• 高德百度坐标系转换方法


    在开始这个题目之前,先给大家再次扫扫盲,扫的不是坐标系统的盲,而是我们国家所使用的坐标系统。大家都知道,美国GPS使用的是WGS84的坐标系统,以经纬度的形式来表示地球平面上的某一个位置,这应该是国际共识。但在我国,出于国家安全考虑,国内所有导航电子地图必须使用国家测绘局制定的加密坐标系统,即将一个真实的经纬度坐标加密成一个不正确的经纬度坐标,我们在业内将前者称之为地球坐标,后者称之为火星坐标,具体的说明可以参看百度百科中关于火星坐标系统的解释。

    1.国内各地图API坐标系统比较

    参考http://rovertang.com/labs/map-compare/

    结论是:

    API

    坐标系

    百度地图API

    百度坐标

    腾讯搜搜地图API

    火星坐标

    搜狐搜狗地图API

    搜狗坐标*

    阿里云地图API

    火星坐标

    图吧MapBar地图API

    图吧坐标

    高德MapABC地图API

    火星坐标

    灵图51ditu地图API

    火星坐标

     

     

    2.下面是百度官方对百度坐标为何有偏移的解释

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

    3.火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法

    GCJ-02(火星坐标 BD-09 (百度坐标)

    算法代码如下,其中 bd_encrypt 将 GCJ-02 坐标转换成 BD-09 坐标, bd_decrypt 反之。

    void bd_encrypt(double gg_lat, double gg_lon, double &bd_lat, double &bd_lon)

    {

        double x = gg_lon, y = gg_lat;

        double z = sqrt(x * x + y * y) + 0.00002 * sin(y * x_pi);

        double theta = atan2(y, x) + 0.000003 * cos(x * x_pi);

        bd_lon = z * cos(theta) + 0.0065;

        bd_lat = z * sin(theta) + 0.006;

    }

     

    void bd_decrypt(double bd_lat, double bd_lon, double &gg_lat, double &gg_lon)

    {

        double x = bd_lon - 0.0065, y = bd_lat - 0.006;

        double z = sqrt(x * x + y * y) - 0.00002 * sin(y * x_pi);

        double theta = atan2(y, x) - 0.000003 * cos(x * x_pi);

        gg_lon = z * cos(theta);

        gg_lat = z * sin(theta);

    }

    4.地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02) 的转换算法

    WGS-84  GCJ-02 的转换(即 GPS 加偏)算法是一个普通青年轻易无法接触到的公开秘密。这个算法的代码在互联网上是公开的,详情请使用 Google 搜索 "wgtochina_lb" 

    整理后的算法代码请参考 https://on4wp7.codeplex.com/SourceControl/changeset/view/21483#353936 。知道了这个算法之后,就可以离线进行 Google 地图偏移校正,不必像之前那么麻烦。

    至于 GCJ-02  WGS-84 的转换(即 GPS 纠偏),可以使用二分法。

  • 相关阅读:
    AngularJS Insert Update Delete Using PHP MySQL
    Simple task manager application using AngularJS PHP MySQL
    AngularJS MySQL and Bootstrap Shopping List Tutorial
    Starting out with Node.js and AngularJS
    AngularJS CRUD Example with PHP, MySQL and Material Design
    How to install KVM on Fedora 22
    Fake_AP模式下的Easy-Creds浅析
    河南公务员写古文辞职信
    AI
    政协委员:最大愿望是让小学生步行上学
  • 原文地址:https://www.cnblogs.com/zsw-1993/p/4879199.html
Copyright © 2020-2023  润新知