Hitung jarak antara serangkaian titik di postgis

8

Saya memiliki tabel postgres / postgis yang berisi serangkaian poin berurutan. Saya ingin menambahkan kolom baru ke tabel yang berisi jarak antara setiap titik dan yang pertama, dan seterusnya sampai semua titik diproses (titik pertama harus memiliki jarak 0). Apakah ini dapat dilakukan dengan kueri atau apakah saya perlu menggunakan Python atau yang setara untuk membuat loop? Terimakasih banyak


sumber
1
Selamat datang di gis.stackexchange @william! Apakah maksud Anda "jarak antara setiap titik dan yang pertama" atau "jarak antara setiap titik dan yang sebelumnya"? Apakah poin Anda diberi nomor, menunjukkan urutan?
underdark
Atau apakah Anda mencari matriks, menggunakan setiap titik sebagai titik awal dan mengukur jarak ke setiap titik di lapisan?
RyanKDalton

Jawaban:

4

Halo

Jika berasumsi bahwa Anda memiliki bidang id yang disebut gid dan bahwa titik pertama memiliki gid 1 maka Anda dapat melakukan sesuatu seperti:

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;

Itu akan menambahkan kolom yang disebut dist dan mengisi kolom itu dengan jarak ke titik dengan gid = 1

HTH Nicklas

Nicklas Avén
sumber