您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

把百度地图Geocoding API封装成UDF

时间:2020-07-05 11:36:33  来源:  作者:

什么是百度Geocoding API?

Geocoding API是一个供程序员调用的、http形式的地图服务接口。主要服务那些非网页程序的调用。例如C# 、C++、JAVA等开发语言都能发送http请求且能接收返回数据。

用户只需在请求的url字串中拼接好关键字或者经纬度信息,即可获取到相应的百度经纬度或者结构化地理信息。

把百度地图Geocoding API封装成UDF

 

Geocoding API有哪些功能?

Geocoding API包括地址解析和逆地址解析功能。

  • 地址解析是指,由详细到街道的结构化地址得到百度经纬度信息,且支持名胜古迹、标志性建筑名称直接解析返回百度经纬度。例如:“北京市海淀区中关村南大街27号”地址解析的结果是“lng:116.31985,lat:39.959836”,“百度大厦”地址解析的结果是“lng:116.30815,lat:40.056885”逆地址解析是指,由百度经纬度信息得到结构化地址信息。例如:“lat:31.325152,lng:120.558957”逆地址解析的结果是“江苏省苏州市虎丘区塔园路318号”。

注意:

1.因为Geocoding和反Geocoding使用的门址数据以及算法都不是一样的,所以会出现不能一一对应的现象。

2.解析过程中可能会出现一对坐标值对应多个地址门牌信息,本接口将返回距离坐标点最近的一个地址门牌信息。

问题

最近一个项目,需要根据数据库的地址列转为经纬度信息,对比了geopy和百度的Geocoding API后,基于简单快捷的考虑,决定直接使用百度的API。

代码实现

地址解析为经纬度

addr="杭州临安汽车东站"
key="f247cdb592eb43ebac6ccd27f796e2d2"
url= f'http://api.map.baidu.com/geocoder?address={addr}&output=json&key={key}'
requests.get(url).json()

返回,

{'status': 'OK',
 'result': {'location': {'lng': 119.738708, 'lat': 30.236846},
  'precise': 1,
  'confidence': 70,
  'level': '长途汽车站'}}

经纬度反向解析为地址,

lng_lat=[119.738708,30.236846]
key="f247cdb592eb43ebac6ccd27f796e2d2"
import requests
url=f"http://api.map.baidu.com/geocoder?callback=renderReverse&location={lng_lat[1]},{lng_lat[0]}&output=json&pois=1&key={key}"

requests.get(url).json()

返回,

{'status': 'OK',
 'result': {'location': {'lng': 119.738708, 'lat': 30.236846},
  'formatted_address': '浙江省杭州市临安市钱王街261号',
  'business': '锦城',
  'addressComponent': {'city': '杭州市',
   'direction': 'south',
   'distance': '66',
   'district': '临安市',
   'province': '浙江省',
   'street': '钱王街',
   'street_number': '261号'},
  'cityCode': 179}}

封装成Python函数

geocoding("hello")
#返回116.413384,39.910925

测试下

geocoding("杭州临安汽车东站")
#返回 119.738708,30.236846

碰到地址无法解析,会返回116.413384,39.910925

geocoding("hello")
#返回116.413384,39.910925

经反向解析为,

{'status': 'OK',
 'result': {'location': {'lng': 116.413384, 'lat': 39.910925},
  'formatted_address': '北京市东城区正义路2号',
  'business': '天安门,前门,东单',
  'addressComponent': {'city': '北京市',
   'direction': 'near',
   'distance': '29',
   'district': '东城区',
   'province': '北京市',
   'street': '正义路',
   'street_number': '2号'},
  'cityCode': 131}}

注册为SQLite UDF

from sqlalchemy 
import create_engine
conn = create_engine('sqlite://')
connection = conn.raw_connection()
connection.create_function('geocoding', 1, geocoding)
print(conn.execute("select geocoding('杭州临安汽车东站')").fetchall()[0][0])

ipython-sql下如何注册UDF?

%load_ext sql
%sql sqlite://
conns=%sql -l
print(conns)
connection=conns['sqlite://'].session.connection.connection
connection.create_function('geocoding', 1, geocoding)
%sql select geocoding('杭州临安汽车东站')
把百度地图Geocoding API封装成UDF

 

 



Tags:百度地图   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
IT之家 12 月 23 日消息,百度地图今日宣布,第二代车道级导航正式上线。据介绍,百度地图第二代车道借助北斗 + 5G,在实现全程车道级导航效果的基础上,全面升级最优车道推荐、全 /...【详细内容】
2021-12-24  Tags: 百度地图  点击:(11)  评论:(0)  加入收藏
日常生活中,我们除了两点一线的通勤生活,还会面临各种陌生地点的到访与探索,这种时候的常规操作就是打开一个你常用的地图 App 来进行查询和规划了。那么,到底什么样的地图 App...【详细内容】
2020-08-12  Tags: 百度地图  点击:(63)  评论:(0)  加入收藏
功能一:获取map地图窗口的可视区域:var map = new BMap.Map("allmap"); // 创建Map实例map.centerAndZoom(new BMap.Point(116.4035,39.915), 14); //初始化时,即可设置中心点...【详细内容】
2020-07-21  Tags: 百度地图  点击:(58)  评论:(0)  加入收藏
什么是百度Geocoding API?Geocoding API是一个供程序员调用的、http形式的地图服务接口。主要服务那些非网页程序的调用。例如C# 、C++、Java等开发语言都能发送http请求且能...【详细内容】
2020-07-05  Tags: 百度地图  点击:(108)  评论:(0)  加入收藏
“高德地图”和“百度地图”有什么区别? 实测之后两者差距有点大随着科技的进步,现在我们的出行可以说是越来越方便了,基本上不需要依靠任何当地人的指引,就可以独自开启...【详细内容】
2020-06-14  Tags: 百度地图  点击:(159)  评论:(0)  加入收藏
随着移动互联网的发展,线上消费、即时配送已然成为大多数人的生活常态。百度地图深入即时配送行业场景,为外卖、送药、B2C零售、商超便利等提供路线规划、导航能力,并凭借高性...【详细内容】
2020-05-10  Tags: 百度地图  点击:(55)  评论:(0)  加入收藏
2020年初,一场新冠肺炎疫情突如其来,疫情让城市的人口流动及多个行业消费活力备受影响,城市活力增长被按下“暂停键”。疫情之下,全国消费活力趋势如何?全国人口总体迁徙趋势如何...【详细内容】
2020-04-29  Tags: 百度地图  点击:(97)  评论:(0)  加入收藏
近日,百度地图推出了一项新功能——“实时公交”,用户现在通过百度地图App喊“小度小度 实时公交”,就能查看实时公交信息。百度地图官微称,该公司已与北京市交通委达...【详细内容】
2020-01-06  Tags: 百度地图  点击:(255)  评论:(0)  加入收藏
高德、百度地图免费用,靠什么盈利?这个问题,笔者看了一圈下来发现,事实上就目前状况来看好像都还没有实现盈利。但是,没有实现盈利不代表没有收入来源。从本质上来讲,这两款地图软...【详细内容】
2019-11-22  Tags: 百度地图  点击:(155)  评论:(0)  加入收藏
忙了几天,终于闲下来了,接着上一篇写。上一篇说怎样在手机上搭建服务器,本篇写创建hello world,第一个页面。其实看过我上几篇教程的都知道大概怎样创建了,就是一页面法。一个主...【详细内容】
2019-10-29  Tags: 百度地图  点击:(79)  评论:(0)  加入收藏
▌简易百科推荐
以京训钉开发平台接口文档为例,使用HttpClient类请求调用其接口,对数据进行增删改查等操作。 文档地址: https://www.yuque.com/bjjnts/jxd/bo1oszusing System;using System.C...【详细内容】
2021-12-28  Wednes    Tags:HttpClient   点击:(1)  评论:(0)  加入收藏
阿里云与爱快路由安装组网教程一、开通好阿里云轻量服务器之后在服务器运维-远程连接处进行远程 二、进入控制台后在root权限下根据需要安装的固件位数复制下面命令。32位:wg...【详细内容】
2021-12-28  ikuai    Tags:组网   点击:(1)  评论:(0)  加入收藏
HTTP 报文是在应用程序之间发送的数据块,这些数据块将通过以文本形式的元信息开头,用于 HTTP 协议交互。请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应...【详细内容】
2021-12-27  程序员蛋蛋    Tags:HTTP 报文   点击:(4)  评论:(0)  加入收藏
一 网络概念:1.带宽: 标识网卡的最大传输速率,单位为 b/s,比如 1Gbps,10Gbps,相当于马路多宽2.吞吐量: 单位时间内传输数据量大小单位为 b/s 或 B/s ,吞吐量/带宽,就是网络的使用率...【详细内容】
2021-12-27  码农世界    Tags:网络   点击:(3)  评论:(0)  加入收藏
1.TCP/IP 网络模型有几层?分别有什么用? TCP/IP网络模型总共有五层 1.应用层:我们能接触到的就是应用层了,手机,电脑这些这些设备都属于应用层。 2.传输层:就是为应用层提供网络...【详细内容】
2021-12-22  憨猪哥08    Tags:TCP/IP   点击:(35)  评论:(0)  加入收藏
TCP握手的时候维护的队列 半连接队列(SYN队列) 全连接队列(accepted队列)半连接队列是什么?服务器收到客户端SYN数据包后,Linux内核会把该连接存储到半连接队列中,并响应SYN+ACK报...【详细内容】
2021-12-21  DifferentJava    Tags:TCP   点击:(10)  评论:(0)  加入收藏
你好,这里是科技前哨。 随着“元宇宙”概念的爆火,下一代互联网即将到来,也成了互联网前沿热议的话题,12月9日美国众议院的听证会上,共和党议员Patrick McHenry甚至宣称,要调整现...【详细内容】
2021-12-17  王煜全    Tags:Web3   点击:(14)  评论:(0)  加入收藏
一、demopublic static void main(String[] args) throws Exception { RetryPolicy retryPolicy = new ExponentialBackoffRetry( 1000, 3);...【详细内容】
2021-12-15  程序员阿龙    Tags:Curator   点击:(22)  评论:(0)  加入收藏
一、计算机网络概述 1.1 计算机网络的分类按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);按照网络使用者:公用网络、专用网络。1.2 计算机网络的层次结构 TCP/IP四层模...【详细内容】
2021-12-14  一口Linux    Tags:网络知识   点击:(31)  评论:(0)  加入收藏
无论是在外面还是在家里,许多人都习惯了用手机连接 WiFi 进行上网。不知道大家有没有遇到过这样一种情况, 明明已经显示成功连接 WiFi,却仍然提示“网络不可用”或“不可上网”...【详细内容】
2021-12-14  UGREEN绿联    Tags:WiFi   点击:(25)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条