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

  • 相关阅读:
    中国VR公司的详尽名单
    maven打包源代码sources.jar和javadoc.jar帮助文档
    中国计算机学会推荐国际学术刊物
    myhuiban会议,期刊,科研人员,计算机类会议大全
    如何写mysql的定时任务
    mysql系列命令解释
    Bootstrap 导航元素
    base64对文件进行加密
    我最在行 诗词 连续错误的
    <% %> in html
  • 原文地址:https://www.cnblogs.com/Mysterious/p/9153111.html
Copyright © 2020-2023  润新知