Hello all
Following on the addition of Envelope classes, there is a tiny
introduction to the most basic ISO 19107 (geometry) objects.
The root of all geometric objects in ISO 19107 is GM_Object. But GeoAPI
uses the Geometry name instead.
There is two objects representing points in ISO 19107:
* GM_Point (simply named Point in GeoAPI) is a GM_Object (GeoAPI:
Geometry) sub-type. Like every geometries, it may be relatively
heavy depending on the geometry library implementation.
* DirectPosition is a lightweight structure containing only ordinate
values associated to a Coordinate Reference System (CRS).
DirectPosition are *not* geometries in the classes hierarchy.
* In C/C++, Position is an /union/ (in the C/C++ sense) of GM_Point
and DirectPosition, allowing the same API to work with one or other
type. Since unions do not exist in Java, GeoAPI simulate the union
effect by defining Position as a parent interface of both Point and
DirectPosition.
In ISO 19107, Envelope is simply defined by the DirectPosition of 2
corners. Like DirectPosition, Envelope is a relatively lightweight
structure, not a geometry sub-type.
GeoAPI and SIS defines many additional methods for envelopes, but the
internal structure stay lightweight: only the corner ordinate values and
the CRS.
Martin