[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