开发者

Python实现批量获取地址的经纬度

开发者 https://www.devze.com 2025-05-20 09:17 出处:网络 作者: 认真写程序的强哥
在地理分析中,通常需要自己获取经纬度数据,当地址只有几个的时候,可以直接在网页输入地址拾取经纬度即可,而当地址数量庞大,比如几十个几百个的时候,肯定是耗费时间的,这时就可以借助python与地图接口来进行经

在地理分析中,通常需要自己获取经纬度数据,当地址只有几个的时候,可以直接在网页输入地址拾取经纬度即可,而当地址数量庞大,比如几十个几百个的时候,肯定是耗费时间的,这时就可以借助python与地图接口来进行经纬度的爬取。

需求:已有目标地址,需要通过地址来获取该地址的经纬度

1.高德地图接口的准备

在编辑代码之前需要先在高德地图中注册账号(已有就可以直接登录),申请密钥,才能正常爬取数据。

https://lbs.amap.com/tools/picker

Python实现批量获取地址的经纬度

注册账号登录以后,就可以进入控制台,在界面左侧点击“应用管理–我的应用”

Python实现批量获取地址的经纬度

然后点击创建新应用,第一次创建会有教程提示,跟下面一样

Python实现批量获取地址的经纬度

应用名称可以自己取,应用类型也可以看自己的需求

Python实现批量获取地址的经纬度

然后选择“添加key”

Python实现批量获取地址的经纬度

在添加key处,名称随意,但服务平台一定要选择“web服务”

Python实现批量获取地址的经纬度

然后提交,就可以获得密钥

Python实现批量获取地址的经纬度

上图中框起来的地方就是自己的密钥,要复制到代码中

2.注意:地址信息如果比较模糊的话,需要进行处理一下,在地址前加上“某市某县”,使结果更加准确。

3.代码

from urllib import request
import requests
import json
import time
from bs4 import BeautifulSoup
import pandas as pd

# 保存路径
writer = pd.ExcelWriter(r"创建的xlsx的空表格.xlsx")
# 文件格式无要求,有一列目标地址即可
add = pd.read_excel(r"自己已有的地址数据的表格.xls")
list_addr = []
list_level = []
lon = []
lat = []

for addr in add["地址列的名称"]:

    try:
      www.devze.com  base = 'https://restapi.amap.com/v3/geocode/geo?key=自己的密钥&address=' + addr
        response = requests.get(base)
        result = json.loads(response.text)

        lon1 = result['geocodes'][0]['location'].split(",")[0]
        lat1 = result['geocodes'][0]['location'].split(",")[1android]
        formatted_address =javascript result['knIvzWhnngeocodes'][0]['formatted_address']
        level = result['geocodes'][0]['level']

        lon.append(lon1)
        lat.append(lat1)
        list_addr.append(formatted_address)
        list_level.append(level)
        print(formatted_address, lon1, lat1)
        time.sleep(0.1)

    except:

        list_level.append("无地址")
        list_addr.append("无地址")
        lon.append("无地址")
        lat.append("无地址")
    continue


# print(list1)
lists = [list_addr, list_level, lon, lat]
data2 = pd.DataFrame(lists)
data3 = data2.T
data3.columns android= ["名字", "级别", "经度", "纬度"]
data3.to_excel(writer, sheet_name="数据结果", index=None)
writer._save()
print("保存完毕")

到此这篇关于Python实现批量获取地址的经纬度的文章就介绍到这了,更多相关Python地址经纬度内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号