Menyamaratakan file poligon sambil mempertahankan topologi di QGIS?

35

Saya memiliki Shapefile poligon, yang perlu saya generalisasi. Bagaimana saya bisa menggeneralisasi poligon dan memastikan bahwa tidak ada kesalahan topologi seperti "sliver".

Saya sudah mencoba:

  1. Vektor -> Alat Geometri -> poligon ke garis
  2. Vektor -> Alat Geometri -> geometri yang simpel ... di sini saya sudah dapat melihat di layar, bahwa saya menghasilkan tumpang tindih dan kesenjangan namun sekarang saya mencoba
  3. Vektor -> Alat Geometri -> garis ke poligon

dan di sini programnya menunjukkan kesalahan dan crash

masukkan deskripsi gambar di sini

Kurt
sumber
Apakah ada berita tentang masalah ini?
Oystein
sayangnya: tidak
Kurt

Jawaban:

16

GRASS sadar akan topologi. Anda dapat menggunakan v.generalisasi dari kotak alat Pemrosesan untuk menyederhanakan poligon dan jika data input benar secara topologi, hasilnya juga akan keluar.

masukkan deskripsi gambar di sini

underdark
sumber
menggunakan windows-installer saya mendapatkan kesalahan (dependensi hilang), ketika saya mencoba menjalankan v.generalisasi. Apakah perlu konfigurasi khusus?
Kurt
@Kurt: Pemasang yang berdiri sendiri? Tidak yakin versi GRASS yang dicakupnya. Dalam Pengaturan pemrosesan, Anda dapat menentukan apakah GRASS 6.x atau 7.x dan di mana ia diinstal. Cobalah untuk menyesuaikan konfigurasi ini dengan pengaturan Anda.
underdark
ya, saya menggunakan penginstal stanalone. Mengikuti saran Anda, saya menonaktifkan rumput 7 melalui opsi pemrosesan dan mengkonfigurasi path ke qrass 6 dengan benar. jalan ini tidak benar, sisa dari qgis yang lebih tua. Sekarang saya dapat menjalankan v.generalisasi, tetapi pada akhirnya saya mendapatkan kesalahan baru: Output layer tidak dapat dibuka dan akhirnya pesan mengatakan bahwa rumput tampaknya telah diinstal dan dikonfigurasi dengan benar. bisa tolong beri saya saran atau petunjuk?
Kurt
Biasanya kesalahan ini berarti bahwa geoproses gagal pada beberapa tahap. Anda harus memeriksa log yang dihasilkan saat alat berjalan untuk melihat di mana kesalahan terjadi.
underdark
7

Ini dapat dilihat sebagai pendahuluan untuk jawaban @ Underdark di mana Anda dapat membersihkan topologi dari layer vektor sebelum generalisasi. GRASS memiliki fungsi v.clean yang berisi sejumlah alat untuk memperbaiki lapisan seperti:

  • snap garis mana yang 'terkunci' ke titik terdekat
  • rmdangle yang menghilangkan dangles yang mengganggu
  • rmdupl yang menghapus fitur geometri duplikat

dan berbagai lainnya yang ditunjukkan pada gambar di bawah:

v.clean

Anda juga dapat mengatur ambang tergantung pada seberapa sensitif Anda ingin alat untuk dijalankan. Secara pribadi, saya cenderung menggunakan fitur Periksa Geometry Validity di QGIS ( Vector > Geometry Tools > Periksa Geometry Validity ) untuk memeriksa kesalahan dan jika ada, gunakan alat yang sesuai di v.clean . Setelah kesalahan dihapus, Anda harus berada dalam posisi yang lebih baik untuk menggeneralisasi.

Semoga ini membantu!

Yusuf
sumber
3
Dan jika pengurangan titik sederhana sudah mencukupi, v. Generalisasi tidak perlu, karena alat prune dapat melakukannya.
Gabor Farkas
terima kasih atas pendahuluan Anda untuk jawaban @ Underdark, yang berisi info berharga. walaupun saya tidak secara eksplisit mengatakannya, tentu saja file poligon, yang ingin saya generalisasi, secara topologi bersih [karena; sampah - sampah keluar :-)]
Kurt
@Urt, itu masuk akal :)
Joseph
2

Sudahkah Anda mencoba menggunakan MapShaper ? Saya menemukan ini sebagai cara yang baik untuk menggeneralisasi poligon; ada juga versi offline jika Anda ingin mengunduh kodenya.

Alternatif dapat mengonversikan ini ke GeoJson, dan kemudian TopoJson yang mendukung "penyederhanaan bentuk pelestarian topologi" https://github.com/mbostock/topojson

djq
sumber
Sudah mencoba Mapshaper, ini benar-benar alat yang hebat
Kurt
1
satu lagi komentar: Seperti judulnya: Saya mencari solusi dengan qgis. Mapshaper karena itu tidak mempertahankan topologi (Bukti untuk diri sendiri dengan melakukan generalisasi yang sangat kuat!). Topojson: ini adalah sekelompok javascript-sourcecode, yang hanya berguna bagi programmer
Kurt
Ups, ketinggalan aspek QGIS saja. QGIS memang menangani geojson; Saya bertanya-tanya apakah masuk akal untuk bekerja dalam fungsi penyederhanaan topojson menjadi plugin QGIS untuk membuatnya dapat diakses oleh non-programmer
djq
Saya melanjutkan baris di luar topik: OpenJUMP memiliki alat "Sederhanakan Cakupan Poligon" untuk tujuan ini.
user30184
0

Saya baru saja melakukan tes cepat, dan alat "Simplify Geometries 'di bawah menu Vector tampaknya menghormati topologi. Saya mencoba dengan dan tanpa" Aktifkan pengeditan topologi "dicentang di bawah Pilihan Snapping. Sudahkah Anda mencoba ini?

EDIT: Ini dilakukan langsung pada file poligon - mengapa Anda mengkonversi ke baris terlebih dahulu?

Darren Cope
sumber
Hai Darren, terima kasih atas petunjuknya, saya akan mencobanya dengan pengeditan topologi yang memungkinkan
Kurt
1
Hai Darren, hai itu tidak menghormati topologi. tidak ada perbedaan dengan "aktifkan pengeditan topologis". Saya kira, ini karena generalisasi menghasilkan lapisan baru , sementara "aktifkan pengeditan topologis" tampaknya hanya berfungsi dengan -seleksi - lapisan yang ada. Bisakah Anda melakukan gerneralization yang sangat kuat dan periksa lagi, jika Anda memiliki topologi yang benar sekarang? terima kasih
Kurt
1
Kurt; Menarik. Sepertinya Anda benar ketika melakukan generalisasi yang kuat! Maaf!
Darren Cope
1
Kotak centang ini hilang di QGIS 2.2 (mungkin sebelumnya) kalau-kalau ada yang akan mencari.
lynxlynxlynx
0

Ada diskusi yang sama di sini , jawaban terakhir saya adalah bahwa SAGA melakukan pekerjaan untuk Anda.

Niculita Mihai
sumber
Mengikuti jawaban Anda dalam diskusi itu, tampaknya SAGA tidak mempertahankan topologi. Setidaknya tidak lagi.
Oystein