GPS坐标(WGS84)转换百度坐标(BD09) python测试

Posted 神秘藏宝室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GPS坐标(WGS84)转换百度坐标(BD09) python测试相关的知识,希望对你有一定的参考价值。

基础知识坐标系说明:

WGS84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。
GCJ02:是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。
BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标

参考文档:

http://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition

功能接口主用调用WEB API

http://api.map.baidu.com/geoconv/v1/?coords=114.21892734521,29.575429778924&from=1&to=5&ak=你的密钥 //GET请求

python测试代码

# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   File Name:     geoconvTools
   Description :
   Author :       神秘藏宝室
   date:          2018-06-07
-------------------------------------------------
   Change Activity:
                   2018-06-07:
-------------------------------------------------
"""
import urllib
import hashlib
import requests
import json

class Geoconv(object):
    my_ak = \'84eO3xjZlFLelrOGN-------------------------\'
    my_sk = \'fFyAglwnmgxnYI6c---------------------------\'

    def __init__(self):
        pass

    # GPS坐标转换为百度坐标
    #解释:http://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition
    #API:http://api.map.baidu.com/geoconv/v1/?coords=114.21892734521,29.575429778924&from=1&to=5&ak=你的密钥 //GET
    def wgs84tobd09(self,lon,lat):
        queryStr = \'/geoconv/v1/?coords={},{}&from=1&to=5&ak={}\'.format(lon,lat,self.my_ak)
        # print queryStr
        # 对queryStr进行转码,safe内的保留字符不转换
        encodedStr = urllib.quote(queryStr, safe="/:=&?#+!$,;\'@()*[]")

        # 在最后直接追加上yoursk
        rawStr = encodedStr + self.my_sk

        # md5计算出的sn值
        my_sn = hashlib.md5(urllib.quote_plus(rawStr)).hexdigest()
        # print my_sn
        url = \'http://api.map.baidu.com\' + queryStr + "&sn=" + my_sn
        # print url

        res = requests.get(url)
        # print \'*\' * 10
        # get收到的内容
        json_str = res.content
        # print json_str
        dictData = json.loads(json_str)
        # print dictData["result"][0]["x"]
        # print dictData["result"][0]["y"]
        return dictData["result"][0]["x"],dictData["result"][0]["y"]


if __name__ == \'__main__\':
    LON = \'112.40832\'
    LAT = \'34.636055\'
    myconv = Geoconv()
    print myconv.wgs84tobd09(LON,LAT)

最终输出结果,成功转换成百度坐标

(112.42110872813592, 34.641182049243476)

在百度地图上显示和我自己的GPS所在位置完全一致,说明GPS坐标已经成功转换为百度坐标

以上是关于GPS坐标(WGS84)转换百度坐标(BD09) python测试的主要内容,如果未能解决你的问题,请参考以下文章

WGS84(GPS)火星坐标系(GCJ02)百度地图(BD09)坐标系转换案例教程(附转换工具下载)

WGS84(GPS)火星坐标系(GCJ02)百度地图(BD09)坐标系转换案例教程(附转换工具下载)

WGS84(GPS)火星坐标系(GCJ02)百度地图(BD09)坐标系转换案例教程(附转换工具下载)

坐标转换——GCJ-02

坐标体系WGS84/GCJ02/BD09

经纬度之间互相转换(高德转百度,高德转wgs84,百度转高德,百度转wgs84,wgs84转百度,wgs84转高德)