Semplice query PostGIS ST_Distance per due punti dalla stessa tabella geometrica?


11

Nota: questa domanda è stata inizialmente pubblicata su Stackoverflow .

Ho una tabella di geometria points_tablecon SRID 4326e alcuni punti in essa.

Devo trovare una distanza tra una coppia di punti (caratteristiche) da questa tabella.

Vorrei selezionare un punto con id = Xe un altro punto con id = Ye quindi trovare una distanza tra loro con la ST_Distancefunzione.

So come interrogare questi due punti dal database:

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

Ma questa query restituisce un risultato, che non so come passare ST_Distance, perché ST_Distanceaccetta 2 parametri.

Ho provato Select ST_Distance(select the_geom from points_table where id = X or id = Y);

Ma è ovviamente sbagliato.

Come posso trovare la distanza tra due punti della geometria (caratteristiche) da una tabella?

PS Tutti gli esempi che ho trovato finora mostrano l'utilizzo di ST_Distance con punti codificati negli argomenti della funzione ST_Distance. Non ho trovato un esempio, in cui ST_Distance viene utilizzato per calcolare una distanza tra due punti dalla stessa tabella.

Risposte:


28

Devi fare riferimento due volte alla tabella, dandogli alias diversi:

SELECT ST_Distance(a.geom, b.geom)
FROM points_table a, points_table b
WHERE a.id='x' AND b.id='y';
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.