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.
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
-- Верификация масштаба дистанций: 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;
|
||||
Reference in New Issue
Block a user