Calcular distâncias entre séries de pontos no postgis

8

Eu tenho uma tabela postgres / postgis contendo uma série de pontos seqüenciais. Quero adicionar uma nova coluna à tabela que contenha a distância entre cada ponto e o primeiro e assim por diante até que todos os pontos sejam processados ​​(o primeiro ponto deve ter uma distância de 0). Isso pode ser feito com uma consulta ou preciso usar Python ou equivalente para criar um loop? Muito Obrigado


fonte
1
Bem-vindo ao gis.stackexchange @william! Você quer dizer "distância entre cada ponto e o primeiro" ou "distância entre cada ponto e o anterior"? Seus pontos estão numerados, indicando a sequência?
Underdark
Ou você está procurando uma matriz, usando cada ponto como ponto de partida e medindo a distância de cada ponto da camada?
RyanKDalton

Respostas:

4

Hallo

Se suponha que você tenha um campo de identificação chamado gid e que o primeiro ponto tenha gid 1, poderá fazer 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;

Isso adicionará uma coluna chamada dist e preencherá a coluna com a distância até o ponto com gid = 1

HTH Nicklas

Nicklas Avén
fonte