Calcular distancias entre series de puntos en postgis

8

Tengo una tabla postgres / postgis que contiene una serie de puntos secuenciales. Quiero agregar una nueva columna a la tabla que contenga la distancia entre cada punto y el primero, y así sucesivamente hasta que se procesen todos los puntos (el primer punto debe tener una distancia de 0). ¿Se puede hacer esto con una consulta o necesito usar Python o equivalente para crear un bucle? Muchas gracias


fuente
1
¡Bienvenido a gis.stackexchange @william! ¿Quiere decir "distancia entre cada punto y el primero" o "distancia entre cada punto y el anterior"? ¿Están sus puntos numerados, indicando secuencia?
oscuro
¿O está buscando una matriz, usando cada punto como punto de inicio y midiendo la distancia a cada punto en la capa?
RyanKDalton

Respuestas:

4

Hola

Si supone que tiene un campo id llamado gid y que el primer punto tiene gid 1, puede hacer algo como:

ALTER table my_table ADD COLUMN dist DOUBLE PRECISION;

UPDATE my_table SET dist=ST_Distance(my_table.geom, b.geom) 
FROM (SELECT geom FROM my_table WHERE gid = 1) b;

Eso agregará una columna llamada dist y llenará esa columna con la distancia al punto con gid = 1

HTH Nicklas

Nicklas Avén
fuente