fix: вода/НП фильтруются строго по сектору (ST_Intersects, не bbox)
Ближайшая вода бралась по bbox сектора: объект в углу bbox, но вне 45°-пирога, попадал в выборку — вода почти не различала направления (1.393 км у N/NE/E с одной воды в центре). Теперь строго внутри сектора: water 1.393–2.337 км по направлениям — честная география.
This commit is contained in:
@@ -104,18 +104,21 @@ def get_zone_features_postgis(lat: float, lon: float, direction: str, radius_m:
|
||||
FROM planet_osm_polygon p, s
|
||||
WHERE (p."natural" = 'water' OR p.landuse = 'reservoir')
|
||||
AND p.way && s.sector
|
||||
AND ST_Intersects(p.way, s.sector)
|
||||
),
|
||||
waterway_near AS (
|
||||
SELECT MIN(ST_Distance(l.way, s.center_m)) AS meters
|
||||
FROM planet_osm_line l, s
|
||||
WHERE l.waterway IN ('river','stream','canal','ditch','drain')
|
||||
AND l.way && s.sector
|
||||
AND ST_Intersects(l.way, s.sector)
|
||||
),
|
||||
settle_near AS (
|
||||
SELECT MIN(ST_Distance(p.way, s.center_m)) AS meters
|
||||
FROM planet_osm_point p, s
|
||||
WHERE p.place IN ('village','town','city')
|
||||
AND p.way && s.sector
|
||||
AND ST_Intersects(p.way, s.sector)
|
||||
)
|
||||
SELECT
|
||||
(SELECT meters FROM road_len),
|
||||
|
||||
Reference in New Issue
Block a user