如何用Python完成百度与高德地图转换
大家都知道,Python在工作中有很多应用场景。今天,本文主要介绍如何利用Python完成百度和高德地图的转换。

地理编码与逆编码
地理编码和逆编码是指地名地址和地理坐标(经纬度)互相转换的过程。地理编码将地址信息映射为地理坐标,而逆地理编码则是将地理坐标转换为地址信息。地理编码能够对一些只有名称或地址的数据进行空间化,从而方便进行空间分析和制图,对于数据分析人员十分有用。
许多地图厂商都提供了相关的API,包括谷歌、esri、osm(国外)以及百度、高德、腾讯(国内)等公司。Python还提供了专业的geopy包,集成了这些API的调用。在使用API之前,需要注册应用获取KEY。
高德地图地理编码
首先来介绍高德地图的地理编码。具体操作可以参考官方开发文档,需要填写的请求参数有key和address,其它可以根据需要进行设置。以下是具体的代码:
def getGDCor(key,addr):
baseUrl='http://restapi.amap.com/v3/geocode/geo?'
params={'key':key,##应用key
'address':addr,
'city':u'武汉'##指定城市,限制范围
}
url=baseUrl+urllib.parse.urlencode(params)
req=urllib.request.Request(url)
content=urllib.request.urlopen(req).read()
jsonData=json.loads(content)
lon,lat='',''
if jsonData['status']=='1':
try:
corr=jsonData['geocodes'][0]['location']
lon,lat=corr.split(',')[0],corr.split(',')[1]
except:
lon,lat='0','0'
else:
print('error')
return(lon,lat)
百度地图地理编码
下面是百度地图的地理编码,需要和高德地图一样注册应用获取KEY。请求参数包括address、city、output、ak和callback,以下是代码示例:
def getBDCor(ak,addr):
#sleep(random.random())
baseUrl='http://api.map.baidu.com/geocoding/v3/?'
params={'address':addr,
'city':u'武汉市',
'output':'json',
'ak':ak,##应用key
'callback':'showLocation'
}
url=baseUrl+urllib.parse.urlencode(params)
req=urllib.request.urlopen(url).read().decode()#针对中文需要设施编码
cont1=req.replace("showLocation&&showLocation(","")
cont=cont1.replace(")","")
jsonData=json.loads(cont)
lon,lat=0,0原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7259.html
