Saya mencari bantuan untuk menghitung jarak antara urutan titik yang ada di Shapefile tunggal di QGIS. Di bawah ini adalah tampilan data saya dan kolom jarak kosong yang saya tambahkan untuk menunjukkan betapa saya ingin melihat jarak. Saya ingin tahu jarak antara titik 1 dan 2, 2 dan 3, dll. Saya ingin jarak menjadi dalam meter atau Km, tetapi saat ini Shapefile saya dalam proyeksi dengan satuan desimal.
ID LAT LON TIME DISTANCE
1 10.08527 124.59833 21:24:37 0
2 10.08523 124.59830 21:25:07 ?
3 10.08526 124.59832 21:25:37 ?
4 10.08526 124.59831 21:26:07 ?
Sejumlah orang telah mengajukan pertanyaan serupa, tetapi tidak ada yang mengerti apa yang ingin saya lakukan. Posting ini dekat, tetapi ini di PostGIS, bukan QGIS Menghitung jarak antara serangkaian titik di postgis
Posting ini membuat saya menjadi bagian dari perjalanan ke sana, tetapi karena saya baru di QGIS, jawabannya tidak memberikan cukup detail bagi saya. Sebagai contoh, setelah saya menginstal plugin GRASS, saya pikir saya perlu menyimpan / mengimpor Shapefile dengan serangkaian titik GPS saya ke GRASS sehingga saya dapat menggunakan modul v.distance, tetapi saya tidak tahu bagaimana cara melakukannya . QGIS menghitung jarak titik di sepanjang garis
Apakah modul GRASS v.distance satu-satunya cara untuk pergi? Atau ada jalan yang lebih lurus ke depan? Jika v. Jarak adalah satu-satunya cara seseorang dapat mengarahkan saya atau menjelaskan lebih banyak langkah demi langkah bagaimana melakukan ini?
Jawaban:
Saya kembali ke masalah ini karena sangat mirip dengan Bagaimana saya menemukan bantalan garis vektor di QGIS atau GRASS? dan itu bisa diselesaikan dengan Python dengan cara yang sama:
1) Jarak Haversine
Satu dapat menemukan banyak skrip dengan mencari jarak Haversine dengan Python di Internet dan saya memilih salah satu dari mereka dalam rumus Haversine dengan Python (Bearing dan Jarak antara dua titik GPS)
Kami memiliki serangkaian garis (titik) dalam file yang harus diperlakukan berpasangan (titik1 - titik2) untuk menghitung jarak. Untuk ini kita akan menggunakan iterator sederhana dari cara Most pythonic untuk mendapatkan elemen sebelumnya
Sekarang dimungkinkan untuk membaca file (contoh Kerrie) berpasangan garis / titik
Kemudian buat shapefile yang berisi bidang asli file csv dan bidang baru untuk jarak dengan modul Python Shapely dan Fiona dari Sean Gillies:
dan hasilnya:
Dimungkinkan juga untuk melakukannya dengan PyQGIS tetapi lebih kompleks daripada Fiona yang menggunakan kamus sederhana untuk membuat shapefile.
Anda dapat menggunakan fungsi lain untuk menghitung jarak Haversine ( Mengapa hukum cosinus lebih disukai daripada haversine ketika menghitung jarak antara dua titik lintang-bujur? ) Tanpa masalah, hanya perhitungan jarak yang berubah, bukan proses pembuatan shapefile.
sumber
Jika Anda terbiasa dengan r, coba gunakan kombinasi paket 'sp' dan 'dismo'.
Misalnya seperti ini (dengan asumsi memiliki titik dengan koordinat x, y):
sumber
Mungkin alat matriks jarak mungkin membantu? Itu di bawah menu Vector. Untuk setiap titik ini akan menghitung jarak ke masing-masing titik lainnya dan menyimpan hasilnya dalam file CSV.
Jika Anda ingin jarak dalam meter, saya pikir akan masuk akal untuk mengubah poin Anda dari lat / lon ke shapefile yang diproyeksikan (mungkin UTM51 dalam kasus Anda) sebelum menggunakan alat.
N.
sumber
Gunakan v.to.db dalam GRASS (mis. Via plugin Sextante) dengan opsi = panjang (panjang garis).
Contoh mengunggah panjang garis (dalam meter) dari setiap garis vektor ke tabel atribut (isi bidang yang sesuai di GUI):
v.to.db map=roads option=length type=line col=linelength units=me
sumber
Saya menemukan masalah ini paling mudah diselesaikan dengan bekerja di spreadsheet, jangan gunakan gis. Saya menemukan karya Chris Veness sangat membantu -
http://www.movable-type.co.uk/scripts/latlong.html
Jika Anda menggulir paragraf bawah, Anda akan menemukan tautan ke dua lembar excel, yaitu;
http://www.movable-type.co.uk/scripts/latlong-distance+bearing.xls
http://www.movable-type.co.uk/scripts/latlong-dest-point.xls
Lihat juga;
Mengapa hukum cosinus lebih disukai daripada haversine ketika menghitung jarak antara dua titik lintang-bujur?
dan Anda dapat mencari gis.se untuk haversine.
Bersulang
sumber