首页 > 编程语言 >网络编程:百度api实现地理编码与逆地理编码

网络编程:百度api实现地理编码与逆地理编码

时间:2024-03-29 19:58:29浏览次数:21  
标签:编码 地理位置 实现 地址 api 地理 百度

1.使用geopy库实现百度地理位置编码功能:

2.使用requests库实现百度地理位置编码功能:

3.使用geocoder库实现百度地理位置编码功能:

4.使用http.client库实现百度地理位置编码功能:

5.使用socket库实现百度地理位置编码功能:

6.使用学习的四个库实现百度地理位置逆编码功能:

1.使用geopy库实现百度地理位置编码功能:按照示例代码将baidu改为baiduv3之后,填入申请的key就完成了。

2.使用requests库实现百度地理位置编码功能:对示例代码实现时,示例中使用的时谷歌地图,因此在代码中将谷歌地图的地址改为百度地图的,并且两者get请求时的params参数不同,做出对应修改。

3.使用geocoder库实现百度地理位置编码功能:先在terminal中用pip安装第三方库。

按照示例代码运行,发现结果为app被禁用,搜索后得知,百度v2服务已经暂停,要使用v3的服务。之后找到geocoder库中.baudu方法的实现函数get的实现函数中返回了一个option的可迭代对象,在其中找到实现方法BaiduQuary,将其中url修改为v3的地址。

出现的错误:第一次爆出key_value错误,一开始以为是他内置代码对v2和v3的支持格式不一样,结果是url写成了逆向解析的地址。

发现baidu.py下有main入口的测试函数,改好url之后错误变成了查找无结果,排除之后发现被这个测试函数误导了,这个库的查找不能直接查到某某路,直接运行‘甘肃政法大学’就可以找到。

4.使用http.client库实现百度地理位置编码功能:先按示例修改为百度的api接口查询。第一次运行时出现报错,查询得知是json.load的接收类型不对把代码的返回从xml变成json之后解决

5.使用socket库实现百度地理位置编码功能:按示例代码对应修改为百度的api接口,主要是在http请求头中和socket.connect的地址。

第一次运行报错,ascii编码不行,因为查询的地址是汉字,因此改用utf-8编码之后成功。

6.使用学习的四个库实现百度地理位置逆编码功能:

1.直接将原来调用的geocode变为reverse即可实现逆地理编码

2.利用request查询时,先是要访问逆地理编码的对应地址,由于v3的地理编码时和逆地理编码时的url中的参数不一样,因此要调整代码中访问的params,从address,ak,output变成ak,output,location的形式否则会出现报错,下面三个库的实现也是同理。

3.在gocoder.baidu方法的参数中加入method = reverse,查看官方文档,并将输入的经纬度用list的形式传入,即可实现。

4.正如前面所说利用httpclient实现时,需要改地址且改变参数

5.socket库实现也是同理,但此处的修改地方变成了http报文中

总结:

在本次实验中,我们使用了5个Python库来实现百度地理编码和逆地理编码功能,包括geopy、requests、geocoder、http.client和socket。每个库的实现方式和注意事项如下:

1. geopy库

- 只需将代码中的'baidu'改为'baiduv3',并填入申请的密钥即可实现地理编码功能

- 将原来的geocode()方法改为reverse_geocode()即可实现逆地理编码

2. requests库 

- 将谷歌地图API地址改为百度地图API地址

- 注意地理编码和逆地理编码的参数(params)不同,需要相应调整

3. geocoder库

- 安装geocoder库

- 修改geocoder.baidu中的url为v3版本地址

- 地理编码直接传入地址字符串

- 逆地理编码需要设置method='reverse',并将经纬度以列表形式传入

4. http.client库

- 将请求地址改为百度地图API

- 注意将返回类型改为json格式

5. socket库

- 修改请求地址为百度地图API

- 注意编码问题,使用utf-8编码

- 修改HTTP请求头和请求参数

总的来说,主要注意事项包括:使用正确的API接口地址、参数设置、编码问题等。对于逆地理编码,需要将地理编码方法相应改为逆地理编码方法,并调整输入参数形式(如geocoder库中的列表形式)。

标签:编码,地理位置,实现,地址,api,地理,百度
From: https://blog.csdn.net/hsjdbbsbsn/article/details/137085772

相关文章

  • URL编码:原理、应用与安全性
    在网络世界中,URL(统一资源定位符)是我们访问网页、发送请求的重要方式。然而,URL中包含的特殊字符、不安全字符以及保留字符可能会导致传输错误或安全风险。为了解决这些问题,URL编码应运而生。本文将从概念介绍、编码规则、编码与解码、常见应用场景、历史演变、安全性考虑、局......
  • 【前端】使用Web Audio API 技术播放音乐
    简言记录下使用webaudio播放音乐的方法。WebAudioAPIWebAudioAPI提供了在Web上控制音频的一个非常有效通用的系统,允许开发者来自选音频源,对音频添加特效,使音频可视化,添加空间效果(如平移),等等。你可以先看下api接口介绍文章WebAudioAPI接口介绍。html的<au......
  • 使用nssm打包.net core api服务
     去官网下载nssm,然后cmd进入nssm的目录。下载地址:http://www.nssm.cc/download  命令行打开services.msc,就会发现成功了或者    这时候你的api就变成了windowsservice啦!......
  • 自己写个网盘系列:③ 开源这个网盘编码,手把手教你windows linux 直接部署,docker本地打
    ❤系列①②已经完成了这个项目的页面和项目的全部编码,前后端分离,这个文章将向你展示运维小伙伴如何部署到windows服务器,linux服务器,docker部署,一学就会,快来看看吧!❤说明:这个系列准备用Simple快速框架搞个自己能用的网盘,来个实战,教大家如何搞一个项目,其中你能学到如何进行项目......
  • DER编码
    一、任务详情参考附件中图书p120中7.1的实验指导,完成DER编码Name实例中,countryName改为“CN”,organizationName-"你的学号"commoaName="你的姓名拼音"用echo-n-e"编码">你的学号.der中,用OpenSSLasn1parse分析编码的正确性提交编码过程文档(推荐markdown格式)二、......
  • 启动应用程序出现FirewallAPI.dll找不到问题解决
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个FirewallAPI.dll文件(挑选合适的版本文件)把......
  • 【前端面试题-20】js如何对输出内容进行HTML编码
    在JavaScript中,对输出内容进行HTML编码通常是为了防止XSS攻击(跨站脚本攻击),即将特殊字符转换成HTML实体的形式,避免它们被浏览器解析为HTML或JavaScript代码。以下是一些常见的HTML编码方法:使用内建函数encodeURIComponent()和encodeURI()虽然这两个函数主要用于编码URI......
  • AI绘画,Midjourney API 接口对接和使用
    项目背景众所周知,Midjourney并没有提供任何的Api服务,但是基于Midjourney目前的行业龙头位置,很多企业以及个人会有相关的需求。TTApi平台基于Midjourney现有功能整理出一套完整的可集成性高的服务,如果你有类似的需求,那么恭喜你找到了正确的使用方式。新用户注册免费送100......
  • Swagger 文档工具 设计、构建、文档化和使用您的 RESTful API
    SwaggerSwagger是一个功能强大的开源框架,支持大量工具生态系统,帮助您设计、构建、文档化和使用您的RESTfulAPI。使用SpringBoot您可以从swagger-springboot获取完整的项目演示。springboot-blog中文版文件结构可能如下所示:.|____main||____java|||____com|......
  • DotNetty客户端获取未编码的16进制数据
    publicoverridevoidChannelRead(IChannelHandlerContextcontext,objectmessage){varbuffer=messageasIByteBuffer;Console.WriteLine($"收到消息{buffer}");if(buffer!=null){//这里可以处理接收到的数据byte[]b......