Einfache PostGIS ST_Distance-Abfrage für zwei Punkte aus derselben Geometrietabelle?

11

Hinweis: Diese Frage wurde bei Stackoverflow bei veröffentlicht zuerst .

Ich habe eine Geometrietabelle points_tablemit SRID 4326und ein paar Punkten darin.

Ich muss einen Abstand zwischen zwei Punkten (Merkmalen) aus dieser Tabelle finden.

Ich möchte einen Punkt mit id = Xund einen anderen Punkt mit auswählen id = Yund dann mit ST_DistanceFunktion einen Abstand zwischen ihnen finden .

Ich weiß, wie man diese beiden Punkte aus der Datenbank abfragt:

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

Diese Abfrage gibt jedoch ein Ergebnis zurück, an das ich nicht weitergeben kann ST_Distance, da ST_Distancezwei Parameter erforderlich sind .

Ich habe versucht Select ST_Distance(select the_geom from points_table where id = X or id = Y);

Aber es ist offensichtlich falsch.

Wie kann ich den Abstand zwischen zwei Geometriepunkten (Features) von einer Tabelle ermitteln?

PS Alle Beispiele, die ich bisher gefunden habe, zeigen die Verwendung von ST_Distance mit Punkten, die in den Argumenten der Funktion ST_Distance fest codiert sind. Ich habe kein Beispiel gefunden, in dem ST_Distance verwendet wird, um einen Abstand zwischen zwei Punkten aus derselben Tabelle zu berechnen.

Skanatek
quelle

Antworten:

27

Sie müssen Ihre Tabelle zweimal referenzieren und ihr verschiedene Aliase geben:

SELECT ST_Distance(a.geom, b.geom)
FROM points_table a, points_table b
WHERE a.id='x' AND b.id='y';
Mike T.
quelle