日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

什么是百度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

 

 

分享到:
標簽:地圖
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定