[Java-collab] Re: [Geotools-devel] GeoTools moving forward
Martin Desruisseaux
martin.desruisseaux at geomatys.fr
Fri Oct 10 15:43:52 EDT 2008
Sunburned Surveyor a écrit :
> Martin,
>
> You wrote: "However this
> specification has been replaced by ISO 19107, which serve the same purpose than
> OGC 01-009 but with a better structure."
>
> Are there interfaces in GeoAPI, or in your own code, that represent
> the structure defined in ISO 19107? Is there a single object that can
> be used to identify coordinate reference systems?
Yes GeoAPI tries to follow ISO 19111 closely, with (hopefully minor) departures:
* For historical reasons (because ISO 19111 changed with time). Example:
GeographicCRS was defined in ISO 19111 around year 2001 (from memory),
so GeoAPI defined this interface as ISO said. Later ISO 19111 revision
(around year 2003 if my memory serve me right) removed GeographicCRS,
which has been retrofitted in GeodeticCRS. However we did not removed
the GeographicCRS interface from GeoAPI because it was widely used, was
not in contradiction with GeodeticCRS in any way and we feel it was a
useful way to distinguish from GeocentricCRS.
* When a particular interface was defined from OGC 01-009 but had no
equivalent in ISO 19111, and when that particular interface was
considered needed, we ported the interface from OGC 01-009.
MathTransform is the best example.
* When a ISO 19111 name conflict with Java naming convention, we adapt
to Java naming convention. For example ISO/OGC tends to prefix every
class name by a package abbreviation like "SC_", which is not Java
usage. However we mention the ISO name in javadoc.
The object that represent a coordinate reference system in GeoAPI is
CoordinateReferenceSystem:
http://geoapi.sourceforge.net/snapshot/javadoc/org/opengis/referencing/crs/CoordinateReferenceSystem.html
Observations:
* Note the @UML annotation: it said clearly where this interface come from.
So the ISO name for that interface is "SC_CRS" as the annotation said.
* In this particular case, most methods are inherited from the parent
interfaces. Most methods are defined in ISO 19111 except "toWKT()",
which is a GeoAPI extension. Such extensions are clearly documented
with a @Extension annotations, so you can see what is ISO standards
and what has been added as part of GeoAPI project.
* In CoordinateReferenceSystem interface, note the "Departure from ISO
specification" at the bottom of the javadoc page. This is an other
example of the effort we make for complying to ISO standards, and
when we do a departure explain why. Note also that the departure is
minor - in this class this is a method declared one interface higher
in the hierarchy.
Martin
More information about the Java-collab
mailing list