python批量查询高德地图经纬度(支持xlxs)

成品:python批量查询高德地图经纬度(支持xlxs)_第1张图片

 

表 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') //记得保存

你可能感兴趣的:(python,servlet)