Hello all
In the "org.apache.sis.referencing" package (link below), there is now 3
enumerations for frequently used geodetic objects - mostly datum for
now, Coordinate Reference Systems (CRS) will come later. However I'm
unhappy about the enumeration names. Below is the purpose of those
enumerations, followed by the problem and possible solutions.
Reference: classes listed in the "Enum summary" tab of
https://builds.apache.org/job/sis-jdk7/site/apidocs/org/apache/sis/referencing/package-summary.html
The purpose
-------------------------
Our most definitive way to get geodetic objects is to query the EPSG
database (to be ported later), which contain thousands of object
definitions (CRS, ellipsoids, etc). However some geodetic objects are
used so frequently that it is worth to provide convenience constants for
them. Some very frequently used geodetic objects are: the Greenwich
prime meridian, the WGS 84 ellipsoid, the WGS 84 datum, etc.
In Geotk, each implementation classes (DefaultPrimeMeridian,
DefaultEllipsoid, etc.) provided "public static final" constants for
frequently used objects. However experience has shown some problems with
this approach (to detail those problems would be an other topic). For
Apache SIS, I'm trying to rather provide frequently used geodetic
objects in separated enumerations. The intend is:
* To provide meaningful names for frequently used objects (e.g. some
peoples may find easier to remember "WGS84" instead than "EPSG:4326").
* To make easy to get those objects (e.g. no need to write try ...
catch block for FactoryException).
* To guarantee that those objects will always be available in any
Apache SIS installation. For example it seems reasonable to
stipulate that the Greenwich prime meridian and the WGS84 datum
shall always be available even in the absence of EPSG database, or
even if the user corrupted his local EPSG database. If the geodetic
object can not be created from the EPSG database, then Apache SIS
would fallback on hard-coded definitions (not as exhaustive as EPSG,
but enough for getting things to work).
The problem
-------------------------
The 3 enumerations in are currently named "GeodeticObjects",
"VerticalObjects" and "TemporalObjects". A Google search suggests that
the words "geodetic objects" are typically used for ellipsoid, datum,
CRS and the like. So the "GeodeticObjects" name may be okay. However
"vertical objects" and "temporal objects" are not typically used in
context of referencing by coordinates. So I feel that "VerticalObjects"
and "TemporalObjects" are bad enumeration names.
Possible solutions
-------------------------
1) "VerticalReferencing" and "TemporalReferencing" - but I found no
usage of those words on Google.
2) "VerticalGeodeticObjects" and "TemporalGeodeticObjects", but I'm not
sure that the expression "vertical geodetic objects" make sense. Again I
found no hit on Google.
3) "GeodeticObjects.Vertical" and "GeodeticObjects.Temporal" (i.e. as
inner enums of the GeodeticObjects enum). Like option 2 but avoid the
feeling that we are trying to make a "vertical geodetic objects"
sentence. As a side effect, developers get enumerations for all
dimensions (horizontal, vertical and temporal) with a single import
statement.
4) Any other proposal?
At this time I have a preference for option 3 but my feeling may change.
Does anyone have proposal or comments?
Martin