El desarrollo de pequeñas aplicaciones relacionadas con información geográfica encuentra uno de sus principales problemas en la formación y tratamiento de polígonos.
Los Sistemas de Información Geográfica (SIG) tienen solucionadas las tareas de poligonación desde hace décadas, algunos de ellos con estructuras topológicas altamente fiables.
Sin embargo, a veces lo que se busca es incorporar algunas de las funciones básicas de manejo de polígonos a pequeñas aplicaciones:
- cálculo de áreas
- perímetros
- centroides
- sombreados de color, etc.
los cuales no necesitan de toda la potencia brindada por las estructuras de datos verdaderamente topológicas de un GIS.
Existe un Algoritmo para la creación de polígonos a partir de estructuras de líneas SIN TOPOLOGÍA GIS.
Los pasos de los que consta este algoritmo son:
- Localizar la línea más próxima al punto de entre toda la red de líneas (línea base).
- Orientar dicha línea más cercana con respecto al punto y seleccionar el vértice adecuado de los dos posibles (el de la izquierda relativa).
- Seleccionar el resto de líneas que tienen dicho vértice en común.
- Sobre estas líneas seleccionadas, calcular los ángulos máximos en el sentido contrario de las agujas del reloj.
- Seleccionar la línea con un ángulo mayor con respecto a la línea tomada como base.
- Reconfigurar como nueva línea base la línea seleccionada en el paso anterior y repetir desde el paso 3: Selección de líneas sobre el nodo final, cálculo de ángulos y comprobación del nodo final.
- Si el nodo final es igual que el nodo inicial en el que empezó el polígono, terminar el proceso. Si no hay más líneas que elegir y el nodo final no es igual al inicial, entonces el polígono está abierto y también se termina el proceso.
- En el caso de que el polígono no esté abierto, seleccionar todas las líneas que forman el polígono y operar con ellas para lo que sea necesario; por ejemplo: cálculo de áreas, perímetros, centroides, sombreado de color, etc
Los procesos de cómo ejecutar cada paso de este algoritmo los encontramos en un artículo publicado por Gabrial Ortiz; todo en un pequeño programa realizado en Visual Basic que desarrolla el algoritmo aquí propuesto.
Tanto el código fuente de esta aplicación demostrativa (en versiones Visual Basic y Java), como su fichero ejecutable están disponibles en: http://www.gabrielortiz.com/index.asp?Info=051a
No te lo pierdas; es muy interesante!
No hay comentarios:
Publicar un comentario