Saya ingin menyelaraskan beberapa titik ke satu garis, atau garis dalam satu lapisan, menggunakan toleransi atau penyangga tertentu di sekitar objek garis. Silakan merujuk ke sketsa sampel yang dilampirkan.
Demi contoh ini, titik terdekat dengan garis dalam gambar SEBELUM berada dalam 5 unit peta garis, sedangkan titik terluar berjarak lebih dari 10 unit peta. Saya ingin mengambil titik terdekat ke garis terdekat, menggunakan toleransi 5 unit peta untuk mencapai hasil dalam gambar SETELAH.
Jawaban:
Ada alat bawaan untuk melakukan ini dalam versi QGIS 3.0 yang belum dirilis. Anda bisa mendapatkan potret malam dari situs web QGIS untuk mengujinya terlebih dahulu.
Untuk melakukan ini:
Inilah hasilnya, menunjukkan titik asli sebagai "x", dan titik yang diambil sebagai titik hijau. Saya menggunakan toleransi di sini sehingga hanya beberapa titik input yang terputus.
sumber
Ini bisa dilakukan dengan PyQGIS . Untuk situasi selanjutnya:
kode berikut, dengan mempertimbangkan toleransi 5 unit peta, dijalankan di Python Console QGIS:
Itu menghasilkan lapisan memori di mana titik-titik diambil sesuai dengan toleransi 5 unit peta yang sebelumnya dianggap dan jalur tegak lurus ke garis.
sumber
Anda juga dapat melakukan ini di Kalkulator Bidang dengan plugin refFunctions. Anda dapat menggunakan Kalkulator Bidang untuk memperbarui geometri lapisan serta bidang. refFunctions memberi Anda fungsi "geomdistance" untuk menemukan garis terdekat dalam jarak tertentu (atau "geomnearest" jika Anda tidak menginginkan ambang batas) dan akan mengembalikan atribut atau geometri, dan fungsi "terdekat_point" akan menemukan yang terdekat titik pada geometri yang diberikan. Rangkai semuanya seperti itu untuk menghitung geometri baru untuk layer titik Anda:
closest_point(geom_from_wkt(geomdistance('snap_lines','$geometry',10)) , $geometry)
Alih-alih memperbarui geometri secara langsung, Anda dapat menghitung bidang dengan geometri yang terpotong. Saya menyimpan banyak geometri untuk memotret culvert point ke layer stream yang berbeda dan saya dapat dengan mudah memperbarui geometri titik dalam Field Calculator tergantung pada garis stream siapa yang perlu saya gunakan.
Ada beberapa batasan dengan ini, kedua layer harus memiliki CRS yang sama dan fungsi geomdistance akan memberi Anda kesalahan jika Anda memiliki lebih dari 100.000 poin tetapi Anda dapat mengubah batas ini jika Anda mengedit file plugin refFunctions.
sumber