Berikut adalah peta kontur yang tersedia untuk semua poligon levelnya.
Mari kita tanyakan bagaimana cara menghaluskan poligon menjaga semua simpul dipertahankan di lokasi yang tepat?
Memang kontur dibuat di atas data kisi, Anda dapat menyarankan untuk memuluskan data kisi dan karenanya kontur yang dihasilkan akan lebih halus. Perhatikan bahwa ini tidak berfungsi sesuai keinginan saya karena fungsi penghalusan seperti filter Gaussian akan menghapus paket kecil data dan akan mengubah rentang variabel ketiga mis. Tinggi yang tidak diperbolehkan dalam aplikasi saya.
Sebenarnya saya sedang mencari sepotong kode (lebih disukai dengan Python ) yang dapat melakukan smoothing dari poligon 2D (semua jenis: cembung, cekung, berpotongan diri dll) cukup menyakitkan (lupa halaman kode) dan akurat.
FYI, ada fungsi di ArcGIS yang melakukan ini dengan sempurna, tetapi menggunakan aplikasi komersial pihak ketiga bukanlah pilihan saya untuk pertanyaan ini.
1)
Scipy.interpolate:
Seperti yang Anda lihat, splines yang dihasilkan (merah) tidak memuaskan!
2)
Ini hasilnya menggunakan kode yang diberikan di sini . Itu tidak berfungsi dengan baik!
3)
Bagi saya solusi terbaik haruslah sesuatu seperti gambar berikut di mana sebuah persegi sedang dihaluskan secara bertahap dengan mengubah hanya satu nilai. Saya berharap konsep serupa untuk menghaluskan segala bentuk poligon.
Memuaskan kondisi yang spline melewati poin:
4)
Ini adalah implementasi saya dari "ide ide" baris demi baris dengan Python pada datanya. Mungkin ada beberapa bug karena hasilnya tidak bagus.
K = 2 adalah bencana dan untuk k> = 4.
5)
Saya menghapus satu titik di lokasi bermasalah dan spline yang dihasilkan sekarang identik dengan milik whuber. Tetapi masih menjadi pertanyaan mengapa metode ini tidak bekerja untuk semua kasus?
6)
Perataan yang baik untuk data whuber dapat berupa sebagai berikut (digambar oleh perangkat lunak grafik vektor) di mana titik ekstra telah ditambahkan dengan lancar (bandingkan dengan pembaruan
4):
7)
Lihat hasil dari versi Python dari kode whuber untuk beberapa bentuk ikon:
Perhatikan bahwa metode ini tampaknya tidak berfungsi untuk polyline. Untuk sudut polyline (kontur) hijau adalah yang saya inginkan tetapi mendapat merah. Ini perlu diatasi karena peta kontur selalu polylines meskipun polyline tertutup dapat diperlakukan sebagai poligon seperti pada contoh saya. Juga bukan masalah yang muncul di pembaruan 4 belum diatasi.
8) [yang terakhir]
Inilah solusi terakhir (tidak sempurna!):
Ingatlah bahwa Anda harus melakukan sesuatu tentang area yang ditunjukkan oleh bintang. Mungkin ada bug dalam kode saya atau metode yang diusulkan perlu pengembangan lebih lanjut untuk mempertimbangkan semua situasi dan untuk memberikan hasil yang diinginkan.