import time
import requests
import pandas as pd
from pandas import DataFrame
import xlrd
developer_key = "" # 这里为你申请的开发者key
# 通过地址获取经纬度
def address_to_coordinate(address):
base = "http://apis.map.qq.com/ws/geocoder/v1/?address={}&key={}".format(address, developer_key) # 地址解析,地址转坐标
response = requests.get(base)
answer = response.json()
if (answer['status'] == 0):
data = {
'lng': answer['result']['location']["lng"], # 经度
'lat': answer['result']['location']["lat"] # 纬度
}
else:
data = {
'lng': 'error',
'lat': 'error'
}
return data
# 通过经纬度获取地址
def coordinate_to_address(lat_lng): # 注意入参格式:纬度,经度
base = "https://apis.map.qq.com/ws/geocoder/v1/?location={}&get_poi={}&key={}".format(lat_lng, 1,
developer_key) # 坐标转地址
response = requests.get(base)
answer = response.json()
if (answer['status'] == 0):
data = answer['result']['address']
else:
data = 'error'
return data
# 入参excel文件名,表名 根据维度,精度查找位置
def byLatLngFindAddress(filename, sheetname):
data = pd.read_excel(filename, sheetname)
# 通过地址获取经纬度,并修改
for index in range(0, len(data["经度"])):
# 开发者并发有限制,根据情况来设置
time.sleep(0.2)
lat_lng = str(data["纬度"][index])+","+str(data["经度"][index])
#请求接口并返回地址
address = coordinate_to_address(lat_lng)
data.loc[index, '地址'] = address
# 保存修改
DataFrame(data).to_excel(filename, sheet_name=sheetname, index=False, header=True)
# 入参excel文件名,表名 根据位置查找维度,精度
def byAddressFindLatLng(filename, sheetname):
data = pd.read_excel(filename, sheetname)
# 通过地址获取经纬度,并修改
for index in range(0, len(data["地址"])):
# 开发者并发有限制,根据情况来设置
time.sleep(0.2)
#请求接口并返回地址
dataDict = address_to_coordinate(data["地址"][index])
data.loc[index, '经度'] = dataDict["lat"]
data.loc[index, '维度'] = dataDict["lng"]
# 保存修改
DataFrame(data).to_excel(filename, sheet_name=sheetname, index=False, header=True)
if __name__ == '__main__':
#byLatLngFindAddress('D:/经纬度.xlsx', 'Sheet1')
#byAddressFindLatLng('D:/经纬度.xlsx', 'Sheet1')
python根据地址获取经纬度,通过经纬度获取地址并反写入excel
最新推荐文章于 2024-08-20 15:32:18 发布
本文介绍如何使用Python通过QQ地图API实现地址经纬度的双向转换,提供byLatLngFindAddress和byAddressFindLatLng函数,支持Excel表格中批量查找和更新地理位置信息。
摘要由CSDN通过智能技术生成