Registro de tipos de geometrías
Este documento explica cómo se deben registrar los tipos de geometrías.
.. include-document:: org.gvsig.fmap.geom/reference-links :rest: Todas las geometrías que se quieran utilizar en la aplicación tienen que tener un tipo (GeometryType_) que ha tenido que ser registrado previamente. Si se intenta crear una geometría de un tipo que no haya sido registrado mediante el GeometryManager_, se obtendrá una exceptión del tipo CreateGeometryException_. Para registrar un nuevo tipo de geometría primero hay que obtener una instancia del GeometryManager_ y a continuación se debe registrar la implementación del tipo de geometría para lo que tendremos que conocer el tipo y el subtipo de geometría. Los diferentes tipos de geometrías se encuentran definidos en TYPES_ mientras que los subtipos están en SUBTYPES_. En el siguiente ejemplo se muestra cómo registrar un punto en 2 dimensiones (se asume que existe una clase Point2D que hereda de Geometry_). .. code-block:: java geometryManager.registerGeometryType(Point2D.class, "Point2D", TYPES.POINT, SUBTYPES.GEOM2D); El método *registerGeometryType* tiene 4 argumentos. El primero de ellos, es la clase que contiene la implementación de la geometría; el segundo es el nombre con el que se va a registrar y el tercero y el cuarto son el tipo y el subtipo de la geometría. En este caso, lo que se está registrando es la geometría por defecto para el tipo punto en 2 dimensiones. Al invocar este método, el mánager asociará al tipo y al subtipo especificados la implementación de la geometría que se le pasa como primer parámetro, de forma que cuando se cree una geometría con esos tipos, el manager devolverá una instancia de la clase Point2D. El siguiente ejemplo muestra cómo registrar un punto en 3D. El ejemplo asume que existe una clase Point3D que hereda de Geometry_ y que implementa a un punto en 3 dimensiones: .. code-block:: java geometryManager.registerGeometryType(Point3D.class, "Point3D", TYPES.POINT, SUBTYPES.GEOM3D); Otro ejemplo es el de registrar una geometría de tipo círculo. El ejemplo asume que existe una clase Circle2D que hereda de Geometry_ y que implementa a un círculo en 2 dimensiones: .. code-block:: java geometryManager.registerGeometryType (Circle2D.class, "Circle2D", TYPES.CIRCLE, SUBTYPES.GEOM2D);