Aquí hay un mapa de contorno para el que están disponibles todos los polígonos de niveles.
Deje que pregunte cómo suavizar los polígonos manteniendo todos los vértices conservados en sus ubicaciones exactas.
De hecho, el contorno se hace encima de los datos de una cuadrícula, puede sugerir que se suavicen los datos de la cuadrícula y, por lo tanto, el contorno resultante será más suave. Tenga en cuenta que esto no funciona como deseo, ya que la función de suavizado, como el filtro gaussiano, eliminará pequeños paquetes de datos y cambiará el rango de la tercera variable, por ejemplo, la altura que no está permitida en mi aplicación.
En realidad estoy buscando un fragmento de código (preferiblemente en Python ) que pueda suavizar polígonos 2D (cualquier tipo: convexo, cóncavo, auto-intersección, etc.) razonablemente indoloro (olvídate páginas de códigos) y precisa.
Para tu información, hay una función en ArcGIS que hace esto perfectamente, pero el uso de aplicaciones comerciales de terceros no es mi elección para esta pregunta.
1)
Scipy.interpolate:
¡Como ves, las splines resultantes (rojo) no son satisfactorias!
2)
Aquí está el resultado usando el código dado en aquí . ¡No está funcionando bien!
3)
Paramí,lamejorsolucióndeberíaseralgocomolasiguientefiguraenlaqueuncuadradosesuavizagradualmentecambiandosolounvalor.Esperounconceptosimilarparasuavizarcualquierformadepolígonos.
Satisfacer la condición de que la spline pase los puntos:
4)
Aquíestámiimplementacióndela"idea de Whuber" línea por línea en Python en sus datos. Posiblemente hay algunos errores ya que los resultados no son buenos.
K=2esundesastre,porloqueparak>=4.
5)
EliminéunpuntoenlaubicaciónproblemáticaylasplineresultanteahoraesidénticaaladeWhuber.Perosiguesiendounapregunta:¿porquéelmétodonofuncionaentodosloscasos?
6)
Un buen suavizado para los datos de Whuber puede ser el siguiente (elaborado por el software de gráficos vectoriales) en el que se ha agregado un punto adicional sin problemas (comparar con la actualización
4):
7)
VeaelresultadodelaversióndePythondelcódigodeWhuberparaalgunasformasicónicas:
Note que el método parece no funcionar para polilíneas. Para la polilínea de la esquina (contorno) el verde es lo que quiero pero se volvió rojo. Esto debe abordarse ya que los mapas de contorno son siempre polilíneas, aunque las polilíneas cerradas se pueden tratar como polígonos como en mis ejemplos. Tampoco es que el problema surgido en la actualización 4 aún no se haya resuelto.
8) [mi última]
Aquí está la solución final (¡no es perfecta!):
Recuerda que tendrás que hacer algo respecto al área señalada por las estrellas. Quizás haya un error en mi código o el método propuesto necesite un mayor desarrollo para considerar todas las situaciones y proporcionar los resultados deseados.