Bueno después de unos días intentando realizar este script (después de muchas vueltas), inspirado en una duda de @franzpc (visitar su blog, tiene contenido muy interesante) sobre si gvSIG podía suavizar polígonos. No estoy seguro si esto es exactamente lo que buscaba, o si a alguno os servirá este código pero espero que al menos sirva para demostrar el potencial que tiene el módulo de Scripting.
Iré explicando el script poco a poco durante los próximos post. He decidido dividirlo en diferentes scripts, para hacer todo el proceso por pasos y ir comprobando como va.
Este conjunto de scripts realizará una suavizado de polígonos, es decir, vamos a aumentar el número de vertices, para suavizar las esquinas y que las formas no sean tan geométricas. En las siguientes imágenes podéis ver todos los pasos y comparar el resultado final con el inicial.
En principio debería de funcionar con cualquier geometría 2D, pero puede ser (bastante seguro) que el programa contenga algún error y pueda llegar a dar fallos. De todas formas poco a poco y si os sale alguno, comunicarmelo y lo intentaré solucionar.
La intención de hacerlo de este modo es que se puedan hacer correcciones en los pasos intermedios si fuera necesario. También podríamos elegir el factor de suavizado cambiando un valor.
Los pasos a seguir son varios:
- Crear capa de puntos con los vértices y los puntos medios de sus lados – script
- Unir todos los puntos en un polígono de nuevo – script
- Suavizar los vértices respecto a las lineas comprendidas entre los puntos medios – script
- Unir todos los puntos en un polígono nuevo ya suavizado (mismo script que el paso 2) – script
Si al acabar queremos suavizarlo más, deberíamos de repetir los pasos y no habría problema.