Saya memiliki grafik jaringan yang perlu saya sederhanakan dalam arti mengurangi jumlah edge . Idenya adalah untuk menggabungkan node yang terletak berdekatan dan menghapus tepi pendek yang menghubungkan.
Bagaimana ini bisa dicapai dalam PostGIS atau GRASS? Atau ada pendekatan yang lebih baik untuk secara otomatis menyederhanakan jaringan seperti ini?
Saya sudah mencoba fungsi ST_SnapToGrid tapi saya tidak puas dengan hasilnya (abu-abu = asli, hitam = bentak):
Jawaban:
Yang paling dekat saya datang sejauh ini adalah ini:
Ini mematahkan jalan dengan toleransi 5 meter dan menghapus semua garis panjang nol. Ini bukan solusi optimal karena tampaknya snap agak acak ke beberapa titik.
sumber
Sudahkah Anda mencoba GRASS v.generalisasi ?
v.generalize
memungkinkan Anda untuk memilih algoritma generalisasi dengan atribut metode . Ada banyak: douglas, douglas_reduction, lang, reduksi, reumann, boyle, sliding_averaging, distance_weighting, chaiken, hermite, ular, jaringan, perpindahan .Dan parameter tambahan sebagai
threshold
,degree_thresh
,angle_thresh
(tergantung pada algoritma yang dipilih) dapat membantu Anda untuk mendapatkan hasil yang akurat.Di sinilah tutorial .
sumber
Saya belum melakukan ini tetapi saya pikir saya bisa menyarankan arah.
ST_ModEdgeHeal akan menggabungkan satu sisi ke sisi lainnya. ST_NewEdgeHeal akan menggantikan keduanya dengan keunggulan baru.
Manual Topologi PostGIS
sumber
@underdark, saya melihat bahwa Anda telah menulis alat untuk memperbesar garis di Sextante. Karena itu saya menyarankan algoritma berikut untuk menghindari "acak" membentak salah satu poin Anda.
Pilih segmen garis yang ingin Anda singkirkan berdasarkan panjangnya.
Untuk masing-masing segmen tersebut, buat titik di titik tengah
Hapus segmen kecil
Sekarang Anda dapat menggunakan ST_Snap di PostGIS (lihat contoh di sini )
EDIT: perhatikan bahwa dalam kasus Anda, Anda juga bisa menggunakan v.net terlebih dahulu untuk menghapus pseudo-node (node yang menghubungkan hanya dua baris)
sumber
Meneruskan bagaimana Michaël Michaud menganalisis ini pada daftar pengembang OpenJUMP:
sumber