基础知识坐标系说明:
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)