Простой PostGIS ST_Distance запрос для двух точек из одной геометрической таблицы?


11

Примечание: Этот вопрос был опубликован в Stackoverflow на первом .

У меня есть таблица геометрии points_tableс SRID 4326несколькими точками.

Мне нужно найти расстояние между парой точек (особенностей) из этой таблицы.

Я хотел бы выбрать одну точку с помощью id = Xи другую точку с помощью, id = Yа затем найти расстояние между ними с помощью ST_Distanceфункции.

Я знаю, как запросить эти две точки из базы данных:

select * from points_table where id = X or id = Y;

Но этот запрос возвращает результат, который я не знаю, как передать ST_Distance, потому что ST_Distanceпринимает 2 параметра.

я пытался Select ST_Distance(select the_geom from points_table where id = X or id = Y);

Но это явно неправильно.

Как я могу найти расстояние между двумя геометрическими точками (объектами) из таблицы?

PS Все примеры, которые я нашел до сих пор, показывают использование ST_Distance с точками, закодированными в аргументах функции ST_Distance. Я не нашел пример, где ST_Distance используется для расчета расстояния между двумя точками из одной таблицы.

Ответы:


28

Вам нужно дважды сослаться на таблицу, указав разные псевдонимы:

SELECT ST_Distance(a.geom, b.geom)
FROM points_table a, points_table b
WHERE a.id='x' AND b.id='y';
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.