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

  • Post author:
  • Post category:python




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()

    函数忘了是从哪位佬那抄来的,没找到原博客,侵删。

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



版权声明:本文为U202113837原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。