使用Web API
在這個教學中,我會會使用 OpenStreetMap (OSM) 提供的 Geocoding API - Nominatim API來查詢地址的 GPS 座標(經緯度)。
✅ 使用 requests
呼叫 OSM API
import requests
def geocode_osm(address):
"""
使用 OpenStreetMap (Nominatim) 查詢地理座標(經緯度)。
:param address: 要查詢的地址 (str)
:return: 經緯度 (tuple) 或 None
"""
url = "https://nominatim.openstreetmap.org/search"
params = {
"q": address, # 查詢地址
"format": "json", # 輸出格式 JSON
"limit": 1, # 只取第一筆結果
}
headers = {'user-agent':'My App'}
response = requests.get(url, params=params, headers=headers)
if response.status_code == 200:
data = response.json()
if data:
lat, lon = data[0]["lat"], data[0]["lon"]
return float(lat), float(lon)
return None # 查無結果
# 測試範例
address = "台北101"
gps = geocode_osm(address)
print(f"{address} 的座標是: {gps}")
📌 說明
- API 使用 OpenStreetMap 的 Nominatim 服務
q
參數傳入地址format=json
取得 JSON 格式結果- 限制
limit=1
只取第一筆 - 解析 JSON 回傳經緯度
✅ 查詢結果範例
🚀 這樣你就能使用 OSM 進行 Geocoding 了! 😊