【Python+腾讯地图API】批量获取国内某地经纬度信息(详细步骤)

1、背景

我需要批量获取某些地点的经纬度信息,用于绘制相应的地理分布图。
一个一个在搜索引擎上查找很麻烦的,于是就希望能够利用Python程序和腾讯地图API批量操作。
方便快捷,而且一劳永逸。

2、步骤

(1)准备

把需要查找的地点名称放在一个Excel表格第一列里。
在这里插入图片描述

(2)代码

复制粘贴上去就是你的啦,不过别忘了改一下读取的表格的路径表格行数↓↓↓

import requests  
import xlrd  
import xlwt  
def tengxun(addr):  
    url = "https://apis.map.qq.com/jsapi?"  # 腾讯地图API接口  
    para = {  
        "qt": "geoc",  
        "addr": addr,  # 传入地址参数  
        "output": "json",  
        "key": "D7EBZ-NHYKX-UAH4A-74TW4-6M2JE-UHFLY",  # 即腾讯地图API的key  
        "pf": "jsapi",  
        "ref": "jsapi"  
    }  
    req = requests.get(url, para)  # 请求数据  
    req = req.json()  # 转为json格式  
    # print(req)  
    m = req["detail"]  
    g = f"{m['pointx']},{m['pointy']}"  # 解析到经纬度数据  
    print(g.split(","))  
    return g  
newbook=xlwt.Workbook(encoding="utf-8",style_compression=0)  
newsheet=newbook.add_sheet("Sheet1",cell_overwrite_ok=True)  
################################################
readbook=xlrd.open_workbook("国内.xlsx")    ####修改路径 
################################################
readsheet=readbook.sheet_by_name("Sheet1")  
################################################
for i in range(141):        ####################修改表格行数
################################################
    name=readsheet.cell(i,0).value  
    try:  
        l=tengxun(name).split(",")  
        newsheet.write(i,0,eval(l[0]))  
        newsheet.write(i,1,eval(l[1]))  
    except:  
        continue  
newbook.save("对应经纬度信息.xls")

(3)结果

打开”对应经纬度信息.xls“结果如下图所示:
在这里插入图片描述

3、分析

Q:可以看到,上面表格里有很多空行。为什么没有获取到呢?
A:笔者经过测试,发现这种情况应该是地名不够详细导致,例如无法获取”中国药科大学“的经纬度信息,但是”江宁区中国药科大学”可以。

4、修改

(1)修改表格

我们对没有获取到经纬度信息的地名进行信息补充。
补充的信息放在对应行的第二列就好了,就像这样↓↓↓
在这里插入图片描述

(2)修改代码

把for循环里的

name=readsheet.cell(i,0).value  

改为:

name=readsheet.cell(i,1).value+readsheet.cell(i,0).value  

(3)结果

再次运行结果:
在这里插入图片描述
比之前好多了,但是还是有少数几个无法获取,可能是提供的信息还不够,不过还是大大减少了工作量。

4、总结

  • request库还不太熟悉,但是使用步骤好像类似。
  • tengxun()函数忘了是从哪位佬那抄来的,没找到原博客,侵删。

如果这篇博客对你有所帮助,点个赞吧,同时如果有什么问题,欢迎评论留言。

  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
利用Python和高德地图API实现经纬度地址批量转换是可行的。首先,我们需要准备高德地图API密钥,该密钥可以通过高德地图开发者平台申请获得。 接下来,我们可以使用Python中的requests库发送HTTP请求,通过调用高德地图的逆地理编码接口,将经纬度转换为地址。我们需要将API密钥和待转换的经纬度构建为合适的URL,并发送GET请求。高德地图API将返回JSON格式的数据,其中包含有关地址信息的详细内容。 在代码中,我们可以使用for循环来遍历经纬度的列表,对每个经纬度调用逆地理编码接口并解析返回的JSON数据。我们可以从返回的数据中提取出地址信息,并将其保存到一个新的CSV文件中。 以下是一个简单的示例代码: ```python import requests import csv api_key = "your_api_key" def get_address(lat, lng): url = f"https://restapi.amap.com/v3/geocode/regeo?key={api_key}&location={lng},{lat}&radius=1000&extensions=all&batch=true&roadlevel=1" response = requests.get(url) data = response.json() address = data['regeocodes'][0]['formatted_address'] return address def main(): with open('input.csv', 'r') as input_file, open('output.csv', 'w', newline='') as output_file: reader = csv.reader(input_file) writer = csv.writer(output_file) writer.writerow(['经度', '纬度', '地址']) for row in reader: lat, lng = row[0], row[1] address = get_address(lat, lng) writer.writerow([lat, lng, address]) print("地址转换完成!") if __name__ == '__main__': main() ``` 在这个示例中,我们假设输入文件是一个CSV文件,其中包含经纬度数据。我们将转换后的地址保存到新的CSV文件中,其中包含经度、纬度和地址信息。 通过运行这个Python脚本,我们可以批量转换经纬度地址,并将结果保存到输出文件中。这样,我们就可以在后续的工作中方便地使用地址信息了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还重名就过分了啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值