表 1 地理编码 API 服务地址
URL |
https://restapi.amap.com/v3/geocode/geo?parameters |
请求方式 |
GET |
表 2 请求参数
参数名 |
含义 |
规则说明 |
是否必须 |
缺省值 |
key |
高德Key |
用户在高德地图官网申请Web服务API类型Key |
必填 |
无 |
address |
结构化地址信息 |
规则遵循:国家、省份、城市、区县、城镇、乡村、街道、门牌号码、屋邨、大厦,如:北京市朝阳区阜通东大街6号。如果需要解析多个地址的话,请用"|"进行间隔,并且将 batch 参数设置为 true,最多支持 10 个地址进进行"|"分割形式的请求。 |
必填 |
无 |
city |
指定查询的城市 |
可选输入内容包括:指定城市的中文(如北京)、指定城市的中文全拼(beijing)、citycode(010)、adcode(110000),不支持县级市。当指定城市查询内容为空时,会进行全国范围内的地址转换检索。 adcode信息可参考城市编码表获取 |
可选 |
无,会进行全国范围内搜索 |
batch |
批量查询控制 |
batch 参数设置为 true 时进行批量查询操作,最多支持 10 个地址进行批量查询。 batch 参数设置为 false 时进行单点查询,此时即使传入多个地址也只返回第一个地址的解析查询结果。 |
可选 |
false |
sig |
数字签名 |
请参考数字签名获取和使用方法 |
可选 |
无 |
output |
返回数据格式类型 |
可选输入内容包括:JSON,XML。设置 JSON 返回结果数据将会以JSON结构构成;如果设置 XML 返回结果数据将以 XML 结构构成。 |
可选 |
JSON |
callback |
回调函数 |
callback 值是用户定义的函数名称,此参数只在 output 参数设置为 JSON 时有效。 |
可选 |
无 |
【高德开发者文档】https://lbs.amap.com/api/webservice/guide/api/georegeo
源码
import requests
import json
import openpyxl as op //处理excel表的库,只能处理xlxs
def traverse(obj): //反序列化
if isinstance(obj,dict):
value = {k:traverse(v)
for k,v in obj.items()}
elif isinstance(obj,list):
value = [traverse(elem)
for elem in obj]
else:
value = obj
return value
def queryGd(min_row,max_row,tableName):
wb = op.load_workbook('地址.xlsx',read_only=False,data_only=False)
table = wb[tableName] //工作簿名
# 创建列名的字典
# Create a dictionary of column names
ColNames = {}
Current = 0
for COL in table.iter_cols(1, table.max_column):
ColNames[COL[0].value] = Current
Current += 1
for row_cells in table.iter_rows(min_row=2, max_row=2):
for i in range(min_row,max_row):
for row_cells in table.iter_rows(min_row=i,max_row=i): #根据列名取值
address = str(row_cells[ColNames['详细地址(门牌号)']].value)
# print(address)
url="https://restapi.amap.com/v3/geocode/geo?key=自己申请&str(address)
print(url)
response = requests.request('GET',url)
response.encoding = 'utf-8'
response_text = response.text
c = json.loads(response_text, object_hook=lambda x : traverse(x))
print(c)
for j in c['geocodes']:
location = str(j['location']).split(',')
row_cells[ColNames['高德经度']].value = location[0]
row_cells[ColNames['高德纬度']].value = location[1]
wb.save(filename='。。。。。.xlsx') //记得保存