python调用高德地图API,获取省、市、区、经纬度信息,打算用此数据作为数据分析的位置数据。
第一步:高德注册账号
https://lbs.amap.com/ 推荐使用支付宝认证
第二步:注册应用
控制台中-我的应用-创建新应用
第三步:添加key
控制台-我的应用-添加key
第四步:写代码,调用
我的代码中有解析pyecharts的城市经纬度的代码
主要包含几个函数,我是分开调用的。
1、transform 调用高德的API的函数
2、jxjson从文件中获取全国区县单位的位置信息
3、hxbjson解析文本,获取单位的位置信息
4、from_gd_to_json从高德批量获取位置信息
代码如下:
import json
import requests
import pandas as pd
from requests.exceptions import ReadTimeout, ConnectTimeout
import sys
import io
sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
def transform(geo):
parameters={'address':geo,'key':'0ff9015482d21063fa15129e71dbc5c8'}
base="https://restapi.amap.com/v3/geocode/geo"
loc=0
try:
response=requests.get(base,parameters,timeout=2)
if response.status_code==200:
answer = response.json()
#print(answer.keys())
print(answer)
loc= answer["info"]
else:
pass
except(ReadTimeout, ConnectTimeout):
pass
return answer
#从文件中获取全国区县单位的位置信息
def jxjson():
filename=r'D:/Python37/Lib/site-packages/pyecharts/datasets/city_coordinates.json'
with open(filename,'r',encoding='utf-8') as f:
jsontext=json.load(f)
list1=list(jsontext.keys())
list2=list(jsontext.values())
for i in range(len(jsontext)):
pass
print(list1[i]+"-"+str(list2[i]))
#解析文本,获取单位的位置信息
def hxbjson():
filename=r'E:/python/hxb/test.json'
with open(filename,'r',encoding='utf-8') as f:
#jsontext=json.load(f)
listf=f.readlines()
pass
jsontext={'a':'aval','b':'bval'}
list1=list(jsontext.keys())
list2=list(jsontext.values())
for i in range(len(listf)):
s1=str(listf[i])
s21=s1.replace("'","\"")
json_data=json.loads(s21)
if(len(json_data['geocodes'])>0):
info=json_data['geocodes'][0]
orgname=info['formatted_address']
sf=info['province']
city=info['city']
district=info['district']
location=info['location']
if(len(district)==0):
#print("bucunzai")
district="1"
print(orgname+"-"+sf+"-"+city+"-"+district+"-"+"-"+location)
#从高德批量获取位置信息
def from_gd_to_json():
filename='E:/python/hxb/gpcode.lst'
data=pd.read_csv(filename)
arrs=[]
for i in range(len(data)):
newval=str(data['地址关键字'][i])
print(newval)
arrs.append(newval)
jsdata=transform(newval)
filename=r'E:/python/hxb/%s.json' % ('test')
with open(filename,"a+",encoding="utf-8") as f:
f.writelines(str(jsdata)+'\n')
return arrs
def main():
hxbjson()
if __name__ == '__main__':
main()