Description
Coordinate Reference Systems (CRS) are defined in details by the ISO 19111 classes in GeoAPI org.opengis.referencing.* packages. But the ISO 19115 metadata standards do not reference those CRS classes directly (except in one case). Instead the metadata standards reference CRS by their identifier (for example an EPSG code), optionally accompanied by a code telling whether the CRS type is geographic, projected, temporal, a compound of the above, etc. Those two information are combined in a MD_ReferenceSystem class referenced by the following properties:
Class | Association to MD_ReferenceSystem | Association to a CRS subtype |
---|---|---|
MD_Metadata | referenceSystemInfo | |
LI_Source | sourceReferenceSystem | |
EX_VerticalExtent | verticalCRSId | verticalCRS |
MI_GCPCollection | coordinateReferenceSystem |
In order to have a more uniform way to handle reference systems, GeoAPI replaces those (identifier, type code) tuples by associations to the actual Reference System objects.
GeoAPI does that by using the ReferenceSystem interface as the parent of CoordinateReferenceSystem interface.
However current Apache SIS implementation of RS_ReferenceSystem JAXB adapter marshalls the full CRS, which is not the expected behavior except in the verticalCRS case. We need a new adapter - MD_ReferenceSystem - for marshalling only the identifier and the MD_ReferenceSystemTypeCode instead.
In the particular case of VerticalExtent, the proposal is to marshal the verticalCRSId if an EPSG code is available, or verticalCRS otherwise.