本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

以下文章来源于菜J学Python ,作者J哥

前言

不知道大家会在什么场合使用地图可视化,对我来说地图可视化的优点除了它可以展示海量的位置数据,更重要的是它可以很酷很炫,给人一种赏心悦目的舒适感。如下是J哥做的一个简单热力图:

热力地图

制作此类可视化地图的前提是获得海量的经纬度数据,数据从何而来?当然是腾讯地图、高德地图和百度地图这些大家耳熟能详的平台。所以今天给大家分享用Python批量获取经纬度的三种方法,并分别评测它们的效率。

一、腾讯地图

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

腾讯地图开放平台

1、构造函数

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

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

tengxun(addr="深圳市")

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

'113.883080,22.553290'

2、读取数据

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

importpandas as pd

df1= pd.read_excel("gz_school.xlsx")

df1.head()

数据预览:

3、应用函数

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

importtime

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

数据预览:

二、高德地图

同样的,高德也需要提前在高德开放平台注册并创建应用,获取你的专属key。

高德地图开放平台

1、构造函数

importpandas as pdimportrequestsimporttimeimportcsvimportjsondefgaode(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)returnm

gaode(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、构造函数

importpandas as pdimportrequestsimporttimeimportcsvimportjsondefbaidu(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)returng

baidu(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获取各大地图平台经纬度数据,哪家的数据最准确?...相关推荐

  1. python数据展示平台_Python获取各大地图平台经纬度数据,哪家的数据最准确?

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于菜J学Python ,作者J哥 前言 不知道大家会在什么场合使用地图 ...

  2. python获取地图上经纬度_Python获取各大地图平台经纬度数据,哪家的数据最准确?...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于菜J学Python ,作者J哥 前言 不知道大家会在什么场合使用地图 ...

  3. 超详攻略!Databricks 数据洞察 - 企业级全托管 Spark 大数据分析平台及案例分析

    简介: 5分钟读懂 Databricks 数据洞察 ~ 更多详细信息可登录 Databricks 数据洞察 产品链接:https://www.aliyun.com/product/bigdata/sp ...

  4. python提取矩阵元素_python获取array中指定元素的示例

    python获取array中指定元素的示例 对于array,如2-D的array,如何取指定元素 设array为3*10的shape s = array([[ 0, 1, 2, 3, 4, 5, 6, ...

  5. python市场需求如何_python市场需求量大吗

    长期流行的编程语言Python可能是其粉丝的最爱,但是作为Python开发者,你可以以此谋生吗?更重要的是,作为世界上最流行的语言之一,就业市场对它的认可度如何? 事实证明,用Python准没错--最 ...

  6. 《2017中国大数据发展前景报告》-奥威大数据分析平台

    前言:从"实施国家大数据,推进数据资源开放共享"的国家政策推进,到"白菜的价格统计"的日常数据,"大数据"受到越来越多的关注,甚至被认为是& ...

  7. python 导出数据并发邮件_Python 获取zabbix数据图并发邮件

    Python 获取zabbix数据图并发邮件#! /usr/bin/env python # coding=utf-8 # Andy_f import time, os,datetime import ...

  8. python qq群文件_python 获取qq群成员列表数据

    #!/usr/bin/python # -*- coding: utf-8 -*- import re import time import xlsxwriter from selenium impo ...

  9. python 打卡程序_python获取微信企业号打卡数据并生成windows计划任务

    由于公司的系统用的是Java版本,开通了企业号打卡之后又没有预算让供应商做数据对接,所以只能自己捣鼓这个,以下是个人设置的一些内容,仅供大家参考 安装python python的安装,这里就不详细写了 ...

最新文章

  1. 华为手机升级回退_华为鸿蒙OS 2.0手机开发者Beta版支持Mate 30/P40系列OTA升级
  2. php自定义控件,小程序自定义组件的实现方法(代码)
  3. 大数据【企业级360°全方位用户画像】标签系统介绍
  4. Vue中怎样获取json文件中的数据
  5. 51单片机—串口通信
  6. 【iOS开发】理解Action、IBACtion、Action Connection
  7. opencv的android.mk,android-opencv 版本下JNI Android.mk文件的书写
  8. java ee是编程语言_什么是Java编程语言?
  9. 事件和数据回发机制的实现
  10. python中fac函数_python系列-基础
  11. Mac墨刀怎么导出HTML,mockingbot墨刀中文使用说明.pdf
  12. 网络安全中常见网络命令
  13. “瘦”AP和“胖”AP的区别
  14. Avoid passing null as the view root (needed to resolve layout parameters on the inflated layout's ro
  15. 【经验篇】记如何排查Linux服务器CPU使用率过高的问题
  16. MySQL latch
  17. 乐视2 usb计算机连接,乐视 LetvX620 开启USB调试模式
  18. 教育培训行业现状分析
  19. 头脑王者对战游戏html5源码,头脑王者分析笔记及微信小程序解包源码
  20. 水平型微指令与垂直型微指令

热门文章

  1. python 误差线_Python | 绘图中的误差线
  2. 【三】3D匹配Matching之可变形曲面匹配Deformable Surface—Based——clear_deformable_surface_matching_result()算子
  3. oracle rac lrm 00109,ORA-01078LRM-00109解决方案RACASM
  4. 电脑技巧常识, 微信技巧, 快捷键
  5. 腾讯安全玄武实验室披露“BadPower”安全问题 影响快充设备过亿
  6. Tableau图表字典
  7. JAVA:实现LeonardoNumber莱昂纳多数算法(附完整源码)
  8. 怀着对这句话以及“围城”的好奇,我读了《围城》这本书
  9. html中div图片大小,如何用DIV+CSS控制图片大小范围?
  10. css 按钮去掉浮雕效果,如何使用css完成以下浮雕效果