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
|