Skip to content

使用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}")

📌 說明

  1. API 使用 OpenStreetMap 的 Nominatim 服務
  2. q 參數傳入地址
  3. format=json 取得 JSON 格式結果
  4. 限制 limit=1 只取第一筆
  5. 解析 JSON 回傳經緯度

✅ 查詢結果範例

台北101 的座標是: (25.0339639, 121.5644722)

🚀 這樣你就能使用 OSM 進行 Geocoding 了! 😊