基于python实现地址和经纬度转换


Posted in Python onMay 19, 2020

中文领域:

指的是提取境内地址的经纬度,的主要调用的是百度API。中间经历了一些波折,刚开始直接使用网上代码debug半天都不行,才发现要随时跟进官方改动,使用别人的API一定要看说明书啊!

首先需要从百度地图平台上注册一个AK(在这之前要注册百度的开发者身份,免费),进入其地理编码网址:

http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding

页面:

基于python实现地址和经纬度转换

由于我们是要从地址转换经纬度,因此看地理编码就可以了。

基于python实现地址和经纬度转换

官网给出了服务文档(千万要看),因为爬取地址时需要提供url,这个url必须和官方提供的一致。这里需要注意两点:

1. 网上有的代码里给出的是v2,但是现在已经更新到了v3

2. 中文需要编码,使用urllib.request库里的quote默认的就行,但是可能在别的网址中会使用非大众的汉字编码方式,这个时候可以查一下相应的编码并encode一下

import json
from urllib.request import urlopen, quote
import requests
def getlnglat(address):
  url = 'http://api.map.baidu.com/geocoding/v3/'
  output = 'json'
  ak = '你的AK' # 百度地图ak,具体申请自行百度,提醒需要在“控制台”-“设置”-“启动服务”-“正逆地理编码”,启动
  address = quote(address) # 由于本文地址变量为中文,为防止乱码,先用quote进行编码
  uri = url + '?' + 'address=' + address + '&output=' + output + '&ak=' + ak +'&callback=showLocation%20'+'//GET%E8%AF%B7%E6%B1%82'
#   req = urlopen(uri)
#   res = req.read().decode() 这种方式也可以,和下面的效果一样,都是返回json格式
  res=requests.get(uri).text
  temp = json.loads(res) # 将字符串转化为json
  lat = temp['result']['location']['lat']
  lng = temp['result']['location']['lng']
  return lat,lng  # 纬度 latitude,经度 longitude

结果:

address='北京市海淀区上地十街10号'
getlnglat(address)

>>(40.05703033345938, 116.3084202915042)

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

Python 相关文章推荐
Python中的进程分支fork和exec详解
Apr 11 Python
用Python进行TCP网络编程的教程
Apr 29 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
Nov 24 Python
详解Python中的分组函数groupby和itertools)
Jul 11 Python
Python函数any()和all()的用法及区别介绍
Sep 14 Python
pycharm运行和调试不显示结果的解决方法
Nov 30 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
Jun 22 Python
Python爬虫与反爬虫大战
Jul 30 Python
基于opencv实现简单画板功能
Aug 02 Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 Python
PyCharm2020.3.2安装超详细教程
Feb 08 Python
Python Django form 组件动态从数据库取choices数据实例
May 19 #Python
Django自关联实现多级联动查询实例
May 19 #Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
May 19 #Python
django 数据库返回queryset实现封装为字典
May 19 #Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
May 19 #Python
python 数据分析实现长宽格式的转换
May 18 #Python
如何把外网python虚拟环境迁移到内网
May 18 #Python
You might like
PHP flush()与ob_flush()的区别详解
2013/06/03 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
2014/06/30 PHP
thinkphp常见路径用法分析
2014/12/02 PHP
php metaphone()函数的定义和用法
2016/05/15 PHP
拖动Html元素集合 Drag and Drop any item
2006/12/22 Javascript
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
JQuery.Ajax之错误调试帮助信息介绍
2013/07/04 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
详解react-router4 异步加载路由两种方法
2017/09/12 Javascript
简述vue中的config配置
2018/01/23 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
vue脚手架搭建项目的兼容性配置详解
2018/07/17 Javascript
jquery获取元素到屏幕四周可视距离的方法
2018/09/05 jQuery
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
解决vue中的无限循环问题
2020/07/27 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
[01:19:23]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第二场
2018/04/06 DOTA
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
[01:06:19]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第二场 1月8日
2021/03/11 DOTA
Python psutil模块简单使用实例
2015/04/28 Python
Python正则表达式匹配中文用法示例
2017/01/17 Python
Python 专题三 字符串的基础知识
2017/03/19 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
2018/10/31 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
Python双链表原理与实现方法详解
2020/02/22 Python
CSS实现聊天气泡效果
2020/04/26 HTML / CSS
函授毕业自我鉴定
2014/02/04 职场文书
运动员口号
2014/06/09 职场文书
小学数学国培研修日志
2015/11/13 职场文书
唱歌比赛拉拉队口号
2015/12/25 职场文书