ea19ed0d8f
Два бага в одной строке: водные дистанции делились на cos (вместо умножения, как дороги) и отдавались как км без /1000. Результат — 850.671 «км» до озера в Браславе (реально 271 м). Верифицировано против geography: merc×cos = 271.0 м ≈ geo 271.5 м (дельта 0.1%). Теперь Браслав SE: water 0.271 км, settle 0.119 км. 197 passed.
10 lines
656 B
SQL
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; |