Menyederhanakan poligon untuk linestring?


16

Saya ingin menyederhanakan beberapa poligon yang mewakili sungai menjadi linestrings. Saya berasumsi bahwa lubang dalam poligon dapat dihilangkan. Adakah yang punya ide bagus bagaimana melakukannya?

Akan lebih baik, jika mungkin dilakukan secara langsung di postgis atau oleh alat open source lain, tetapi deskripsi algoritma singkat akan cukup.

Jawaban:


13

Tautan tidak berfungsi lagi, Julien: apakah Anda pikir Anda bisa memberikan ringkasan algoritma atau setidaknya referensi formal untuk memungkinkan orang mencari makalah?
whuber

Ya, saya telah memperbarui jawabannya dengan referensi yang tepat ke artikel yang lebih baru.
julien

2
Terima kasih! (Tidak dapat menambahkan upvote lain - saya hanya punya satu untuk memberi. :-)
whuber

4

Di PostGIS 2.2 dengan SFCGAL, ini dapat dilakukan dengan ST_StraightSkeleton atau ST_ApproximateMedialAxis , tergantung pada kriteria Anda.


2

plugin JUMP skeletonizer tersedia sebagai bagian dari openjump http://www.openjump.org


1

Sama seperti peringatan, saya belum pernah mencoba ini sebelumnya. Keberhasilan Anda akan tergantung pada kualitas data yang Anda miliki saat ini.

Jadi, pikirkan poligon sebagai strip segitiga. Setiap segitiga terhubung ke sebuah titik di sisi yang berlawanan dari koridor dengan sebuah tepi. Sekarang, untuk masing-masing tepi di koridor, cukup letakkan simpul tepat di tengahnya. Verteks baru ini adalah poin dari linestring Anda. Anda mungkin bisa mengutak-atik bagaimana Anda memilih titik tengah di tepi untuk akurasi yang lebih besar.


0

Sekali lagi, ET GeoWizards mungkin jawabannya. Coba buat Centerlines dari alat Polygons .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.