General model structure
This document explains the general structure of the new geometry model.
The new geometry model has two important characteristics:
- It's developed from the old gvSIG's geometry model, trying to do the lowest impact on the developed code.
- We try to approach to the ISO19107 model.
To understand the new model you must know this two characteristics because, besides we try to have a model similar to the ISO19107 model, in some cases it wasn't possible to do it and we had to do some contradictions of what the ISO's model says to keep the compatibility with the written code.
The next figure shows the main hierarchy of the new geometry model:
In this figure, we can see the Geometry class and all the inherit classes of it. The depency with java.awt.Shape is kept for backward compatibility reasons, but it's possible that in future versions it disappears.
Exists three main geometry types:
- Primitives (inherited from Primitive): It's the most basic geometry type. Points, lines and polygons are examples of primitive geometries.
- Complex (inherited from Complex): It must have a similar behavior with the primitive geometries (all of them have the same interface), but are built with the union of several polygons, a polygon with filled polygons, a curve composed with several curves...
- Aggregate (inherited from Aggregate): They are composed from the union of several primitive or complex geometries.
All the existing geometries must implement one of this three interfaces, depending of the geometry's kind. There're a detailed explanation of each one on the ISO19107's especification.