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坐标已经成功转换为百度坐标

posted on 2018-06-07 22:22  神秘藏宝室  阅读(10951)  评论(1编辑  收藏  举报

 >>>转载请注明出处<<<