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 = []
|