Estructura general del modelo
Este documento explica la estructura general del nuevo modelo de geometrías
El nuevo modelo de geometrías tiene dos características a destacar:
- Se ha creado a partir del viejo modelo de geometrías de gvSIG intentado que el impacto sobre el código ya desarrollado fuera el menor posible.
- Se ha intentado aproximar al modelo de la ISO19107.
Para entender el nuevo modelo no hay que perder de vista estas dos características ya que, si bien se ha intentado tener un modelo similar al de la ISO19107, en algunos casos no ha sido posible hacerlo y se han tenido que tomar decisiones contradictorias con el modelo de la ISO con el fin de mantener la compatibilidad con el código ya escrito.
La siguiente figura muestra la jerarquía principal del nuevo modelo de geometrías:
En ella se puede ver la clase Geometry y todas las clases de las que hereda. La dependencia con java.awt.Shape se mantiene por motivos de compatibilidad hacia atrás, pero es posible que en futuras versiones desaparezca.
Existen tres tipos de geometrías principalmente:
- Primitivas (que heredan de Primitive): Tipo de geometría más básico. Los puntos, líneas y polígonos son ejemplos de geometrías primitivas.
- Complejas (que heredan de Complex): Tienen que tener un comportamiento similar al de las geometrías primitivas (tienen el mismo interfaz), pero están formadas por la unión de varias de ellas. Un ejemplo de este tipo de geometrías puede ser un sólido formado por varios polígonos, un polígono con polígonos de relleno, una curva formada por varias curvas...
- Múltiples (que heredan de Aggregate): Formadas por la unión de varias geometrías primitivas o complejas.
Todas las geometrías existentes deberán implementar una de estas tres interfaces, en función del tipo de geometría que sea. La explicación detallada de cada uno de ellas se puede encontrar el especificación ISO19107