Files
vector/scripts/b16-water-scale.sql
Sadmin ea19ed0d8f fix: дистанции до воды/НП — real = merc×cos + метры→км (было 850 «км» до озера)
Два бага в одной строке: водные дистанции делились на cos (вместо
умножения, как дороги) и отдавались как км без /1000. Результат —
850.671 «км» до озера в Браславе (реально 271 м).

Верифицировано против geography: merc×cos = 271.0 м ≈ geo 271.5 м
(дельта 0.1%). Теперь Браслав SE: water 0.271 км, settle 0.119 км.
197 passed.
2026-09-09 19:40:20 +03:00

10 lines
656 B
SQL

-- Верификация масштаба дистанций: mercator vs geography (Браслав)
WITH s AS (
SELECT ST_Transform(ST_SetSRID(ST_MakePoint(27.03, 55.64), 4326), 3857) AS c_m,
ST_SetSRID(ST_MakePoint(27.03, 55.64), 4326) AS c_g
)
SELECT
(SELECT MIN(ST_Distance(p.way, c_m)) FROM planet_osm_polygon p, s
WHERE (p."natural"='water' OR p.landuse='reservoir') AND p.way && ST_Expand(s.c_m, 30000)) AS merc_m,
(SELECT MIN(ST_Distance(ST_Transform(p.way, 4326)::geography, c_g::geography)) FROM planet_osm_polygon p, s
WHERE (p."natural"='water' OR p.landuse='reservoir') AND p.way && ST_Expand(s.c_m, 30000)) AS geo_m;