Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New GeoTIFF model CRS for engineering CRS #119

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,8 @@
^| 3093 <| Projection_Definition_GeoKeys/ProjScalarParameters (Scale at Center)
^| 3094 <| Projection_Definition_GeoKeys/ProjAzimuthAngleGeoKey
^| 3095 <| Projection_Definition_GeoKeys/ProjAngularParameters (Straight Vertical Pole)
^| 6148 <| Units_GeoKeys/UnitSizeGeoKey (Engineering linear)
^| 6150 <| Units_GeoKeys/UnitSizeGeoKey (Engineering angular)
|===

Double GeoKey Tests
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@
|http://www.opengis.net/spec/GeoTIFF/1.1/VerticalGeoKey.type
|http://www.opengis.net/spec/GeoTIFF/1.1/VerticalDatumGeoKey.ID
|http://www.opengis.net/spec/GeoTIFF/1.1/VerticalDatumGeoKey.type
|http://www.opengis.net/spec/GeoTIFF/1.2/req/EngineeringCRSGeoKey.ID
|http://www.opengis.net/spec/GeoTIFF/1.2/req/EngineeringCRSGeoKey.type
|http://www.opengis.net/spec/GeoTIFF/1.2/req/EngineeringDatumGeoKey.ID
|http://www.opengis.net/spec/GeoTIFF/1.2/req/EngineeringDatumGeoKey.type
|===

*Purpose:* Verify a Short parameter
Expand Down Expand Up @@ -105,5 +109,7 @@
^| 4096 <| Vertical_GeoKeys/VerticalGeoKey
^| 4098 <| Vertical_GeoKeys/VerticalDatumGeoKey
^| 4099 <| Units_GeoKeys/UnitsGeoKey (Vertical Units)
^| 6147 <| Units_GeoKeys/UnitsGeoKey (Engineering linear Units)
^| 6149 <| Units_GeoKeys/UnitsGeoKey (Engineering angular Units)
|===

Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
|http://www.opengis.net/spec/GeoTIFF/1.1/req/GeoKeyDirectoryTag.keyEntryValueOffset
|http://www.opengis.net/spec/GeoTIFF/1.1/req/GeoAsciiParamsTag.ID
|http://www.opengis.net/spec/GeoTIFF/1.1/req/GeoAsciiParamsTag.count
|http://www.opengis.net/spec/GeoTIFF/1.1/req/CitationGeoKeys
|http://www.opengis.net/spec/GeoTIFF/1.2/req/CitationGeoKeys
|===

*Purpose:* Verify ASCII parameters
Expand Down Expand Up @@ -71,4 +71,5 @@
^| 2049 <| CitationGeoKeys (GeodeticCitationGeoKey)
^| 3073 <| CitationGeoKeys (ProjectedCitationGeoKey)
^| 4097 <| CitationGeoKeys (VerticalCitationGeoKey)
^| 6145 <| CitationGeoKeys (EngineeringCitationGeoKey)
|===
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
|http://www.opengis.net/spec/GeoTIFF/1.1/req/GeoDoubleParamsTag.ID
|http://www.opengis.net/spec/GeoTIFF/1.1/req/GeoDoubleParamsTag.count
|http://www.opengis.net/spec/GeoTIFF/1.1/req/PrimeMeridianLongitudeGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.1/req/UnitSizeGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.2/req/UnitSizeGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.1/req/EllipsoidSemiMajorAxisGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.1/req/EllipsoidSemiMinorAxisGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.1/req/EllipsoidInvFlatteningGeoKey
Expand Down Expand Up @@ -100,6 +100,8 @@
^| 3094 <| ProjAzimuthAngleGeoKey
^| 3095 <| ProjAngularParameters (Straight Vertical Pole)
^| 5120 <| CoordinateEpochGeoKey
^| 6148 <| UnitSizeGeoKey (Engineering linear)
^| 6150 <| UnitSizeGeoKey (Engineering angular)
|===

Double GeoKey Tests
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,20 @@
|http://www.opengis.net/spec/GeoTIFF/1.1/req/GeoKeyDirectoryTag.keyEntryValueOffset
|http://www.opengis.net/spec/GeoTIFF/1.1/req/GeoShortParams.Criteria
|http://www.opengis.net/spec/GeoTIFF/1.1/req/GeoShortParams.Location
|http://www.opengis.net/spec/GeoTIFF/1.1/req/GTModelTypeGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.2/req/GTModelTypeGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.1/req/GTRasterTypeGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.1/req/GeodeticCRSGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.1/req/GeodeticDatumGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.1/req/PrimeMeridianGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.1/req/UnitsGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.2/req/UnitsGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.1/req/EllipsoidGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.1/req/ProjectedCRSGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.1/req/ProjectionGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.1/req/ProjMethodGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.1/req/VerticalGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.1/req/VerticalDatumGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.2/req/EngineeringCRSGeoKey
|http://www.opengis.net/spec/GeoTIFF/1.2/req/EngineeringDatumGeoKey
|===

*Purpose:* Verify Short parameters
Expand Down Expand Up @@ -95,4 +97,6 @@
^| 4096 <| VerticalGeoKey
^| 4098 <| VerticalDatumGeoKey
^| 4099 <| UnitsGeoKey (Vertical Units)
^| 6147 <| UnitsGeoKey (Engineering linear Units)
^| 6149 <| UnitsGeoKey (Engineering angular Units)
|===
242 changes: 159 additions & 83 deletions GeoTIFF_Standard/standard/annex-b.adoc

Large diffs are not rendered by default.

38 changes: 37 additions & 1 deletion GeoTIFF_Standard/standard/annex-e.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,43 @@ __Table E.1 - Summary of GeoKey IDs and names __
5+<| [underline]#Dynamic CRS Parameter Keys#
^| 5120
^| Double
<|
<|
<| CoordinateEpochGeoKey
5+<| [underline]#Engineering CRS Parameter Keys (6144-7168)#
^| 6144
^| Short
<|
<|
<| EngineeringCRSGeoKey
^| 6145
^| Ascii
<|
<|
<| EngineeringCitationGeoKey
^| 6146
^| Short
<|
<|
<| EngineeringDatumGeoKey
^| 6147
^| Short
<|
<|
<| EngLinearUnits
^| 6148
^| Double
<|
<|
<| EngLinearUnitSize
^| 6149
^| Short
<|
<|
<| EngAngularUnits
^| 6150
^| Double
<|
<|
<| (as GeoTIFF v1.2)
<| EngAngularUnitSize
|====
83 changes: 59 additions & 24 deletions GeoTIFF_Standard/standard/clause_7_requirements.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -99,15 +99,17 @@ include::requirements/Configuration_Keys/requirements_class_GTRasterTypeGeoKey.a

This GeoKey defines the type of Model coordinate reference system used, to which the transformation from the raster space is made:

* Model CRS is unknown or unspecified;
* Model CRS is unknown or unspecified;

* Model CRS is a Geographic 2D CRS;
* Model CRS is a Geographic 2D CRS;

* Model CRS is a Geocentric CRS;
* Model CRS is a Geocentric CRS;

* Model CRS is a Projected CRS; and
* Model CRS is a Projected CRS;

* Model CRS is user-defined.
* Model CRS is an Engineering CRS; and

* Model CRS is user-defined.

If the Model coordinate reference system is from the GeoTIFF standard CRS register (i.e., EPSG register),
then only the registered CRS code need be specified.
Expand All @@ -117,13 +119,15 @@ If the Model coordinate reference system is not from the GeoTIFF standard CRS re
then it requires the specification of some or all CRS elements.
See <<Requirements for definition of user-defined Model CRS>>.

The GeoTIFF v1.0 format has also been used to describe pseudo-3D compound CRSs consisting of a projected CRS and a vertical CRS or a geographic 2D CRS and a vertical CRS,
The GeoTIFF v1.0 format has also been used to describe pseudo-3D compound CRSs
consisting of a projected CRS and a vertical CRS or a geographic 2D CRS and a vertical CRS,
as well as a geographic 3D CRS.
In this document, this usage is permitted but not explicitly described through the GTModelTypeGeoKey.
Recommendations are given in Annex D.

include::requirements/Configuration_Keys/requirements_class_GTModelTypeGeoKey.adoc[]
NOTE: The GTCitationGeoKey is also provided to give an ASCII reference to published documentation on the overall configuration of the GeoTIFF file (see <<Requirements Class Citation GeoKeys>>).
NOTE: The GTCitationGeoKey is also provided to give an ASCII reference to published documentation
on the overall configuration of the GeoTIFF file (see <<Requirements Class Citation GeoKeys>>).

=== Raster to Model Coordinate Transformation Requirements

Expand Down Expand Up @@ -186,54 +190,74 @@ NOTE: In GeoTIFF 1.0 this key was called VerticalCSTypeGeoKey. In GeoTIFF v1.0 v

include::requirements/Vertical_GeoKeys/requirements_class_VerticalGeoKey.adoc[]

==== Requirements Class EngineeringCRSGeoKey

This key is provided to specify the engineering coordinate reference system from the GeoTIFF CRS register
or to indicate that the CRS is a user-defined engineering coordinate reference system.

include::requirements/Engineering_CRS_GeoKeys/requirements_class_EngineeringCRSGeoKey.adoc[]

==== Requirements Class Citation GeoKeys
The _GTCitationGeoKey_ is provided to give an ASCII reference to published documentation on the overall configuration of the GeoTIFF file.
The _GeodeticCitationGeoKey_,
_ProjectedCitationGeoKey_ and _VerticalCitationGeoKey_ are used to describe Model CRS elements through ASCII free text.
A citation may be included with a CRS identified through the GeoTIFF CRS register (<<Requirements for definition of Model CRS (when Model CRS is from GeoTIFF CRS register)>>).
The _GeodeticCitationGeoKey_, _ProjectedCitationGeoKey_, _VerticalCitationGeoKey_ and _EngineeringCitationGeoKey_
are used to describe Model CRS elements through ASCII free text.
A citation may be included with a CRS identified through the GeoTIFF CRS register
(<<Requirements for definition of Model CRS (when Model CRS is from GeoTIFF CRS register)>>).
A citation is mandatory for a user-defined CRSs and CRS objects (<<Requirements for definition of user-defined Model CRS>>).
The _GeodeticCitationGeoKey_, _ProjectedCitationGeoKey_ and _VerticalCitationGeoKey_ are used with CRSs and CRS components.
The _GeodeticCitationGeoKey_, _ProjectedCitationGeoKey_, _VerticalCitationGeoKey_ and _EngineeringCitationGeoKey_
are used with CRSs and CRS components.

NOTE: In GeoTIFF 1.0 the GeodeticCitationGeoKey key was called GeogCitationGeoKey and the ProjectedCitationGeoKey key was called PCSCitationGeoKey.

include::requirements/Citation_Keys/requirements_class_CitationGeoKeys.adoc[]

=== Requirements for definition of user-defined Model CRS

The GeoKeys described in this section are needed only when Model CRSs are not available from the GeoTIFF CRS register and the CRS or one or more of its component objects is user-defined,
The GeoKeys described in this section are needed only when Model CRSs are not available
from the GeoTIFF CRS register and the CRS or one or more of its component objects is user-defined,
that is if one or more of ProjectedCRSGeoKey, GeodeticCRSGeoKey, or VerticalGeoKey has a value of 32767.

NOTE: Anyone not interested in constructing a user-defined model CRS can ignore this section.

NOTE: It should be noted that the implicit axis order of user-defined CRS definitions is fixed at (lon,lat,height) in case of geographic and (east,north,height) in case of projected regardless of the model space CRS definition. This convention was implicit in GeoTIFF 1.0 and still is valid in this revision. As with GeoTIFF 1.0, it is not possible to express a user-defined CRS that deviates from this axis order convention. The intention is to address this limitation in a future revision.
NOTE: It should be noted that the implicit axis order of user-defined CRS definitions is fixed at (lon,lat,height)
in case of geographic and (east,north,height) in case of projected regardless of the model space CRS definition.
This convention was implicit in GeoTIFF 1.0 and still is valid in this revision.
As with GeoTIFF 1.0, it is not possible to express a user-defined CRS that deviates from this axis order convention.
The intention is to address this limitation in a future revision.

==== Requirements Class Units GeoKeys

These keys are used to specify Units of Measure (UoM) through the identification of a unit from the GeoTIFF CRS register or to indicate that the unit is user-defined.
These keys are used to specify Units of Measure (UoM) through the identification of a unit from the GeoTIFF CRS register
or to indicate that the unit is user-defined.

The *GeogAngularUnitsGeoKey* key is used to specify the angular unit for:

* the axes in user-defined geographic 2D CRSs;
* the horizontal axes in user-defined geographic 3D CRSs;
* the longitude from the reference meridian in user-defined prime meridians; and
* user-defined map projection parameters that are angles.
* the axes in user-defined geographic 2D CRSs;
* the horizontal axes in user-defined geographic 3D CRSs;
* the longitude from the reference meridian in user-defined prime meridians; and
* user-defined map projection parameters that are angles.

The *GeogAzimuthUnitsGeoKey* key is used to specify the angular unit for user-defined map projection parameters when these differ from the angular unit described through the GeogAngularUnitsGeoKey.
The *GeogAzimuthUnitsGeoKey* key is used to specify the angular unit for user-defined map projection parameters
when these differ from the angular unit described through the GeogAngularUnitsGeoKey.

The *GeogLinearUnitsGeoKey* key is used to specify the linear unit for:

* the axes in user-defined geocentric Cartesian CRSs;
* the height axis of a user-defined geographic 3D CRS; and
* for user-defined ellipsoid axes.
* the height axis of a user-defined geographic 3D CRS; and
* for user-defined ellipsoid axes.

The *ProjLinearUnitsGeoKey* key is used to specify the linear units for:

* the axes of a user-defined projected CRS; and
* map projection parameters that are lengths.
* the axes of a user-defined projected CRS; and
* map projection parameters that are lengths.

The *VerticalUnitsGeoKey* key is used to specify the linear unit for:

* the axis of a user-defined vertical CRS.
* the axis of a user-defined vertical CRS.

The *EngLinearUnitsGeoKey* and *EngAngularUnitsGeoKey* keys are used to specify the linear unit for:

* the axis of a user-defined engineering CRS.

include::requirements/Units_Keys/requirements_class_UnitsGeoKeys.adoc[]

Expand Down Expand Up @@ -325,6 +349,17 @@ This key may be used to specify the vertical datum for a user-defined vertical c

include::requirements/Vertical_GeoKeys/requirements_class_VerticalDatumGeoKey.adoc[]

==== Requirements Class Engineering Datum

This key may be used to specify the engineering datum for a user-defined engineering coordinate reference system.
Contrarily to the geodetic datum and vertical datum cases, the engineering datum describes the origin of the
observer rather than the observed object.
For example a geodetic datum may describe an origin at the Earth's center of mass,
even if the GeoTIFF image was the result of an Earth observation made by a remote spacecraft.
But an engineering datum may rather describe an origin at the center of mass of the spacecraft doing the observations.

include::requirements/Engineering_CRS_GeoKeys/requirements_class_EngineeringDatumGeoKey.adoc[]

==== Map Projection GeoKeys

===== Requirements Class ProjectionGeoKey
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
[cols="1,4",width="90%"]
|===
2+|*Requirements Class 15.0: CitationGeoKeys* {set:cellbgcolor:#CACCCE}
2+|http://www.opengis.net/spec/GeoTIFF/1.1/req/CitationGeoKeys
2+|http://www.opengis.net/spec/GeoTIFF/1.2/req/CitationGeoKeys
{set:cellbgcolor:#FFFFFF}

|Requirement 15.1 {set:cellbgcolor:#CACCCE}
|http://www.opengis.net/spec/GeoTIFF/1.1/req/CitationGeoKeys.ID +
|http://www.opengis.net/spec/GeoTIFF/1.2/req/CitationGeoKeys.ID +
_The GTCitationGeoKey SHALL have ID = 1026_

_The GeodeticCitationGeoKey SHALL have ID = 2049_

_The ProjectedCitationGeoKey SHALL have ID = 3073_

_The VerticalCitationGeoKey SHALL have ID = 4097_

_The EngineeringCitationGeoKey SHALL have ID = 6145_
{set:cellbgcolor:#FFFFFF}

|Requirement 15.2 {set:cellbgcolor:#CACCCE}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[cols="1,4",width="90%"]
|===
2+|*Requirements Class 8.0: GTModelTypeGeoKey* {set:cellbgcolor:#CACCCE}
2+|http://www.opengis.net/spec/GeoTIFF/1.1/req/GTModelTypeGeoKey
2+|http://www.opengis.net/spec/GeoTIFF/1.2/req/GTModelTypeGeoKey
{set:cellbgcolor:#FFFFFF}

|Requirement 8.1 {set:cellbgcolor:#CACCCE}
Expand All @@ -20,18 +20,20 @@ _The GTModelTypeGeoKey SHALL have type = SHORT_
{set:cellbgcolor:#FFFFFF}

|Requirement 8.4 {set:cellbgcolor:#CACCCE}
|http://www.opengis.net/spec/GeoTIFF/1.1/req/GTModelTypeGeoKey.value +
|http://www.opengis.net/spec/GeoTIFF/1.2/req/GTModelTypeGeoKey.value +
_The GTModelTypeGeoKey value SHALL be:_

* 0 to indicate that the Model CRS in undefined or unknown; or
* 0 to indicate that the Model CRS in undefined or unknown; or

* 1 to indicate that the Model CRS is a 2D projected coordinate reference system, indicated by the value of the ProjectedCRSGeoKey; or
* 1 to indicate that the Model CRS is a 2D projected coordinate reference system, indicated by the value of the ProjectedCRSGeoKey; or

* 2 to indicate that the Model CRS is a geographic 2D coordinate reference system, indicated by the value of the GeodeticCRSGeoKey; or
* 2 to indicate that the Model CRS is a geographic 2D coordinate reference system, indicated by the value of the GeodeticCRSGeoKey; or

* 3 to indicate that the Model CRS is a geocentric Cartesian 3D coordinate reference system, indicated by the value of the GeodeticCRSGeoKey; or
* 3 to indicate that the Model CRS is a geocentric Cartesian 3D coordinate reference system, indicated by the value of the GeodeticCRSGeoKey; or

* 32767 to indicate that the Model CRS type is user-defined.
* 105 to indicate that the Model CRS is a Engineering spherical 2D coordinate reference system, indicated by the value of the EngineeringCRSGeoKey; or

* 32767 to indicate that the Model CRS type is user-defined.
{set:cellbgcolor:#FFFFFF}

|Requirement 8.5 {set:cellbgcolor:#CACCCE}
Expand Down Expand Up @@ -60,6 +62,11 @@ _If the GTModelTypeGeoKey value is 3 (Model CRS is a geocentric CRS) then the Ge
{set:cellbgcolor:#FFFFFF}

|Requirement 8.10 {set:cellbgcolor:#CACCCE}
|http://www.opengis.net/spec/GeoTIFF/1.2/req/GTModelTypeGeoKey.engCRS +
_If the GTModelTypeGeoKey value is 105 (Model CRS is an engineering CRS) then the GeoTIFF file SHALL include a EngineeringCRSGeoKey._
{set:cellbgcolor:#FFFFFF}

|Requirement 8.11 {set:cellbgcolor:#CACCCE}
|http://www.opengis.net/spec/GeoTIFF/1.1/req/GTModelTypeGeoKey.userdefined +
_If the GTModelTypeGeoKey value is 32767 (user-defined) then the GTCitationGeoKey SHALL be populated._
{set:cellbgcolor:#FFFFFF}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
[cols="1,4",width="90%"]
|===
2+|*Requirements Class TBD.0: EngineeringCRSGeoKey* {set:cellbgcolor:#CACCCE}
2+|http://www.opengis.net/spec/GeoTIFF/1.2/req/EngineeringCRSGeoKey
{set:cellbgcolor:#FFFFFF}

|Requirement TBD.1 {set:cellbgcolor:#CACCCE}
|http://www.opengis.net/spec/GeoTIFF/1.2/req/EngineeringCRSGeoKey.ID +
_The EngineeringCRSGeoKey SHALL have ID = 6144_
{set:cellbgcolor:#FFFFFF}

|Requirement TBD.2 {set:cellbgcolor:#CACCCE}
|http://www.opengis.net/spec/GeoTIFF/1.2/req/EngineeringCRSGeoKey.type +
_The EngineeringCRSGeoKey SHALL have type = SHORT_
{set:cellbgcolor:#FFFFFF}

|Requirement TBD.3 {set:cellbgcolor:#CACCCE}
|http://www.opengis.net/spec/GeoTIFF/1.2/req/EngineeringCRSGeoKey.reserved +
_EngineeringCRSGeoKey values in the range 1-1023 SHALL be reserved._
{set:cellbgcolor:#FFFFFF}

|Requirement TBD.4 {set:cellbgcolor:#CACCCE}
|http://www.opengis.net/spec/GeoTIFF/1.2/req/EngineeringCRSGeoKey.EPSG +
_EngineeringCRSGeoKey values in the range 1024-32766 SHALL be EPSG engineering CRS codes_
{set:cellbgcolor:#FFFFFF}

|Requirement TBD.5 {set:cellbgcolor:#CACCCE}
|http://www.opengis.net/spec/GeoTIFF/1.2/req/EngineeringCRSGeoKey.user-defined +
_If the EngineeringCRSGeoKey value is 32767 (User-Defined) then the EngineeringCitationGeoKey, EngineeringDatumGeoKey
and at least one of EngAngularUnitsGeoKey or EngLinearUnitsGeoKey SHALL be populated._

NOTE: if the user-defined CRS is associated to a spherical coordinate system, GeogAngularUnitsGeoKey should be populated.
If the user-defined CRS is associated to a Cartesian coordinate system, GeogLinearUnitsGeoKey should be populated.
{set:cellbgcolor:#FFFFFF}

|Requirement TBD.6 {set:cellbgcolor:#CACCCE}
|http://www.opengis.net/spec/GeoTIFF/1.2/req/EngineeringCRSGeoKey.private +
_EngineeringCRSGeoKey values in the range 32768-65535 SHALL be private_
{set:cellbgcolor:#FFFFFF}
|===