Guarden / utils /geo.py
Crocolil's picture
Upload folder using huggingface_hub
532821c verified
Raw
History Blame Contribute Delete
848 Bytes
import requests
_geo_cache = {}
def city_to_coordinates(city):
"""Convert a city name to (lat, lon) using Open-Meteo's geocoding API."""
if city in _geo_cache:
return _geo_cache[city]
url = "https://geocoding-api.open-meteo.com/v1/search"
params = {
"name": city.strip(),
"count": 1,
"format": "json"
}
try:
response = requests.get(url, params=params, timeout=10)
response.raise_for_status()
data = response.json()
results = data.get("results")
if not results:
return None
coords = (results[0]["latitude"], results[0]["longitude"])
_geo_cache[city] = coords
return coords
except (requests.RequestException, ValueError) as e:
print(f"city_to_coordinates failed for '{city}': {e}")
return None