千家信息网

Python怎么获取各大地图平台经纬度数据

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章主要讲解了"Python怎么获取各大地图平台经纬度数据",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python怎么获取各大地图平台经纬度数据
千家信息网最后更新 2024年09月22日Python怎么获取各大地图平台经纬度数据

这篇文章主要讲解了"Python怎么获取各大地图平台经纬度数据",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python怎么获取各大地图平台经纬度数据"吧!

一、腾讯地图

首先,咱们需要在腾讯位置服务平台注册并获得一个key,作为位置数据调用的密匙。步骤如下:

1、构造函数

获得key以后,咱们就可以构造API数据请求函数tengxun(),将json格式数据中的经纬度解析出来即可,Python代码如下:

import requestsdef 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)    return gtengxun(addr="深圳市")

传入自变量"深圳市",运行Python代码,即可获得深圳市的经纬度数据:

'113.883080,22.553290'

2、读取数据

函数构造好以后,导入准备好的excel文件,文件包含广州500所学校的地址数据。可在「菜J学Python」公众后台回复学校自动获取。

import pandas as pddf1 = pd.read_excel("gz_school.xlsx")df1.head()

数据预览:

3、应用函数

将学校数据中的地址列应用于前文构造的函数,批量获取500所学校的经纬度数据并进行程序计时。

import timetime_start = time.time() #程序起始时间df1['经纬度']=df1['address'].apply(tengxun) #调用函数time_end = time.time() #程序结束时间t = time_end-time_start #运行时间print('共用时%s秒'%t)

通过腾讯地图批量解析500个地址获取经纬度数据共用时约52.40秒,平均1秒钟可以获取9个地址的经纬度。

共用时52.39904499053955秒

4、保存数据

获取到经纬度数据后,保存为excel文件。

df1.head()df1.to_excel('result.xlsx',index = False)

数据预览:

高德地图开放平台

1、构造函数

import pandas as pdimport requestsimport timeimport csvimport jsondef gaode(addr):        para = {            'key':'你自己的',  #高德地图开放平台申请的key            'address':addr #传入地址参数        }        url = 'https://restapi.amap.com/v3/geocode/geo?' #高德地图API接口        req = requests.get(url,para)        req = req.json()        print('-' * 30)        m = req['geocodes'][0]['location']        print(m)        return mgaode(addr="深圳")

2、应用函数

df2 = pd.read_excel('gz_school.xlsx') #读取地址数据time_start = time.time()df2['经纬度'] = df2['address'].apply(gaode) #调用函数time_end = time.time()t = time_end-time_startprint('共用时%s秒'%t)

通过高德地图批量解析500个地址获取经纬度数据共用时约37.74秒,平均1秒钟可以获取13个地址的经纬度,解析速度高于腾讯地图。

共用时37.740272998809814秒

三、百度地图

百度地图批量获取经纬度方法与高德地图一致。

百度地图开放平台

1、构造函数

import pandas as pdimport requestsimport timeimport csvimport jsondef baidu(addr):    url = "http://api.map.baidu.com/geocoding/v3/?" #百度地图API接口    para = {        "address": addr, #传入地址参数        "output": "json",        "ak": "你自己的" #百度地图开放平台申请ak    }    req = requests.get(url,para)    req = req.json()    #print(req)    print('-' * 30)    m = req["result"]["location"]    g = f"{m['lng']},{m['lat']}"    print(g)    return gbaidu(addr="深圳")

2、应用函数

df3 = pd.read_excel('gz_school.xlsx')time_start = time.time()df3['经纬度'] = df3['address'].apply(baidu)time_end = time.time()t = time_end-time_startprint('共用时%s秒'%t)

通过百度地图批量解析500个地址获取经纬度数据共用时约24.06秒,平均1秒钟可以获取20个地址的经纬度,解析速度高于高德地图和腾讯地图。

共用时24.0550799369812秒

感谢各位的阅读,以上就是"Python怎么获取各大地图平台经纬度数据"的内容了,经过本文的学习后,相信大家对Python怎么获取各大地图平台经纬度数据这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0