Jikkii commited on
Commit
17c0e3d
·
1 Parent(s): 7d1cee1

Wrong bbox

Browse files
Files changed (2) hide show
  1. camptocamp_api.py +19 -2
  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