Proste zapytanie PostGIS ST_Distance dla dwóch punktów z tej samej tabeli geometrii?

11

Uwaga: to pytanie zostało najpierw opublikowane w Stackoverflow .

Mam tabelę geometrii points_tablez SRID 4326kilkoma punktami.

Muszę znaleźć odległość między parą punktów (cech) od tej tabeli.

Chciałbym wybrać jeden punkt za pomocą id = Xi drugi punkt za pomocą, id = Ya następnie znaleźć odległość między nimi za pomocą ST_Distancefunkcji.

Wiem, jak wysłać zapytanie do tych dwóch punktów z bazy danych:

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

Ale to zapytanie zwraca wynik, do którego nie wiem, jak przekazać ST_Distance, ponieważ ST_Distancezajmuje 2 parametry.

próbowałem Select ST_Distance(select the_geom from points_table where id = X or id = Y);

Ale to oczywiście źle.

Jak znaleźć odległość między dwoma punktami geometrycznymi (elementami) od stołu?

PS Wszystkie przykłady, które do tej pory znalazłem, pokazują użycie ST_Distance z punktami zakodowanymi na stałe w argumentach funkcji ST_Distance. Nie znalazłem przykładu, w którym ST_Distance służy do obliczenia odległości między dwoma punktami z tej samej tabeli.

skanatek
źródło

Odpowiedzi:

28

Musisz dwukrotnie odwołać się do tabeli, podając różne aliasy:

SELECT ST_Distance(a.geom, b.geom)
FROM points_table a, points_table b
WHERE a.id='x' AND b.id='y';
Mike T.
źródło