我们都知道,可以使用高德地图api实现经纬度与地址的转换。那么,当我们有很多个地址与经纬度,需要批量转换的时候,应该怎么办呢?

在这里,选用高德Web服务的API,其中的地址/逆地址编码,可以实现经纬度与地址的转换。

高德API地址:

1.申请key

2.坐标转换

坐标转换是一类简单的HTTP接口,能够将用户输入的非高德坐标(GPS坐标、mapbar坐标、baidu坐标)转换成高德坐标。

def transform(location):

parameters = {'coordsys':'gps','locations': location, 'key': '7ec25a9c6716bb26f0d25e9fdfa012b8'}

base = 'http://restapi.amap.com/v3/assistant/coordinate/convert'

response = requests.get(base, parameters)

answer = response.json()

return answer['locations']

2.地理/逆地理编码

我这里是将经纬度转换为地址,所以选用的是逆地理编码的接口。

def geocode(location):

parameters = {'location': location, 'key': '7ec25a9c6716bb26f0d25e9fdfa012b8'}

base = 'http://restapi.amap.com/v3/geocode/regeo'

response = requests.get(base, parameters)

answer = response.json()

return answer['regeocode']['addressComponent']['district'].encode('gbk','replace'),answer['regeocode']['formatted_address'].encode('gbk','replace')

3.从文件中读取

需要批量获取的话,一般是从文件中读取数据,读取代码如下:

def parse():

datas = []

totalListData = pd.read_csv('locs.csv')

totalListDict = totalListData.to_dict('index')

for i in range(0, len(totalListDict)):

datas.append(str(totalListDict[i]['centroidx']) + ',' + str(totalListDict[i]['centroidy']))

return datas

4.完整代码

对于批量获取,我一开始也走了很多弯路。一开始选用javascript接口,但是js接口的函数是异步返回,所以可能第10行的结果跑到第15行去了,一直没有很好的解决,后来才选用web接口。最后,将完整代码贴于此,仅供参考。

#!/usr/bin/env

#-*- coding:utf-8 -*-

'''

利用高德地图api实现经纬度与地址的批量转换

'''

import requests

import pandas as pd

import time

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

def parse():

datas = []

totalListData = pd.read_csv('locs.csv')

totalListDict = totalListData.to_dict('index')

for i in range(0, len(totalListDict)):

datas.append(str(totalListDict[i]['centroidx']) + ',' + str(totalListDict[i]['centroidy']))

return datas

def transform(location):

parameters = {'coordsys':'gps','locations': location, 'key': '7ec25a9c6716bb26f0d25e9fdfa012b8'}

base = 'http://restapi.amap.com/v3/assistant/coordinate/convert'

response = requests.get(base, parameters)

answer = response.json()

return answer['locations']

def geocode(location):

parameters = {'location': location, 'key': '7ec25a9c6716bb26f0d25e9fdfa012b8'}

base = 'http://restapi.amap.com/v3/geocode/regeo'

response = requests.get(base, parameters)

answer = response.json()

return answer['regeocode']['addressComponent']['district'].encode('gbk','replace'),answer['regeocode']['formatted_address'].encode('gbk','replace')

if __name__=='__main__':

i = 0

count = 0

df = pd.DataFrame(columns=['location','detail'])

#locations = parse(item)

locations = parse()

for location in locations:

dist, detail = geocode(transform(location))

df.loc[i] = [dist, detail]

i = i + 1

df.to_csv('locdetail.csv', index =False)

注意事项:

在测试的时候,一个key差不多可以下载2000-3000条数据,一个账号可以申请4个key。这是我自己的使用情况。所以,测试的时候,不用测试过多,直接开始正式爬数据才是正道。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python高德地图api调用实例_Python 利用高德地图api实现经纬度与地址的批量转换...相关推荐

  1. python批量爬取小网格区域坐标系_Python爬虫实例_利用百度地图API批量获取城市所有的POI点...

    上篇关于爬虫的文章,我们讲解了如何运用Python的requests及BeautifuiSoup模块来完成静态网页的爬取,总结过程,网页爬虫本质就两步: 1.设置请求参数(url,headers,co ...

  2. python分析成都房租信息,以及利用高德API查找租房

    python分析成都租房信息,以及利用高德API查找租房 使用的技术 效果 爬虫 需要爬取的网页分析 爬虫源码 数据可视化 利用高德API查找租房 github地址 使用的技术 爬虫:Beautifu ...

  3. python爬虫实例电商_如何用代码爬抓电商数据(附淘宝API调用实例)

    原标题:如何用代码爬抓电商数据(附淘宝API调用实例) 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业智能B ...

  4. 如何用代码爬抓电商数据(附淘宝API调用实例)

    2019独角兽企业重金招聘Python工程师标准>>> 如何用代码爬抓电商数据(附淘宝API调用实例) http://www.21ds.cn/2190.html 转载于:https: ...

  5. php识别名片,基于php的聚合数据名片识别api调用实例

    基于php的聚合数据名片识别api调用实例 本代码是基于聚合数据名片识别api实现名片识别功能,使用前你需要通过http://www.doczj.com/doc/f71face3bed5b9f3f90 ...

  6. 微信api调用限制,45009 reach max api daily quota limit 解决方法

    微信api调用限制,45009 reach max api daily quota limit 解决方法 参考文章: (1)微信api调用限制,45009 reach max api daily qu ...

  7. python api调用展示_Python百视api调用示例

    代码描述:基于Python的百视api调用代码实例 接口地址:http://www.juhe.cn/docs/api/id/129 1.[代码][Python]代码 #!/usr/bin/python ...

  8. 百度地图API调用实例之地址标注与位置显示

    之前弄了个谷歌地图API标注的调用实例,后来要求改成百度地图. 感谢主,通过网上资料(百度地图API,百度地图API详解之地图标注)收集及研究, 终于把百度地图标注和显示功能实现出来了,具体实现方法如 ...

  9. python九九乘法表的实例_python九九乘法表的实例

    python九九乘法表的实例 python2.7 for i in range(1,10): for j in range(1,i+1): print j,'x',i,'=',j*i,'\t', pr ...

最新文章

  1. Qt中使用多线程的一些心得(一)——继承QThread的多线程使用方法
  2. vue 可合并表格组件_merge-table
  3. 一图看懂BCH和BTC的区块费用差距到底有多大?
  4. 官方教育网代理地址MSN
  5. h5 与原生 app 交互的原理
  6. JAVA设计模式 - 抽象工厂模式
  7. 使软件可二次开发_RobotStudio二次开发:Smart组件I/O信号声明
  8. c语言如何将8个字符串串联_C ++中的字符串串联:串联字符串的4种方法
  9. 22. 切勿直接修改set或multiset中的键
  10. ESP32 LVGL8.1 ——Roller 滚动 (Roller 24)
  11. Javascript文件加载:LABjs和RequireJS
  12. 2019年6月全国程序员工资统计--两个月岗位减少11%,互联网寒冬来了
  13. cmake Could NOT find Boost (missing: xxx 的问题 已解决
  14. 数据中心网络布线为大数据时代铺路
  15. 扫盲:arping命令
  16. or计算遇到存在零“0”的情况
  17. 为什么30岁的工程师容易跳槽?
  18. C++的运算符重载 --http://blog.csdn.net/zgl_dm/article/details/1767201
  19. 实现AlphaGo(三):创造能下围棋的机器人
  20. Android网站博客书本推荐

热门文章

  1. 和数(一个数等于另外两个数之和)
  2. 三极管实现单片机PWM控制12VRGB灯带
  3. 125、新技术之微前端
  4. this.$refs获取不到dom的问题——恒生寻常问道实习记录
  5. PDF怎么压缩大小,一分钟学会
  6. getaddrinfo的用法
  7. 自学python能干些什么副业好-工作多年,总结出几个比较野的副业路子!
  8. 贝叶斯定理 php,朴素贝叶斯及贝叶斯网络简介
  9. 低代码指南100解决方案:92智能化设备巡检管理系统6大优势,助你轻松解决设备管理难题
  10. 用C++自制文字冒险选择游戏