¿Consulta simple PostGIS ST_Distance para dos puntos de la misma tabla de geometría?

11

Nota: Esta pregunta se publicó en Stackoverflow al principio .

Tengo una tabla de geometría points_tablecon SRID 4326algunos puntos.

Necesito encontrar una distancia entre un par de puntos (características) de esta tabla.

Me gustaría seleccionar un punto con id = Xy otro punto con id = Yy luego encontrar una distancia entre ellos con la ST_Distancefunción.

Sé cómo consultar estos dos puntos desde la base de datos:

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

Pero esta consulta devuelve un resultado, que no sé cómo pasar ST_Distance, porque ST_Distancetoma 2 parámetros.

Yo he tratado Select ST_Distance(select the_geom from points_table where id = X or id = Y);

Pero obviamente está mal.

¿Cómo puedo encontrar la distancia entre dos puntos de geometría (entidades) de una tabla?

PD Todos los ejemplos que he encontrado hasta ahora muestran el uso de ST_Distance con puntos codificados en los argumentos de la función ST_Distance. No he encontrado un ejemplo, donde ST_Distance se usa para calcular una distancia entre dos puntos de la misma tabla.

skanatek
fuente

Respuestas:

28

Debe hacer referencia a su tabla dos veces, dándole diferentes 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
fuente