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
         | 
