Python调用百度地图API实现批量经纬度转换为实际省市地点(api调用,json解析,excel读取与写入)
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写程序批量导入写出信息。
我是打算一次性跑两千多的数据,但是跑了几次,最多的时候跑到一千多组,就给我说额度不够了。。。很无奈。。。但是这次还是挺有收获的。。。
#encoding=utf8
import json
import urllib.request
import openpyxl
import xlwt
#基于百度地图API下的经纬度信息来解析地理位置信息
def getlocation(lat,lng):
url = 'http://api.map.baidu.com/geocoder/v2/?location=' + lat + ',' + lng + '&output=json&pois=1&ak=自己的ak秘钥'
req = urllib.request.urlopen(url) # json格式的返回数据
res = req.read().decode("utf-8") # 将其他编码的字符串解码成unicode
return json.loads(res) def jsonFormat(lat,lng):
str = getlocation(lat,lng)
dictjson={}#声明一个字典
#get()获取json里面的数据
jsonResult = str.get('result')
address = jsonResult.get('addressComponent')
#国家
country = address.get('country')
#国家编号(0:中国)
country_code = address.get('country_code')
#省
province = address.get('province')
#城市
city = address.get('city')
#城市等级
city_level = address.get('city_level')
#县级
district = address.get('district')
#把获取到的值,添加到字典里(添加)
# dictjson['country']=country
# dictjson['country_code'] = country_code
dictjson['province'] = province
dictjson['city'] = city
# dictjson['city_level'] = city_level
# dictjson['district']=district
return dictjson def read_xls():
wb = openpyxl.load_workbook('TestLocation.xlsx')
sheets = wb.sheetnames
# print(sheets, type(sheets))
# print(wb.sheetnames)
sheet1 = wb.get_sheet_by_name('Sheet1')
# for sheet in wb:
# print(sheet.title)
ws = wb.active # 当前活跃的表单
col_range = ws['B:C']
row_range = ws[2:2034]
# for col in col_range: # 打印BC两列单元格中的值内容
# for cell in col:
# print(cell.value)
# for row in row_range: # 打印 2-2034行中所有单元格中的值
# for cell in row:
# print(cell.value)
k = 1
# 创建Workbook
book = xlwt.Workbook(encoding='utf-8') # 创建Workbook,相当于创建Excel=
sheet2 = book.add_sheet(u'Sheet1', cell_overwrite_ok=True)
for i,j in ws.iter_rows(min_row=2, max_row=2034, min_col=2,max_col=3): # 打印1-2行,1-2列中的内容
# for cell in row:
# print(cell.value)
# print(cell.value)
print(i.value,j.value) # 经纬度
print(jsonFormat(str(j.value),str(i.value))) # 通过经纬度调用函数获取位置
# print(jsonFormat(str(j.value),str(i.value))['province'],jsonFormat(str(j.value),str(i.value))['city'])
# 将位置写入excel表中
sheet2.write(k,3,k)
sheet2.write(k,0,jsonFormat(str(j.value),str(i.value))['province'])
sheet2.write(k,1,jsonFormat(str(j.value),str(i.value))['city'])
book.save('Test_Write.xls')
k = k + 1
print(k)
book.save('Test_Write.xls') if __name__ == '__main__':
# print(getlocation(lat, lng))
# print("------------------")
# print(jsonFormat(lat,lng))
read_xls()
测试数据和运行结果如下:(以20组数据为例)
初始的经纬度信息:

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

Python调用百度地图API实现批量经纬度转换为实际省市地点(api调用,json解析,excel读取与写入)的更多相关文章
- scrapy爬虫框架调用百度地图api数据存入数据库
scrapy安装配置不在本文 提及, 1.在开始爬取之前,必须创建一个新的Scrapy项目.进入自定义的项目目录中,运行下列命令 scrapy startproject mySpider 其中, my ...
- 调用百度地图Api实现的查看地图功能的小插件
1. 功能 bMap.js 可根据地理位置调用出百度地图,采用弹出框形式 2.用法 var city = '青岛市'; var address = '香港中路'; bMap.init({ city : ...
- 调用百度地图API的总结
因为项目要用到百度地图,所以先摸索了一下,各种功能官方都有文档,点击可查看,文章的话我就直接写我用到的功能例子了,要用可以直接复制粘贴~ 一.主要涉及到的几个接口(先申请密钥): 1.技术一:坐标转换 ...
- web开发调用百度地图API + AK申请
web开发调用百度地图API + AK申请 要使用百度地图的API我们首先需要在我们的html页面引入js----`` 如何获取百度地图ak: 1.登陆百度地图开发者平台 2.注册百度开发者账号并登陆 ...
- 苹果手机 微信调用百度地图Javascript API 频繁闪退问题
最近在网页中调用百度地图API js大众版,但是在IOS8系统中,缩放的时候频繁闪退,安卓手机没有这个问题! 在网上查询了下,有网友回答说不要频繁的去new marker,而是初始化话一定量的mark ...
- 在XAF(ASP.NET)中以ListEditor的形式调用百度地图API
因为项目需要,在系统中使用地图显示设备的地理位置.考虑过ArgGIS,Bing和Baidu地图.本来想用ArgGIS,看教程嫌麻烦.所以还是用Web地图吧.Bing的话还要申请个key,没心情.百度地 ...
- 【c#】Form调用百度地图api攻略及常见问题
首先,在Form中调用百度地图api,我们需要使用webbrowser控件,这个在前面的文章中已经讲过了,可以参照(http://blog.csdn.net/buptgshengod/article/ ...
- Delphi XE6 通过JavaScript API调用百度地图
参考昨天的内容,有朋友还是问如何调用百度地图,也是,谁让咱都在国内呢,没办法,你懂的. 首先去申请个Key,然后看一下百度JavaScript的第一个例子:http://developer.baidu ...
- Node.js调用百度地图Web服务API的Geocoding接口进行点位反地理信息编码
(从我的新浪博客上搬来的,做了一些修改.) 最近迷上了node.js以及JavaScript.现在接到一个活,要解析一个出租车点位数据的地理信息.于是就想到使用Node.js调用百度地图API进行解析 ...
随机推荐
- Arm开发板+Qt学习之路-multiple definition of
问题描述:在一个头文件a.h中定义一些变量x,在其他.c文件中(b.c,c.c)要用到.用一般的全局变量的方法,编译时总是提示error:multiple definition of x 问题分析:o ...
- codewars--js--the highest and lowest number + JS 字符串和数组相关知识
本文参考: http://blog.csdn.net/tyrionj/article/details/78653426 http://www.runoob.com/jsref/jsref-obj-st ...
- [VB.NET Tips]创建匿名类型列表
在调用一些Web API时经常要发送或接收一些数据,在构造Json时可能要创建一些类. 很多都是在调用相关方法才使用到这些类,那使用匿名类型是个不错的选择.如果要传些表结构数据时,就要创建List. ...
- P1613 跑路【倍增】【最短路】
题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资,小A买了一个十分牛B的空间跑路器,每秒钟 ...
- 出现ImportError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly ....的解决方法
在terminal上运行gluoncv时遇到了一个报错问题. ImportError: Python is not installed as a framework. The Mac OS X bac ...
- P2094运输
-------------------- 链接:Miku ------------------- 这是一道水贪心,很容易想到做法就是把最贵的两个放在一块,让后当成一个重新放回队列 ---------- ...
- FPGA分频与倍频的简单总结(涉及自己设计,调用时钟IP核,调用MMCM原语模块)
原理介绍 1.分频 FPGA设计中时钟分频是重要的基础知识,对于分频通常是利用计数器来实现想要的时钟频率,由此可知分频后的频率周期更大.一般而言实现偶数系数的分频在程序设计上较为容易,而奇数分频则相对 ...
- 两种从 TensorFlow 的 checkpoint生成 frozenpb 的方法
1. 从 ckpt-.data,ckpt-.index 和 .meta 生成 frozenpb import os import tensorflow as tf from tensorflow.py ...
- WPF 控件功能重写(ComboBox回车搜索)
前言:在我们日常使用软件的时候,Combobox会让用户很方便的选择出需要的东西,但是ComboBox中的下拉行数过多时就不那么好用了. 如果在项目中有很多这样的ComboBox控件的话,我们可以考虑 ...
- 分库分表技术演进&最佳实践
每个优秀的程序员和架构师都应该掌握分库分表,这是我的观点. 移动互联网时代,海量的用户每天产生海量的数量,比如: 用户表 订单表 交易流水表 以支付宝用户为例,8亿:微信用户更是10亿.订单表更夸张, ...