Saya memiliki shapefile garis dan poligon lain. Ketika dua atau lebih garis memotong poligon, mereka harus terhubung (putus), tetapi kadang-kadang selama digitalisasi manual ini tidak terjadi. Saya perlu menemukan dan memperbaiki semua kesalahan ini. Saya menggunakan v.clean
dari GRASS GIS dan secara otomatis membentak banyak simpul, yang bagus, tetapi beberapa garis terputus lebih jauh dari toleransi yang saya berikan dan jika saya meningkatkan toleransi terlalu banyak itu mulai menghasilkan jenis kesalahan lainnya.
Ada ide?
Jawaban:
Pemahaman saya tentang masalahnya adalah sebagai berikut:
Jika titik akhir polyline memotong poligon, maka polyline harus dihubungkan (dengan menambah atau menyesuaikan simpul) ke semua titik akhir polyline tambahan yang memotong poligon yang sama.
Beberapa titik akhir polyline tidak memotong poligon, menjadi undershoots, tetapi ini harus dihubungkan seperti di atas.
Jawaban ini didasarkan pada beberapa yang sudah diberikan, tetapi tidak lengkap karena saya tidak mengetahui semua perintah QGIS - mungkin orang lain dapat menambahkan ini?
Untuk setiap polyline, ekstrak koordinat titik akhir ( Vektor> Alat Geometri> Ekstrak node kemudian rapikan) dan hitung apakah mereka berada dalam poligon ( Vektor> Alat Penelitian> Pilih berdasarkan Lokasi ).
Untuk titik akhir polyline yang berada dalam poligon, perluas ujung polyline tersebut ke tengah poligon (Ekstrak pusat poligon menggunakan Vector> Geometry Tools> Polygon centroid , tidak yakin tentang modifikasi garis, meskipun Anda mungkin dapat bekerja dengan simpul polyline sebagai titik dan tambahkan yang tambahan dengan penomoran yang sesuai sebelum merekonstruksi polyline yang dimodifikasi menggunakan plugin Points to Paths)
Anda menyebutkan bahwa mungkin ada situasi di mana beberapa atau semua garis telah terhubung dengan benar, dalam situasi ini (dapat diidentifikasi oleh titik akhir polyline bertepatan) Anda dapat memilih untuk menggunakan lokasi titik akhir coincident bukannya poligon centroid sebagai titik untuk memperpanjang setiap polyline tambahan yang tidak terhubung ke untuk poligon itu.
Untuk titik akhir polyline yang berada di luar poligon, perluas ujung polyline tersebut ke tengah poligon terdekat. Sekali lagi, saya tidak yakin tentang menghitung poligon terdekat, meskipun modul GRASS v.distance terlihat melakukan triknya.
sumber
Saya pikir saya bisa melakukannya dengan beberapa algoritme khusus ... Perhatikan dengan pasti bagaimana Anda ingin mengimplementasikannya, tapi saya pikir itu akan berhasil.
Untuk setiap baris, untuk setiap titik akhir, lakukan satu titik dalam poligon untuk titik di titik akhir dan hubungkan ke poligon.
Kemudian, untuk setiap poligon, jika ada lebih dari satu titik akhir yang terhubung, saya akan menggabungkan (memindahkan) semuanya ke koordinat rata-rata, atau ke pusat massa poligon mungkin.
Itu sangat sederhana. Tetapi tidak tersedia di operator standar. Saya pikir itu bisa dilakukan di ArcGIS dengan waktu coding hari.
Catatan lain, pada gambar yang Anda posting, salah satu garis berada di luar poligon ... Anda bisa menangani ini dengan cara yang lebih sederhana dengan hanya menemukan simpul terdekat ke setiap ujung simpul, memastikan bahwa kedekatannya saling menguntungkan (saya pikir itu adalah diperlukan, sehingga Anda memiliki simpul hanya dalam satu cara), maka Anda dapat memindahkannya ke posisi rata-rata dari simpul.
sumber
Masalah menarik! Saya tidak bisa memikirkan cara untuk melakukan pemotretan secara otomatis, tetapi inilah langkah dalam mengidentifikasi area untuk setidaknya mencari koreksi manual:
Bergantung pada situasi (jumlah fitur, jumlah yang ada dalam situasi ini vs yang tidak, dll.) Ini dapat menghemat waktu Anda.
EDIT: Anda mungkin juga ingin menggunakan poligon dengan jumlah 2 untuk membuat sub-set lapisan garis Anda, kemudian jalankan pembersihan pada mereka yang memiliki toleransi lebih besar agar tidak mengubah fitur lainnya.
sumber
setelah Anda memiliki titik akhir, saya akan melakukan diagram laba-laba yang mengambil centroid poligon sebagai fasilitas dan titik akhir dari garis terdekat sebagai target. Anda melakukan analisis diagram laba-laba dan sebagai hasilnya Anda akan memiliki segmen untuk setiap polyline.
Ini akan bekerja bahkan untuk mereka yang berakhir di luar poligon. Bagaimana melakukannya di QGIS saya tidak tahu, maaf, tapi saya akan melakukan ini dalam produk-produk ESRI yang saya ketahui dengan baik. Itulah yang saya mengerti ketika whuber, dalam balasan pertama, menyarankan untuk membangun "bintang".
Saya cukup yakin ada orang di sini yang tahu bagaimana melakukan analisis seperti itu di QGIS
sumber