Простий 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.