Tüm seviye poligonlarının mevcut olduğu kontur haritası.
Tüm köşeleri tam konumlarında tutularak çokgenleri nasıl düzgün tutacağınızı soralım mı?
Aslında, kontur bir ızgara verilerinin üstüne yapılır, daha sonra ızgara verilerini yumuşatmayı önerebilir ve bu nedenle ortaya çıkan kontur daha yumuşak olur. Gaussian filtresi gibi yumuşatma işlevi küçük veri paketlerini kaldıracağı ve üçüncü değişkenin aralığını değiştirecek, örneğin uygulamamda izin verilmeyen yükseklik.
Aslında 2B çokgenlerin (herhangi bir tür: dışbükey, içbükey, kendiliğinden kesişen vb.) Düzgünleştirilmesini (herhangi bir tür: dışbükey, içbükey, kendi kendine kesişen vb.) Makul derecede ağrısız (kod sayfalarını unutun) ve doğru bir kod parçası (tercihen Python'da ) arıyorum .
Bilginize, ArcGIS'te bunu mükemmel yapan bir işlev var , ancak üçüncü taraf ticari uygulamaları kullanmak bu soru için benim tercihim değil.
1)
Scipy.interpolate:
Gördüğünüz gibi ortaya çıkan lekeler (kırmızı) tatmin edici değil!
2)
Burada verilen kodu kullanarak sonucudur burada . İyi çalışmıyor!
3)
Bana göre en iyi çözüm, bir karenin aşamalı olarak yalnızca bir değeri değiştirerek düzeltildiği aşağıdaki şekildeki gibi olmalıdır. Çokgenlerin herhangi bir biçimini düzeltmek için benzer bir kavram umuyorum.
Spline koşulunu yerine getirmek puanları geçer:
4)
İşte benim veri üzerinde Python'da satır satır "whuber's fikri" . Sonuçlar iyi olmadığı için bazı hatalar olabilir.
K = 2 bir felakettir ve bu nedenle k> = 4'tür.
5)
Sorunlu konumdaki bir noktayı kaldırdım ve ortaya çıkan spline artık whuber'inkiyle aynı. Ancak bu, yöntemin neden tüm durumlar için işe yaramadığı sorusudur?
6)
Whuber'un verileri için iyi bir pürüzsüzleştirme, ilave bir noktanın sorunsuz bir şekilde eklendiği (güncelleme ile karşılaştırılan) aşağıdaki gibi olabilir (vektör grafik yazılımı ile çizilir)
4):
7)
Bazı ikonik şekiller için whuber kodunun Python versiyonunun sonucuna bakın:
Bu yöntemin polilinler için işe yaramadığını unutmayın . Köşe polyline için (kontur) yeşil istediğim ama kırmızı aldım. Kontur haritaları her zaman poliller olduğundan, ele alınmasına ihtiyaç vardır, ancak kapalı poliller örneklerimdeki gibi çokgenler olarak da kullanılabilir. Ayrıca 4. güncellemede ortaya çıkan sorunun henüz ele alınmadığı da söylenemez.
8) [son]
İşte son çözüm (mükemmel değil!):
Yıldızların işaret ettiği bölge hakkında bir şeyler yapmanız gerekeceğini unutmayın. Kodumda bir hata olabilir veya önerilen yöntem tüm durumları göz önünde bulundurmak ve istenen çıktıları sağlamak için daha fazla geliştirmeye ihtiyaç duyar.