首页 > 编程语言 >python对接API二次开发高级实战案例解析:百度地图Web服务API封装函数(行政区划区域检索、地理编码、国内天气查询、IP定位、坐标转换)

python对接API二次开发高级实战案例解析:百度地图Web服务API封装函数(行政区划区域检索、地理编码、国内天气查询、IP定位、坐标转换)

时间:2023-01-28 11:32:33浏览次数:52  
标签:Web url ak 地图 print API 坐标 二次开发 百度


python对接API二次开发高级实战案例解析:百度地图Web服务API封装函数(行政区划区域检索、地理编码、国内天气查询、IP定位、坐标转换)_IP

文章目录

  • ​​前言​​
  • ​​一、IP定位​​
  • ​​1.请求URL​​
  • ​​2.获取IP定位封装函数​​
  • ​​3.输出结果​​
  • ​​二、国内天气查询​​
  • ​​1.请求url​​
  • ​​2.天气查询封装函数​​
  • ​​3.输出结果​​
  • ​​三、行政区划区域检索​​
  • ​​1.请求url​​
  • ​​2.区域检索封装函数​​
  • ​​3.输出结果​​
  • ​​四、地理编码​​
  • ​​1.请求url​​
  • ​​2.地理编码封装函数​​
  • ​​3.输出结果​​
  • ​​五、坐标转换​​
  • ​​1.请求url​​
  • ​​2.坐标转换封装函数​​
  • ​​3.输出结果​​
  • ​​总结​​

前言

百度地图Web服务API,为开发者提供http/https接口,即开发者通过http/https形式发起检索请求,获取返回json或xml格式的检索数据。用户可以基于此开发JavaScript、C#、C++、Java等语言的地图应用。

在地理信息数据可视化(web GIS)的开发时,地点检索、地理编码、国内天气查询、IP定位、坐标转换等服务是比较常见的应用服务。


一、IP定位

IP定位是一套以HTTP/HTTPS形式提供的轻量级定位接口,用户可以通过该服务,根据IP定位来获取大致位置。

  • 利用IP获取大致位置,调用API接口,返回请求参数中指定上网IP的大致位置信息(一般为城市级别),位置信息包括:经纬度、省、市等地址信息。
  • 如果请求参数中未指定上网IP,则默认返回当前服务请求来源的IP所对应的大致位置信息。
  • 注意:该服务所返回的经纬度信息只是一个大概的位置,​​一般为城市中心点​​。

1.请求URL

https://api.map.baidu.com/location/ip?ak=您的AK&ip=您的IP&coor=bd09ll

2.获取IP定位封装函数

import requests

'''
ak, 开发者密钥
ip,用户上网的IP地址,请求中如果不出现或为空,会针对发来请求的IP进行定位,IPV6需要提交工单申请
coor,设置返回位置信息中,经纬度的坐标类型
'''

def get_ip_city(ak, ip, coor):
url = 'https://api.map.baidu.com/location/ip?ak={}&ip={}&coor={}'.format(ak, ip, coor)
if ak == "":
print('百度key不能为空')
else:
resp = requests.get(url=url)
r = resp.json() # 输出字典格式
# print(r) # 全部数据
if r['status'] == 0:
print("城市:" + r['content']['address_detail']['city'])
print("经度:" + r['content']['point']['x'])
print("纬度:" + r['content']['point']['y'])
else:
print(r['message']) # 百度ak报错提示信息

3.输出结果

python对接API二次开发高级实战案例解析:百度地图Web服务API封装函数(行政区划区域检索、地理编码、国内天气查询、IP定位、坐标转换)_python_02

二、国内天气查询

国内天气查询服务是一套REST风格的Web服务API,以HTTP形式提供了实时和未来天气查询服务。在基础服务中,用户可通过行政区划代码查询实时天气信息及未来5天天气预报。

1.请求url

https://api.map.baidu.com/weather/v1/?district_id=222405&data_type=all&ak=你的ak  //GET请求

2.天气查询封装函数

'''
ak, 开发者密钥,同时必须具备查询天气的权限(一般为服务器端)
district_id,区县的行政区划编码,百度开发平台提供对应的id信息
data_type,请求数据类型。数据类型有:now/fc/index/alert/fc_hour/all,控制返回内容
'''
def get_weather(ak, district_id="330100", data_type="now"):
url = 'https://api.map.baidu.com/weather/v1/?district_id={}&data_type={}&ak={}'.format(district_id, data_type, ak)
if ak == "":
print('百度key不能为空')
else:
resp = requests.get(url=url)
r = resp.json() # 输出字典格式
print(r) # 全部数据
if r['status'] == 0:
print("adcode:" + r['result']['location']['id'])
print("城市:" + r['result']['location']['city'])
print("天气:" + r['result']['now']['text'])
print("温度:" + str(r['result']['now']['temp']) + "°C")
print("风力:" + r['result']['now']['wind_class'])
print("风向:" + r['result']['now']['wind_dir'])
else:
print(r['message']) # 百度ak报错提示信息

3.输出结果

python对接API二次开发高级实战案例解析:百度地图Web服务API封装函数(行政区划区域检索、地理编码、国内天气查询、IP定位、坐标转换)_python_03

三、行政区划区域检索

地点检索服务(又名Place API)是一类Web API接口服务,通过该功能,检索某一行政区划内(目前最细到城市级别)的地点信息。

在实际开发应用中,该接口是最为广泛,也是比较有实用价值的API开发。由于百度地图限额,最多获取400条记录,无法满足需求的情况下,也激发了众多开发者不断通过“​​多边形区域检索​​”功能来尽可能爬取多记录热情。

1.请求url

https://api.map.baidu.com/place/v2/search?query=ATM机&tag=银行®ion=北京&output=json&ak=您的ak //GET请求

2.区域检索封装函数

'''
ak, 开发者密钥
query,检索关键字。行政区划区域检索不支持多关键字检索。如果需要按POI分类进行检索,请将分类通过query参数进行设置,如query=美食
region,检索行政区划区域(增加区域内数据召回权重,如需严格限制召回数据在区域内,请搭配使用city_limit参数),可输入行政区划名或对应cityCode
'''

def get_place(ak, query, region):
url = 'https://api.map.baidu.com/place/v2/search?query={}®ion={}&output=json&ak={}'.format(query, region, ak)
if ak == "":
print('百度key不能为空')
else:
resp = requests.get(url=url)
r = resp.json() # 输出字典格式
# print(r) # 全部数据
if r['status'] == 0:
# 格式化输出
results = r['results'] # 列表类型
# print(len(results))
for item in results:
print("名称:" + item['name'])
print("地址:" + item['address'])
print("电话:" + item['telephone'])
print("经度:" + str(item['location']['lat']))
print("纬度:" + str(item['location']['lng']))
print("---")
else:
print(r['message']) # 百度ak报错提示信息

3.输出结果

python对接API二次开发高级实战案例解析:百度地图Web服务API封装函数(行政区划区域检索、地理编码、国内天气查询、IP定位、坐标转换)_百度_04

四、地理编码

地理编码服务提供将结构化地址数据(如:北京市海淀区上地十街十号)转换为对应坐标点(经纬度)功能;用户可通过该功能,将结构化地址(省/市/区/街道/门牌号)解析为对应的位置坐标。地址结构越完整,地址内容越准确,解析的坐标精度越高。

1.请求url

https://api.map.baidu.com/geocoding/v3/?address=北京市海淀区上地十街10号&output=json&ak=您的ak&callback=showLocation //GET请求

2.地理编码封装函数

'''
ak, 开发者密钥
address:
1、标准的结构化地址信息,如北京市海淀区上地十街十号 【推荐,地址结构越完整,解析精度越高】
2、支持“*路与*路交叉口”描述方式,如北一环路和阜阳路的交叉路口
city,地址所在的城市名。用于指定上述地址所在的城市,当多个城市都有上述地址时,该参数起到过滤作用,但不限制坐标召回城市。
'''


def get_geocoding(ak, address):
url = 'https://api.map.baidu.com/geocoding/v3/?address={}&output=json&ak={}'.format(address, ak)
if ak == "":
print('百度key不能为空')
else:
resp = requests.get(url=url)
r = resp.json() # 输出字典格式
print(r) # 全部数据
if r['status'] == 0:
# 格式化输出
print("经度:" + str(r['result']['location']['lng']))
print("纬度:" + str(r['result']['location']['lat']))
else:
print(r['message']) # 百度ak报错提示信息

3.输出结果

python对接API二次开发高级实战案例解析:百度地图Web服务API封装函数(行政区划区域检索、地理编码、国内天气查询、IP定位、坐标转换)_IP_05

五、坐标转换

坐标转换服务是用于将常用的非百度坐标转换成百度地图中使用的坐标,并可将转化后的坐标在百度地图JavaScript API、Web服务API等产品中使用。
用户可通过该服务,实现非百度坐标系(GPS标准坐标、amap地图坐标、tencent地图坐标、mapbar地图坐标等)到百度坐标系的转换。

1.请求url

https://api.map.baidu.com/geoconv/v1/?coords=114.21892734521,29.575429778924&from=1&to=5&ak=你的密钥 //GET请求

2.坐标转换封装函数

'''
ak, 开发者密钥
from_type:
源坐标类型:
1:GPS标准坐标;
2:搜狗地图坐标;
3:火星坐标(gcj02),即高德地图、腾讯地图和MapABC等地图使用的坐标;
4:3中列举的地图坐标对应的墨卡托平面坐标;
5:百度地图采用的经纬度坐标(bd09ll);
6:百度地图采用的墨卡托平面坐标(bd09mc);
7:图吧地图坐标;
8:51地图坐标;
to_type:
目标坐标类型:
3:火星坐标(gcj02),即高德地图、腾讯地图及MapABC等地图使用的坐标;
5:百度地图采用的经纬度坐标(bd09ll);
6:百度地图采用的墨卡托平面坐标(bd09mc);
'''


def get_geoconv(ak, coords, from_type='1', to_type='5'):
url = 'https://api.map.baidu.com/geoconv/v1/?coords={}&from={}&to={}&ak={}'.format(coords, from_type, to_type, ak)
if ak == "":
print('百度key不能为空')
else:
resp = requests.get(url=url)
r = resp.json() # 输出字典格式
print(r['result'][0]) # 全部数据
if r['status'] == 0:
# 格式化输出
print("经度:" + str(r['result'][0]['x']))
print("纬度:" + str(r['result'][0]['y']))
else:
print(r['message']) # 百度ak报错提示信息

3.输出结果

python对接API二次开发高级实战案例解析:百度地图Web服务API封装函数(行政区划区域检索、地理编码、国内天气查询、IP定位、坐标转换)_IP_06


总结

百度地图web 服务API中,全景静态图、路线规划服务、轨迹纠偏服务、批量算路服务、推荐上车点服务等也是在实际应用开发中经常遇见的场景,但是对于小型的公司来说,使用机会较少,故不作案例展示。

  • 百度地图Web服务API,仅从​​requests​​的爬取入手,实现爬取,类型判断和按需字段输入;
  • 在实际项目开发中,可以将获取的数据信息,输出到记事本、excle或者mysql数据库中;
  • 更多的用途是在web中使用,从获取→转换格式→数据清洗或过滤→数据展示的过程进行使用。@漏刻有时


标签:Web,url,ak,地图,print,API,坐标,二次开发,百度
From: https://blog.51cto.com/lockdatav/6024881

相关文章

  • 数据可视化大屏高德地图javascript webAPI开发的智慧治安物联网管理系统实战解析(web
    文章目录​​高德地图开发系列文章目录​​​​前言​​​​一、项目说明​​​​二、核心代码开发​​​​1.引入库​​​​2.构建DOM容器​​​​3.高德地图开发​​​​(1......
  • 是什么让学习 Web 开发在未来几年变得有价值?
    什么是网页开发?Web开发是指在互联网上创建网站或Web应用程序。它涉及一系列任务,从开发网站的整体结构和设计到编写使网站栩栩如生的代码。Web开发可能是一个复杂的过程,......
  • 渐进式 Web 应用程序介绍
    构建PWA背后的核心思想是为所有设备上的普通Web应用程序提供最佳用户体验。当我们通过浏览器访问Web应用程序时,整体体验永远赶不上原生应用程序提供的体验。因此,在可......
  • Java Web项目1:水果管理系统
    JavaWeb项目1:水果管理系统核心参考资料:JavaWeb教程笔记尚硅谷JavaWeb教程项目架构体系单一架构技术体系视图(V):用户的操作界面+数据的动态显示前端技术:HTML/CSS/J......
  • Padavan最新修复安装ONMP,自建本地entware源快速安装WEB环境,帖内付补充文件
    onmp一键安装WEB环境脚本,因为官方源文件变动的问题,导致onmp即使成功安装后很多WEB应用也用不了,缺失了常用的PHP扩展,作者自己也放弃更新了,很可惜.经过几个星期的摸索烧......
  • 嵌入 WebAssembly 运行时和实例化 WebAssembly 模块的几大要素
    ​​嵌入WebAssembly运行时和实例化WebAssembly模块的几大要素​​ 下面这段代码忽略了错误处理机制,介绍了如何在Go语言开发的宿主程序中嵌入WebAssembly.fun......
  • 如何在 Go 语言开发的宿主程序中嵌入 WebAssembly
    ​​如何在Go语言开发的宿主程序中嵌入WebAssembly​​ 在WebAssembly的官方定义中,​​forastack-basedvirtualmachine​​​这句话也值得关注,因为它引领了......
  • websocket打造在线聊天室
    1.常见的网络通信协议 tcpudphttp和websocket等;http超文本传输协议,是一个无状态,无连接,单向的应用层协议,缺点是服务器不能主动的给客户端发送消息;消息只能由客......
  • API接口
    1, https://www.sojson.com/api/coronavirus-data.html2, https://www.apispace.com/eolink/api/kdkdjy1/apiDocument (有免费申请次数,可购买)3,https://www.zhih......
  • 第25章 web层开发-用户接口开发
    目录1表单验证的初始化2自定义mobile验证器3登录逻辑完善4session机制在微服务下的问题5jsonwebtoken的认证机制6集成jwt到gin中7给url添加登录权限验证8如何解......