Spaces:
Sleeping
Sleeping
AUTO-FRANCE-PARTS commited on
Commit ·
e6ce7f9
1
Parent(s): ee194aa
refactor: Update nearby parcel retrieval to return structured response and improve error handling
Browse files
app.py
CHANGED
|
@@ -52,7 +52,7 @@ async def get_nearby_parcels(
|
|
| 52 |
longitude: float = Query(..., description="Longitude du point central en degrés décimaux"),
|
| 53 |
radius_m: float = Query(200, description="Rayon de recherche en mètres", gt=0),
|
| 54 |
step_m: float = Query(100, description="Pas d'échantillonnage en mètres (densité des points)", gt=0)
|
| 55 |
-
) ->
|
| 56 |
"""
|
| 57 |
Récupère les parcelles à proximité d'un point donné par échantillonnage.
|
| 58 |
|
|
@@ -77,7 +77,10 @@ async def get_nearby_parcels(
|
|
| 77 |
# Exécution du use case
|
| 78 |
nearby_parcels = await get_nearby_parcels_use_case(latitude, longitude)
|
| 79 |
|
| 80 |
-
return
|
|
|
|
|
|
|
|
|
|
| 81 |
|
| 82 |
except Exception as e:
|
| 83 |
raise HTTPException(
|
|
|
|
| 52 |
longitude: float = Query(..., description="Longitude du point central en degrés décimaux"),
|
| 53 |
radius_m: float = Query(200, description="Rayon de recherche en mètres", gt=0),
|
| 54 |
step_m: float = Query(100, description="Pas d'échantillonnage en mètres (densité des points)", gt=0)
|
| 55 |
+
) -> Dict :
|
| 56 |
"""
|
| 57 |
Récupère les parcelles à proximité d'un point donné par échantillonnage.
|
| 58 |
|
|
|
|
| 77 |
# Exécution du use case
|
| 78 |
nearby_parcels = await get_nearby_parcels_use_case(latitude, longitude)
|
| 79 |
|
| 80 |
+
return {
|
| 81 |
+
"parcels": nearby_parcels["parcels"],
|
| 82 |
+
"number_of_points": nearby_parcels["number_of_points"]
|
| 83 |
+
}
|
| 84 |
|
| 85 |
except Exception as e:
|
| 86 |
raise HTTPException(
|
domain/repositories/parcel_repository.py
CHANGED
|
@@ -23,7 +23,7 @@ class ParcelRepository:
|
|
| 23 |
parcel_data = await self.lexicon_api.get_parcel_from_lat_lon(latitude, longitude)
|
| 24 |
|
| 25 |
# Si l'API ne retourne pas de données de parcelle, on retourne None
|
| 26 |
-
if not parcel_data
|
| 27 |
return None
|
| 28 |
|
| 29 |
return parcel_data
|
|
|
|
| 23 |
parcel_data = await self.lexicon_api.get_parcel_from_lat_lon(latitude, longitude)
|
| 24 |
|
| 25 |
# Si l'API ne retourne pas de données de parcelle, on retourne None
|
| 26 |
+
if not parcel_data :
|
| 27 |
return None
|
| 28 |
|
| 29 |
return parcel_data
|
domain/use_cases/get_nearby_parcels_by_sampling.py
CHANGED
|
@@ -14,7 +14,7 @@ class GetNearbyParcelsBySamplingUseCase:
|
|
| 14 |
self.to_projected = Transformer.from_crs("EPSG:4326", "EPSG:3857", always_xy=True).transform
|
| 15 |
self.to_geographic = Transformer.from_crs("EPSG:3857", "EPSG:4326", always_xy=True).transform
|
| 16 |
|
| 17 |
-
async def __call__(self, lat: float, lon: float) ->
|
| 18 |
center = transform(self.to_projected, Point(lon, lat))
|
| 19 |
|
| 20 |
sampled_points = self._generate_sampling_points(center)
|
|
@@ -43,7 +43,10 @@ class GetNearbyParcelsBySamplingUseCase:
|
|
| 43 |
nearby_parcels.append(parcel)
|
| 44 |
seen_ids.add(parcel_id)
|
| 45 |
|
| 46 |
-
return
|
|
|
|
|
|
|
|
|
|
| 47 |
|
| 48 |
def _generate_sampling_points(self, center: Point) -> List[Point]:
|
| 49 |
points = []
|
|
|
|
| 14 |
self.to_projected = Transformer.from_crs("EPSG:4326", "EPSG:3857", always_xy=True).transform
|
| 15 |
self.to_geographic = Transformer.from_crs("EPSG:3857", "EPSG:4326", always_xy=True).transform
|
| 16 |
|
| 17 |
+
async def __call__(self, lat: float, lon: float) -> dict:
|
| 18 |
center = transform(self.to_projected, Point(lon, lat))
|
| 19 |
|
| 20 |
sampled_points = self._generate_sampling_points(center)
|
|
|
|
| 43 |
nearby_parcels.append(parcel)
|
| 44 |
seen_ids.add(parcel_id)
|
| 45 |
|
| 46 |
+
return {
|
| 47 |
+
"parcels": nearby_parcels,
|
| 48 |
+
"number_of_points": len(sampled_points)
|
| 49 |
+
}
|
| 50 |
|
| 51 |
def _generate_sampling_points(self, center: Point) -> List[Point]:
|
| 52 |
points = []
|