Spaces:
Running
Running
File size: 1,060 Bytes
9665c2c b0cf684 9665c2c d65ffc8 9665c2c d65ffc8 9665c2c d65ffc8 9665c2c d65ffc8 9665c2c d65ffc8 9665c2c d65ffc8 c88389e d65ffc8 9665c2c d65ffc8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# Copyright (c) Meta Platforms, Inc. and affiliates.
import json
from http.client import responses
from pathlib import Path
from typing import Any, Dict, Optional
import urllib3
from .. import logger
from ..utils.geo import BoundaryBox
OSM_URL = "https://api.openstreetmap.org/api/0.6/map.json"
def get_osm(
boundary_box: BoundaryBox,
cache_path: Optional[Path] = None,
overwrite: bool = False,
) -> Dict[str, Any]:
if not overwrite and cache_path is not None and cache_path.is_file():
return json.loads(cache_path.read_text())
(bottom, left), (top, right) = boundary_box.min_, boundary_box.max_
query = {"bbox": f"{left},{bottom},{right},{top}"}
logger.info("Calling the OpenStreetMap API...")
result = urllib3.request("GET", OSM_URL, fields=query, timeout=10)
if result.status != 200:
error = result.info()["error"]
raise ValueError(f"{result.status} {responses[result.status]}: {error}")
if cache_path is not None:
cache_path.write_bytes(result.data)
return result.json()
|