retrofit 解析百度地图api 返回数据_把百度地图Geocoding API封装成UDF

v2-4f2394ea23844b163d850f5c47f4ac7f_1440w.jpg?source=172ae18b
把百度地图Geocoding API封装成UDF​mp.weixin.qq.com
v2-40746aaed015d74f9d16d9539507c35a_180x120.jpg

什么是百度Geocoding API?

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

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

v2-5d50f45d162f6b94c4522cf4a92e9a9f_b.jpg

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。

代码实现

地址解析为经纬度

import 

返回,

{

经纬度反向解析为地址,

lng_lat

返回,

{

封装成Python函数

import 

测试下

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

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

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

经反向解析为,

{

注册为SQLite UDF

from 

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('杭州临安汽车东站')

v2-85cb9f9c7c563e37b4cb1be3186ebb80_b.jpg

参考

  • http://api.map.baidu.com/lbsapi/cloud/geocoding-api.htm

https://github.com/catherinedevlin/ipython-sql

把百度地图Geocoding API封装成UDF​mp.weixin.qq.com
v2-40746aaed015d74f9d16d9539507c35a_180x120.jpg
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值