python根据地址获取经纬度,通过经纬度获取地址并反写入excel

本文介绍如何使用Python通过QQ地图API实现地址经纬度的双向转换,提供byLatLngFindAddress和byAddressFindLatLng函数,支持Excel表格中批量查找和更新地理位置信息。
摘要由CSDN通过智能技术生成
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')

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值