Wrong bbox
Browse files- camptocamp_api.py +19 -2
- requirements.txt +1 -0
camptocamp_api.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
|
|
| 1 |
import requests
|
| 2 |
import logging
|
| 3 |
from typing import Tuple, Optional, Dict, Any
|
|
@@ -96,9 +97,25 @@ class CamptocampAPI:
|
|
| 96 |
return None
|
| 97 |
bbox = results[0]["boundingbox"]
|
| 98 |
logger.info(f"BBox for '{query}': {bbox}")
|
| 99 |
-
return (
|
| 100 |
float(bbox[2]), # west
|
| 101 |
float(bbox[0]), # south
|
| 102 |
float(bbox[3]), # east
|
| 103 |
float(bbox[1]) # north
|
| 104 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pyproj import Transformer
|
| 2 |
import requests
|
| 3 |
import logging
|
| 4 |
from typing import Tuple, Optional, Dict, Any
|
|
|
|
| 97 |
return None
|
| 98 |
bbox = results[0]["boundingbox"]
|
| 99 |
logger.info(f"BBox for '{query}': {bbox}")
|
| 100 |
+
return CamptocampAPI.convert_bbox_to_webmercator((
|
| 101 |
float(bbox[2]), # west
|
| 102 |
float(bbox[0]), # south
|
| 103 |
float(bbox[3]), # east
|
| 104 |
float(bbox[1]) # north
|
| 105 |
+
))
|
| 106 |
+
|
| 107 |
+
@staticmethod
|
| 108 |
+
def convert_bbox_to_webmercator(bbox: Tuple[float, float, float, float]) -> Tuple[int, int, int, int]:
|
| 109 |
+
"""
|
| 110 |
+
Convert a WGS84 bbox (lon/lat) to EPSG:3857 (Web Mercator) in meters.
|
| 111 |
+
|
| 112 |
+
Args:
|
| 113 |
+
bbox: (west, south, east, north) in degrees
|
| 114 |
+
|
| 115 |
+
Returns:
|
| 116 |
+
(west, south, east, north) in meters
|
| 117 |
+
"""
|
| 118 |
+
transformer = Transformer.from_crs("epsg:4326", "epsg:3857", always_xy=True)
|
| 119 |
+
west, south = transformer.transform(bbox[0], bbox[1])
|
| 120 |
+
east, north = transformer.transform(bbox[2], bbox[3])
|
| 121 |
+
return int(west), int(south), int(east), int(north)
|
requirements.txt
CHANGED
|
@@ -1,2 +1,3 @@
|
|
| 1 |
gradio>=4.0
|
| 2 |
requests>=2.0
|
|
|
|
|
|
| 1 |
gradio>=4.0
|
| 2 |
requests>=2.0
|
| 3 |
+
pyproj
|