Buat garis "berarti" dari banyak baris menggunakan QGIS

12

Saya memiliki beberapa fitur garis (juga memilikinya dalam multi-titik ...) mewakili jalur serupa (jalur gunung, dalam hal ini) dengan berbagai presisi GPS, menghasilkan banyak garis yang saling berdekatan, tetapi tidak tumpang tindih dengan sempurna.

Untuk tujuan proyek ini, saya sedang mencari cara untuk menghitung garis "rata-rata" dari semuanya dan menghasilkan garis yang dihasilkan dari posisi jejak yang paling mungkin.

Bagaimana Anda akan melanjutkan, menggunakan QGIS atau alat lain (saya memikirkan OGR ...)?

masukkan deskripsi gambar di sini

Horizen
sumber
Lihatlah trek Rata-rata pada wiki OpenStreetMap, yang menjelaskan metode menggunakan R.
Jake
2
Ini kedengarannya mirip dengan "conflation" dan di situs ini ada beberapa utas tentang itu: gis.stackexchange.com/search?q=conflation melakukan salah satu pertanyaan dan jawaban di sana membuat Anda lebih dekat?
SaultDon
Saya akan melihat "conflation" hari ini, tetapi sejauh ini, "Rata-rata trek" yang diusulkan sebelumnya tampaknya melakukan trik. Saya hanya mencari sedikit lebih banyak untuk melihat apakah itu dapat dilakukan secara langsung melalui QGIS, tetapi kedua jawaban Anda bagus, terima kasih!
Horizen
Anda mungkin melihat utas ini dan tautannya
johns

Jawaban:

9

Data uji:

  • QGIS 2.18.16, GRASS GIS 7
  • 4 Trek GPS
  • dalam kotak 1x1 km

SAYA.)

Buat poin di sepanjang Trek GPS Anda dengan Plugin QGIS Locate Points Along Lines( https://plugins.qgis.org/plugins/LocatePoints/ ). Saya telah menggunakan interval 5m di exmaple saya.

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

II.)

Buat Concave Hulldengan Processing > Toolbox > QGIS geoalgorithms >Vector geometry tools > Concave hull. Saya menggunakan ambang batas 0.1dalam contoh saya. Jika ambangnya rendah, mungkin ada lubang di dalam poligon output.

masukkan deskripsi gambar di sini

AKU AKU AKU.)

Sekarang, Anda dapat menghitung garis "berarti" dengan bantuan algoritma kerangka. Cari kerangka di Processing Toolbox. Gunakan v.voronoi.skeletonalat dari GRASS GIS 7 commands.

masukkan deskripsi gambar di sini

Stefan
sumber
7

Pendekatan peta panas:

Pendekatan ini lebih memakan waktu, karena waktu perhitungan dari langkah-langkah pemrosesan. Itu bisa dilihat sebagai ide mungkin untuk lebih dekat ke solusi yang lebih umum.

Data uji:

  • QGIS 2.18.16, GRASS GIS 7
  • 4 Trek GPS
  • dalam kotak 1x1 km

SAYA.)

Buat poin di sepanjang Trek GPS Anda dengan Plugin QGIS Temukan Poin di Sepanjang Garis ( https://plugins.qgis.org/plugins/LocatePoints/ ). Untuk pendekatan peta panas saya telah menggunakan interval 2m .

II.)

Buat peta panas dengan plugin peta panas QGIS. Saya telah menggunakan radius 40m. Saya menambah jari-jari sampai tidak ada lubang di raster keluaran. Anda harus mencoba ini dengan nilai radius yang berbeda.

masukkan deskripsi gambar di sini

AKU AKU AKU.)

DIedit Tidak perlu memegang nilai raster peta panas yang tepat.

Sekarang saya ingin menipiskan raster ke area "putih", di mana sebagian besar titik terkonsentrasi. Untuk itu saya menghitung ulang raster keluaran. Nilai min / maks dari raster keluaran adalah 0dan 89.7935. Saya hanya menggunakan nilai di atas 44. Untuk itu saya menggunakan "aturan praktis". Bulatkan nilai maksimal dan bagi dengan dua. Kurangi nilai ini di waktu lain. 89/2 = 44,5-> 44. Saya telah menggunakan OSGeo4W Shell: gdal_calc -A heatmap.tif --calc="A>=44" --NoDataValue=0 --outfile=heatmap_44_NoData.tif.

masukkan deskripsi gambar di sini

IV.)

Diedit

a) Polygonize peta panas yang dihitung ulang dengan Raster > Conversion > Polygonize ...

b) Sederhanakan poligon Vector > Geometry Tools > Simplify geometries. Saya telah menggunakan toleransi 2. Poligon yang lebih sederhana mengurangi waktu pemrosesan untuk kerangka.

c) Hitung kerangka: cari kerangka di Toolbox Pemrosesan. Gunakan v.voronoi.skeletonalat dari perintah GRASS GIS 7.

masukkan deskripsi gambar di sini

Anda dapat melihat bahwa baris yang dihasilkan lebih mewakili posisi jejak yang paling mungkin daripada di jawaban pertama saya. Khusus untuk tikungan di Utara, garis rata-rata mengikuti tiga trek yang lebih dekat satu sama lain. Hal yang sama untuk tikungan di Timur.

Keuntungan dari pendekatan:

  • hasil bagus yang wajar secara eksklusif menggunakan QGIS

Kekurangan:

  • waktu pemrosesan untuk set data besar
  • Anda harus mencoba parameter a priori (radius peta panas, nilai min / maks)
  • sulit untuk mengotomatiskan langkah-langkah pemrosesan
  • tidak diuji untuk tikungan / kurva sempit dan untuk trek yang benar-benar keluar dari garis

Jika seseorang dapat mengoptimalkan langkah-langkah pemrosesan, selamat datang Anda!

Stefan
sumber
+1. Ini adalah pendekatan yang efektif untuk menemukan "garis rata-rata." Namun, itu tidak selalu merupakan estimasi terbaik untuk garis yang benar . Untuk melihat mengapa tidak, bayangkan bahwa sebagian besar jalur dilalui dengan sangat cepat, tetapi satu dilintasi sangat lambat, cukup lambat sehingga kesalahan di lokasi mana pun akan dirata-rata. Jalur tunggal ini akan memberikan representasi kebenaran yang paling dapat diandalkan, tetapi dengan melakukan resampling setiap jalur informasi ini akan hilang dan dirata-rata dengan banyak representasi yang lebih miskin. Jelas ini adalah kasus yang ekstrem, tetapi dalam kenyataannya beberapa jalur mungkin lebih baik daripada yang lain.
Whuber
Saya mengerti. Terima kasih atas tanggapan Anda. Plugin Heat Map di QGIS menyediakan beberapa opsi lanjutan, di mana Anda bisa use weight from field. Bisakah informasi seperti kecepatan (traverse lambat / cepat) atau yang lain digunakan untuk memberi bobot data dengan cara tertentu? Bobot dapat digunakan untuk meningkatkan peta panas.
Stefan
Ya, Anda bisa melakukan itu - tetapi tidak satu pun dari teknik ini mengatasi kekhawatiran bahwa data mungkin memiliki autokorelasi (positif kuat). Untuk mengatasinya diperlukan analisis deret waktu tentang jalur individu.
whuber