1.获取秘钥

调用百度地图API实现得申请百度账号或者登陆百度账号,然后申请自己的ak秘钥。链接如下:http://lbsyun.baidu.com/apiconsole/key?application=key

2.调用API将经纬度信息解析成json信息

3.可以自行通过json格式选择自己想要的数据,比如国家、省份、市区等。

4.批量转换信息

先要批量读取经纬度信息,我是将经纬度信息存在excel表中,然后再通过调用openpyxl中的函数读取经纬度信息。

读取完经纬度信息之后,再for循环遍历每个经纬度,然后再通过调用xlwt中的写入excel的方法存放具体的位置信息。

5.注意事项

调用百度地图API获取经纬度信息是有每天的请求额度限制。

最开始我不想自己编程搞的,但是借用他站的批量解析经纬度的速度实在太慢,于是我打算自己调用api写程序批量导入写出信息。

我是打算一次性跑两千多的数据,但是跑了几次,最多的时候跑到一千多组,就给我说额度不够了。。。很无奈。。。但是这次还是挺有收获的。。。

  1. #encoding=utf8
  2. import json
  3. import urllib.request
  4. import openpyxl
  5. import xlwt
  6. #基于百度地图API下的经纬度信息来解析地理位置信息
  7. def getlocation(lat,lng):
  8. url = 'http://api.map.baidu.com/geocoder/v2/?location=' + lat + ',' + lng + '&output=json&pois=1&ak=自己的ak秘钥'
  9. req = urllib.request.urlopen(url) # json格式的返回数据
  10. res = req.read().decode("utf-8") # 将其他编码的字符串解码成unicode
  11. return json.loads(res)
  12.  
  13. def jsonFormat(lat,lng):
  14. str = getlocation(lat,lng)
  15. dictjson={}#声明一个字典
  16. #get()获取json里面的数据
  17. jsonResult = str.get('result')
  18. address = jsonResult.get('addressComponent')
  19. #国家
  20. country = address.get('country')
  21. #国家编号(0:中国)
  22. country_code = address.get('country_code')
  23. #省
  24. province = address.get('province')
  25. #城市
  26. city = address.get('city')
  27. #城市等级
  28. city_level = address.get('city_level')
  29. #县级
  30. district = address.get('district')
  31. #把获取到的值,添加到字典里(添加)
  32. # dictjson['country']=country
  33. # dictjson['country_code'] = country_code
  34. dictjson['province'] = province
  35. dictjson['city'] = city
  36. # dictjson['city_level'] = city_level
  37. # dictjson['district']=district
  38. return dictjson
  39.  
  40. def read_xls():
  41. wb = openpyxl.load_workbook('TestLocation.xlsx')
  42. sheets = wb.sheetnames
  43. # print(sheets, type(sheets))
  44. # print(wb.sheetnames)
  45. sheet1 = wb.get_sheet_by_name('Sheet1')
  46. # for sheet in wb:
  47. # print(sheet.title)
  48. ws = wb.active # 当前活跃的表单
  49. col_range = ws['B:C']
  50. row_range = ws[2:2034]
  51. # for col in col_range: # 打印BC两列单元格中的值内容
  52. # for cell in col:
  53. # print(cell.value)
  54. # for row in row_range: # 打印 2-2034行中所有单元格中的值
  55. # for cell in row:
  56. # print(cell.value)
  57. k = 1
  58. # 创建Workbook
  59. book = xlwt.Workbook(encoding='utf-8') # 创建Workbook,相当于创建Excel=
  60. sheet2 = book.add_sheet(u'Sheet1', cell_overwrite_ok=True)
  61. for i,j in ws.iter_rows(min_row=2, max_row=2034, min_col=2,max_col=3): # 打印1-2行,1-2列中的内容
  62. # for cell in row:
  63. # print(cell.value)
  64. # print(cell.value)
  65. print(i.value,j.value) # 经纬度
  66. print(jsonFormat(str(j.value),str(i.value))) # 通过经纬度调用函数获取位置
  67. # print(jsonFormat(str(j.value),str(i.value))['province'],jsonFormat(str(j.value),str(i.value))['city'])
  68. # 将位置写入excel表中
  69. sheet2.write(k,3,k)
  70. sheet2.write(k,0,jsonFormat(str(j.value),str(i.value))['province'])
  71. sheet2.write(k,1,jsonFormat(str(j.value),str(i.value))['city'])
  72. book.save('Test_Write.xls')
  73. k = k + 1
  74. print(k)
  75. book.save('Test_Write.xls')
  76.  
  77. if __name__ == '__main__':
  78. # print(getlocation(lat, lng))
  79. # print("------------------")
  80. # print(jsonFormat(lat,lng))
  81. read_xls()

测试数据和运行结果如下:(以20组数据为例)

初始的经纬度信息:

批量解析经纬度之后的位置信息:

Python调用百度地图API实现批量经纬度转换为实际省市地点(api调用,json解析,excel读取与写入)的更多相关文章

  1. scrapy爬虫框架调用百度地图api数据存入数据库

    scrapy安装配置不在本文 提及, 1.在开始爬取之前,必须创建一个新的Scrapy项目.进入自定义的项目目录中,运行下列命令 scrapy startproject mySpider 其中, my ...

  2. 调用百度地图Api实现的查看地图功能的小插件

    1. 功能 bMap.js 可根据地理位置调用出百度地图,采用弹出框形式 2.用法 var city = '青岛市'; var address = '香港中路'; bMap.init({ city : ...

  3. 调用百度地图API的总结

    因为项目要用到百度地图,所以先摸索了一下,各种功能官方都有文档,点击可查看,文章的话我就直接写我用到的功能例子了,要用可以直接复制粘贴~ 一.主要涉及到的几个接口(先申请密钥): 1.技术一:坐标转换 ...

  4. web开发调用百度地图API + AK申请

    web开发调用百度地图API + AK申请 要使用百度地图的API我们首先需要在我们的html页面引入js----`` 如何获取百度地图ak: 1.登陆百度地图开发者平台 2.注册百度开发者账号并登陆 ...

  5. 苹果手机 微信调用百度地图Javascript API 频繁闪退问题

    最近在网页中调用百度地图API js大众版,但是在IOS8系统中,缩放的时候频繁闪退,安卓手机没有这个问题! 在网上查询了下,有网友回答说不要频繁的去new marker,而是初始化话一定量的mark ...

  6. 在XAF(ASP.NET)中以ListEditor的形式调用百度地图API

    因为项目需要,在系统中使用地图显示设备的地理位置.考虑过ArgGIS,Bing和Baidu地图.本来想用ArgGIS,看教程嫌麻烦.所以还是用Web地图吧.Bing的话还要申请个key,没心情.百度地 ...

  7. 【c#】Form调用百度地图api攻略及常见问题

    首先,在Form中调用百度地图api,我们需要使用webbrowser控件,这个在前面的文章中已经讲过了,可以参照(http://blog.csdn.net/buptgshengod/article/ ...

  8. Delphi XE6 通过JavaScript API调用百度地图

    参考昨天的内容,有朋友还是问如何调用百度地图,也是,谁让咱都在国内呢,没办法,你懂的. 首先去申请个Key,然后看一下百度JavaScript的第一个例子:http://developer.baidu ...

  9. Node.js调用百度地图Web服务API的Geocoding接口进行点位反地理信息编码

    (从我的新浪博客上搬来的,做了一些修改.) 最近迷上了node.js以及JavaScript.现在接到一个活,要解析一个出租车点位数据的地理信息.于是就想到使用Node.js调用百度地图API进行解析 ...

随机推荐

  1. 【WPF学习】第四十九章 基本动画

    在前一章已经学习过WPF动画的第一条规则——每个动画依赖于一个依赖项属性.然而,还有另一个限制.为了实现属性的动态化(换句话说,使用基于时间的方式改变属性的值),需要有支持相应数据类型的动画类.例如, ...

  2. ModbusTCP协议解析 —— 利用Wireshark对报文逐字节进行解析详细解析Modbus所含功能码

    现在网上有很多类似的文章.其实这一篇也借鉴了很多其他博主的文章. 写这篇文章的重点是在于解析功能和报文.对Modbus这个协议并不会做很多介绍. 好了,我们开始吧. 常用的功能码其实也没多少.我也就按 ...

  3. Git用法(一)

    一.通过本地管理推送到github(仓库本来有文件) 1.clone到本地git clone 我的GitHub地址(ssh地址)(ps:新增文件一定要切换到项目目录下再操作)2.提交到本地仓库(1)g ...

  4. ASP.NET Core MVC学习笔记

    最近由于疫情紧张,遂在家办公,在领导的带领下,学习了一下.Net Core MVC. 一,构建web应用 1.选择c#-所有平台-web  找到ASP.NET Core web应用程序 2.项目命名之 ...

  5. docker jenkins 安装

    1:官方教程 https://jenkins.io/zh/doc/book/installing/ 2:拉取jenkins镜像 docker pull jenkinsci/blueocean 3:输入 ...

  6. 「Flink」配置使用Flink调试WebUI

    很多时候,我们在IDE中编写Flink代码,我们希望能够查看到Web UI,从而来了解Flink程序的运行情况.按照以下步骤操作即可,亲测有效. 1.添加Maven依赖 <dependency& ...

  7. 使用QT显示OpenCV读取的图片

    目录 1. 概述 2. 实现 2.1. 代码 2.2. 解析 3. 结果 1. 概述 OpenCV自带了一部分常用的GUI功能,但是更多的图像处理功能需要其他GUI框架来辅助实现,这里通过QT来显示O ...

  8. 浅析 .NET 中 AsyncLocal 的实现原理

    目录 前言 1.线程本地存储 2.AsyncLocal 实现 2.1.主体 AsyncLocal<T> 2.2.AsyncLocal<T> 在 ExecutionContext ...

  9. 转换:使用vue-axios和vue-resource解决vue中调用网易云接口跨域的问题

    本人配置成功https://segmentfault.com/a/1190000011072725

  10. 解决kbmMW Scheduler在任务中停止任务遇到的问题

    procedure TCustomGridViewCameraDoc.InitSchedule; begin Scheduler.Schedule( procedure(const ASchedule ...