Vertical Coordinate Systems and Datums
This page attempts to codify how vertical datums and vertical coordinate systems ought to be described in GeoTIFF files, and in the geotiff tags used by LAS format.
Vertical CS in GeoTIFF
The planned approach is to store vertical coordinate system in GeoTIFF tags. The GeoTIFF specification has always had vertical coordinate system support, tied to the EPSG codes for vertical coordinate systems and datums. However, traditionally, the vertical coordinate system support in GeoTIFF has also not been widely used. So it is hoped that formalization of GeoTIFF tags for vertical datums in LAS format would also apply for GeoTIFF in general and any other geotiff oriented formats (GeoJP2 for instance). It is anticipated that the GeoTIFF representation of a LAS file with a vertical datum set might look something like this:
Geotiff_Information: Version: 1 Key_Revision: 1.0 Tagged_Information: End_Of_Tags. Keyed_Information: GTModelTypeGeoKey (Short,1): ModelTypeProjected GTRasterTypeGeoKey (Short,1): RasterPixelIsPoint ProjectedCSTypeGeoKey (Short,1): PCS_WGS84_UTM_zone_15N ProjLinearUnitsGeoKey (Short,1): Linear_Meter VerticalCSTypeGeoKey (Short,1): Unknown-5701 VerticalCitationGeoKey (Ascii,7): "Newlyn" VerticalDatumGeoKey (Short,1): Unknown-5101 VerticalUnitsGeoKey (Short,1): Linear_Meter End_Of_Keys. End_Of_Geotiff.
Note that VerticalCSTypeGeoKey 5701 is "ODN height", a vertical coordinate system from the EPSG coordinate reference system table. The vertical coordinate system 5701 is based on vertical datum 5101 (Ordnance Datum Newlyn) from the EPSG datum table. The 5701 vertical coordinate system also specifies use of meters as the vertical linear measure.
So there are four GeoTIFF tags related to vertical coordinate system information:
- VerticalCSTypeGeoKey: an EPSG coordinate system code of type vertical (normally 5600-5799).
- VerticalCitationGeoKey: a description of the vertical coordinate system, often the EPSG user name for the VerticalCS.
- VerticalDatumGeoKey: An EPSG vertical datum code (normally 5000 to 5299).
- VerticalUnitsGeoKey: An EPSG units code (normally 9000 to 9199, 9001=meter)
Interesting things to note:
- There does not appear to be a VerticalUnitSizeGeoKey allowing user defined vertical units similarly to the ProjLinearSizeGeoKey, so it is not appropriate to use KvUserDefined for VerticalUnitsGeoKey.
- The libgeotiff epsg_vertcs.inc file seems to imply that the vertical datum codes in the range 5000 to 5299 should be considered vertical coordinate systems which they are not in the EPSG data model. It is not clear whether this is something that changed in the EPSG data model after the initiation of the GeoTIFF specification, or if it was an error by the GeoTIFF/libgeotiff authors. This mismatch is why Unknown-5101 above is not reported as Newlyn directly. Spec issue reported at http://trac.osgeo.org/geotiff/ticket/24
- The EPSG and OGC models include an EPSG code for a composite coordinate system. The composite coordinate system is a collection of a horizontal coordinate system (like PCS_WGS84_UTM_zone_15N) and a vertical coordinate system (like 5701 - ODN height). An example is EPSG:7405 - OSGB36 / British National Grid + ODN. There is no way to represent this in a GeoTIFF tag.
One way of describing elevations is relative to an ellipsoid rather than to a more specialized vertical datum. The 1.0 GeoTIFF specification ( section 22.214.171.124) listed ellipsoidal VertCS values in the range 5000 to 5033; however, those do not appear to have any corresponding definitions in modern EPSG databases. I am currently taking the position that it those should therefore be disregarded.
Instead I propose that we just treat ellipsoidal heights by not specifying any VerticalCSTypeGeoKey code and letting the ellipsoid be determined from the ProjectedCSTypeGeoKey, GeographicTypeGeoKey or GeogEllipsoidGeoKey. Thus a GeoTIFF defined as follows would be assumed to have ellevations in meters relative to the WGS84 ellipsoid.
Keyed_Information: GTModelTypeGeoKey (Short,1): ModelTypeGeographic GTRasterTypeGeoKey (Short,1): RasterPixelIsArea GeographicTypeGeoKey (Short,1): GCS_WGS_84 GeogCitationGeoKey (Ascii,7): "WGS 84" End_Of_Keys.