栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python网络编程/地理位置编解码的实现

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python网络编程/地理位置编解码的实现

一.基于第三方应用库的实现

(1)安装现有的库geopy库

直接在cmd中使用pip命令安装geopy库

(2)申请百度地图服务ak

1. 注册并登录百度地图开放平台->选择控制台->选择【我的应用】->点击【创建应用】

 2.本实验要调用api地图可视化,因此创建时选择浏览器端;此外,不对任何域名做限制,白名单填写*

3. 申请成功,可复制使用

 (3)调用geopy库实现地理位置编码功能

正地址编码:

源代码:

运行结果:

逆地址编码:

源代码:

运行结果:

总结:

相较于书上的代码,书上直接使用的是Geocoder中的参数设置代理,若要使用申请的ak,必须要实例化,不能像书上一样直接print。

相较于老师给出的代码,可以添加“if __name__==’__name__’:” ,有简单的区别:当.py文件被直接运行时,“if __name__==’__name__’:”之下的代码块将被运行;当.py文件以模块形式被导入时,“if __name__==’__name__’:”之下的代码块不被运行。

逆地址编码时使用自己的ak,需要修改baidu.py文档。

补充:geographiclib库的作用:用于在地理,UTM,UPS,MGRS,地心和本地笛卡尔坐标之间执行转换,以进行重力(例如EGM2008),大地水准面高度和地磁场(例如WMM2020)的计算,以及 解决测地线问题。

二.基于requests库的实现

(1)原理:导入requests库->参数解析->构造URL,提交请求->解析返回结果;需从百度地图Web服务API中的正逆地址编码的服务文档中了解相关参数意义,并构造URL。

(2)导入requests库实现地理编码

正地址编码:

源代码:

运行结果:

逆地址编码:

源代码:

运行结果:

总结:

要按照百度地图服务文档的格式进行参数解析(address=’’&output=json&ak=ak&callback=showLocation),否则运行会出错。

补充:output的输出格式是json或xml(是默认的格式)。JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。Python 数据结构转换为json对象:json 模块提供了一种简单的方式来编码和解码json数据,常用的有json.jumps() , json.loads()。

三.基于http.client的实现

(1)原理:请求连接特定的主机->手动构造一个带path的GET查询->从http连接读取响应结果。

(2)使用原始HTTP实现地理编码

正地址编码:

源代码:

运行结果:

两种格式实现地址的输出,点开网站链接同样可以获得地理编码。

逆地址编码:

源代码:

运行结果:

总结:

通过字符串格式化的方式构造URL,且URL中通过?将前部分和后部分隔开。此外,进行逆地址编码时,一定要注意base是reverse_geocoding,否则会报错。

四.基于套接字的实现

正地址编码:

源代码:

运行结果:

逆地址编码:

源代码:

运行结果:

总结:

此题遇到第一个问题,message:APP服务被禁用——解决办法:检查自己写的路径中使用的版本,自己是新用户应该使用V3版本。第二个问题,missing closing triple quotes——解决办法:看是否有多余的三引号。第三个问题,逆地址编码时出现lack address or location问题——解决办法:修改所有的address为location,不能有遗漏,上面截图中标红框的都要修改,否则运行不出结果。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/874897.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号