Requête PostGIS ST_Distance simple pour deux points de la même table de géométrie?

11

Remarque: Cette question a été publiée sur Stackoverflow dans un premier temps .

J'ai une table de géométrie points_tableavec SRID 4326et quelques points dedans.

J'ai besoin de trouver une distance entre une paire de points (caractéristiques) de ce tableau.

Je voudrais sélectionner un point avec id = Xet un autre point avec id = Ypuis trouver une distance entre eux avec ST_Distancefonction.

Je sais comment interroger ces deux points à partir de la base de données:

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

Mais cette requête renvoie un résultat, auquel je ne sais pas comment passer ST_Distance, car ST_Distanceprend 2 paramètres.

j'ai essayé Select ST_Distance(select the_geom from points_table where id = X or id = Y);

Mais c'est évidemment faux.

Comment puis-je trouver la distance entre deux points de géométrie (entités) d'une table?

PS Tous les exemples que j'ai trouvés jusqu'à présent montrent l'utilisation de ST_Distance avec des points codés en dur dans les arguments de la fonction ST_Distance. Je n'ai pas trouvé d'exemple, où ST_Distance est utilisé pour calculer une distance entre deux points de la même table.

skanatek
la source

Réponses:

28

Vous devez référencer votre table deux fois, en lui donnant différents alias:

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