diff --git a/backend/routers/water.py b/backend/routers/water.py index 3b4fe5e..df3ae16 100644 --- a/backend/routers/water.py +++ b/backend/routers/water.py @@ -165,19 +165,23 @@ def _water_geoms(elements: list[dict]) -> list[dict]: poly = _way_to_polygon({'geometry': mg}) if poly is None: continue - polygons.append(poly['coordinates'][0]) + # Кладём Polygon целиком (coordinates = [ring]), не сам ring — + # иначе у одиночного кольца coordinates получатся depth-2. + polygons.append(poly['coordinates']) area, lat, lon = _polygon_centroid_area(mg) areas.append(area) lats.append(lat) lons.append(lon) if not polygons: continue - geom = ( - # GeoJSON MultiPolygon: [[ring0], [ring1]] — каждый полигон = список колец. - {'type': 'MultiPolygon', 'coordinates': [[p] for p in polygons]} - if len(polygons) > 1 else - {'type': 'Polygon', 'coordinates': polygons[0]} - ) + if len(polygons) == 1: + geom = polygons[0] # {'type': 'Polygon', 'coordinates': [ring]} + else: + # GeoJSON MultiPolygon: собираем полигоны в один Multi. + geom = { + 'type': 'MultiPolygon', + 'coordinates': [p['coordinates'] for p in polygons], + } out.append({'layer': layer, 'name': name, 'geom': geom, 'area_m2': sum(areas), 'lat': sum(lats) / len(lats), 'lon': sum(lons) / len(lons)})