@beduin01

Как найти ближайшую улицу к GPS точке?

Есть GPS координаты. Нужно найти ближайшую улицу к каждой GPS точке. Нашел пример подобного запроса:

SELECT p.id AS point_id, b.id AS road_id, ST_DISTANCE(b.geom, p.geom) AS distance
FROM points p
CROSS JOIN LATERAL (
    SELECT r.id AS id, r.geom AS geom
    FROM roads r
    ORDER BY r.geom <-> p.geom 
    LIMIT 1
) b;


Никак не могу понять как мне его использовать. К примеру у меня есть координаты:
lon, lat 37.72308, 55.47957

Мне их в `ST_DISTANCE` вписать? Если да то в какой форме?
  • Вопрос задан
  • 496 просмотров
Решения вопроса 1
freeExec
@freeExec
Участник OpenStreetMap
Да, прямо туда ST_POINT.
Но вообще странный запрос. Обычно строят буфер в 100, 200 и т.д. метров, и смотрят какая дорога в него попавшая ближе.
А можно и без буфера если нужно только название:
SELECT osm_id, highway, name, tags, ST_DISTANCE(way, point) AS Distance
  FROM public.planet_osm_line
	INNER JOIN (SELECT ST_TRANSFORM( ST_SetSRID(ST_POINT(48.323, 54.263), 4326), 900913) AS point ) AS p
		ON ST_DWithin(point, way, 200)
  WHERE highway IS NOT NULL AND name IS NOT NULL  
  ORDER BY Distance
  LIMIT 1;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы