From 44174a9c379b6d134abe6e6715cf0fd56c2b1a44 Mon Sep 17 00:00:00 2001 From: Martin Desruisseaux Date: Tue, 4 Jul 2023 16:49:18 +0200 Subject: [PATCH 1/3] In table E.1 (Summary of GeoKey IDs and names), move the `CoordinateEpochGeoKey` key name from the "GeoTIFF v1.0 key name" column to the "This document key name". In my understanding, that key didn't existed in GeoTIFF 1.0. --- GeoTIFF_Standard/standard/annex-e.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GeoTIFF_Standard/standard/annex-e.adoc b/GeoTIFF_Standard/standard/annex-e.adoc index 66912f3c..fa5870a0 100644 --- a/GeoTIFF_Standard/standard/annex-e.adoc +++ b/GeoTIFF_Standard/standard/annex-e.adoc @@ -254,7 +254,7 @@ __Table E.1 - Summary of GeoKey IDs and names __ 5+<| [underline]#Dynamic CRS Parameter Keys# ^| 5120 ^| Double -<| CoordinateEpochGeoKey <| -<| (as GeoTIFF v1.2) +<| +<| CoordinateEpochGeoKey |==== From 496db8b37790cc86c563d56fdc984c507ed157d0 Mon Sep 17 00:00:00 2001 From: Martin Desruisseaux Date: Mon, 3 Jul 2023 17:22:35 +0200 Subject: [PATCH 2/3] Break long sentences in shorter sentences in sections 7.2.2, 7.5, B.3 and requirement 16.5. This is a source code formatting, with no change in text and no change in the PDF or HTML formatting. This is a complement of pull request #114, which was done by an automatic tool on main paragraphs only. The formatting in this commit was done manually in preparation for future change requests with content changes. --- GeoTIFF_Standard/standard/annex-b.adoc | 207 +++++++++++------- .../standard/clause_7_requirements.adoc | 50 +++-- .../requirements_class_GTModelTypeGeoKey.adoc | 10 +- .../requirements_class_UnitsGeoKeys.adoc | 31 ++- 4 files changed, 182 insertions(+), 116 deletions(-) diff --git a/GeoTIFF_Standard/standard/annex-b.adoc b/GeoTIFF_Standard/standard/annex-b.adoc index 4e929437..d4a12cad 100644 --- a/GeoTIFF_Standard/standard/annex-b.adoc +++ b/GeoTIFF_Standard/standard/annex-b.adoc @@ -426,34 +426,52 @@ In GeoTIFF, standard CRSs are identified through reference to an EPSG CRS code. This is sufficient to define the CRS component objects. Further information on EPSG codes is given in <>. -NOTE: This document removes the reference to the specific EPSG codes listed in the 1995 GeoTIFF v1.0 specification and replaces it by *allowing reference to any code in the EPSG Dataset*, including codes for any objects introduced into the EPSG Dataset after publication of this document. +NOTE: This document removes the reference to the specific EPSG codes listed in the 1995 GeoTIFF v1.0 specification +and replaces it by *allowing reference to any code in the EPSG Dataset*, +including codes for any objects introduced into the EPSG Dataset after publication of this document. ==== User-defined Model Coordinate Reference Systems GeoTIFF attempts to allow Model CRSs that are not described in the standard CRS register to be defined through user-defined keys. However the provisions made are limited in that: -* no provision was made for fully describing coordinate system; although axis units could be described, provision for describing axis order and positive direction was omitted; and +* no provision was made for fully describing coordinate system; + although axis units could be described, provision for describing axis order and positive direction was omitted; + and -* there is ambiguity in the provision for describing user-defined map projections. Codes for some common map projection methods and map projection parameters were provided, but neither the method nor the parameter were defined. Inferences may be made from the listed map projection method names and map projection parameter names, but ambiguity remains so interoperability is not guaranteed. +* there is ambiguity in the provision for describing user-defined map projections. + Codes for some common map projection methods and map projection parameters were provided, + but neither the method nor the parameter were defined. + Inferences may be made from the listed map projection method names and map projection parameter names, + but ambiguity remains so interoperability is not guaranteed. In practice, user-defined Model CRS definition is limited to the following cases. -i) A user-defined projected CRS which uses a base geographic CRS and a map projection that are both individually available from the GeoTIFF CRS register but, in the register, not associated together. EPSG geogCRS code needs citing through Requirement http://www.opengis.net/spec/GeoTIFF/1.1/req/GeodeticCRSGeoKey.EPSG, EPSG projection code needs citing through Requirement http://www.opengis.net/spec/GeoTIFF/1.1/req/ProjectionGeoKey.EPSG +i) A user-defined projected CRS which uses a base geographic CRS and a map projection that are both + individually available from the GeoTIFF CRS register but, in the register, not associated together. + EPSG geogCRS code needs citing through Requirement http://www.opengis.net/spec/GeoTIFF/1.1/req/GeodeticCRSGeoKey.EPSG, + EPSG projection code needs citing through Requirement http://www.opengis.net/spec/GeoTIFF/1.1/req/ProjectionGeoKey.EPSG. -ii) A user-defined projected CRS which uses a user-defined geographic CRS with a map projection that is available from the GeoTIFF CRS register. -GeogCRS needs defining as in Requirement http://www.opengis.net/spec/GeoTIFF/1.1/req/GeodeticCRSGeoKey.userdefined, EPSG projection code needs citing through Requirement http://www.opengis.net/spec/GeoTIFF/1.1/req/ProjectionGeoKey.EPSG +ii) A user-defined projected CRS which uses a user-defined geographic CRS + with a map projection that is available from the GeoTIFF CRS register. + GeogCRS needs defining as in Requirement http://www.opengis.net/spec/GeoTIFF/1.1/req/GeodeticCRSGeoKey.userdefined, + EPSG projection code needs citing through Requirement http://www.opengis.net/spec/GeoTIFF/1.1/req/ProjectionGeoKey.EPSG. -iii) A user-defined geographic CRS available from the GeoTIFF CRS register and a map projection not in EPSG register. EPSG geogCRS code needs citing through Requirement http://www.opengis.net/spec/GeoTIFF/1.1/req/GeodeticCRSGeoKey.EPSG, projection needs defining through Requirement http://www.opengis.net/spec/req/GeoTIFF/1.1/ProjectionGeoKey.userdefined using the v1.0 provisions (use the names in annex C). +iii) A user-defined geographic CRS available from the GeoTIFF CRS register and a map projection not in EPSG register. + EPSG geogCRS code needs citing through Requirement http://www.opengis.net/spec/GeoTIFF/1.1/req/GeodeticCRSGeoKey.EPSG, + projection needs defining through Requirement http://www.opengis.net/spec/req/GeoTIFF/1.1/ProjectionGeoKey.userdefined + using the v1.0 provisions (use the names in annex C). - iv) Neither base GeogCRS or map projection is in EPSG. GeogCRS needs defining, projection needs defining through Requirement http://www.opengis.net/spec/GeoTIFF/1.1/req/ProjectionGeoKey.userdefined using the v1.0 provisions (the names in annex C). + iv) Neither base GeogCRS or map projection is in EPSG. GeogCRS needs defining, + projection needs defining through Requirement http://www.opengis.net/spec/GeoTIFF/1.1/req/ProjectionGeoKey.userdefined + using the v1.0 provisions (the names in annex C). For the transformation from raster space to model space, some implicit convention is made about axis positive direction and axis order. It is assumed that: -* projected CRS axes are easting, northing; +* projected CRS axes are easting, northing; -* geographic 2D CRS axes are longitude east, latitude north; and +* geographic 2D CRS axes are longitude east, latitude north; and * vertical CRS axis is height up. @@ -462,82 +480,88 @@ NOTE: Users must note that this GeoTIFF practice is not in line with ISO TC211 a ===== User-defined geographic 2D CRS For a user-defined geographic 2D CRS the user is expected to provide: -* geocentric coordinate reference system name (through the _GeodeticCitationGeoKey_); +* geocentric coordinate reference system name (through the _GeodeticCitationGeoKey_); -* geodetic datum through the _GeodeticDatumGeoKey_, either: +* geodetic datum through the _GeodeticDatumGeoKey_, either: -** the geodetic datum code (if available through standard EPSG code), or +** the geodetic datum code (if available through standard EPSG code), or -** user-defined geodetic datum name and other defining information: +** user-defined geodetic datum name and other defining information: -*** the geodetic datum name (through the _GeodeticCitationGeoKey_), +*** the geodetic datum name (through the _GeodeticCitationGeoKey_), -*** the ellipsoid (through the _EllipsoidGeoKey_, see <>), and +*** the ellipsoid (through the _EllipsoidGeoKey_, see <>), and -*** the prime meridian (through the _PrimeMeridianGeoKey_, see <>); +*** the prime meridian (through the _PrimeMeridianGeoKey_, see <>); -* axis unit through the _GeogAngularUnitsGeoKey_, either: +* axis unit through the _GeogAngularUnitsGeoKey_, either: -** angle unit code (if available through standard EPSG code), or +** angle unit code (if available through standard EPSG code), or -** user-defined angle unit name (through the _GeodeticCitationGeoKey_) and scaling from SI base unit of radian (through the _GeogAngularUnitSizeGeoKey_); and +** user-defined angle unit name (through the _GeodeticCitationGeoKey_) and + scaling from SI base unit of radian (through the _GeogAngularUnitSizeGeoKey_); and -* if the CRS uses a user-defined ellipsoid, the ellipsoid axis unit through the _GeogLinearUnitsGeoKey_, either: +* if the CRS uses a user-defined ellipsoid, the ellipsoid axis unit through the _GeogLinearUnitsGeoKey_, either: -** length unit code (if available through standard EPSG code), or +** length unit code (if available through standard EPSG code), or -** user-defined length unit name (through the _GeodeticCitationGeoKey_) and scaling from SI base unit of meter (through the _GeogLinearUnitSizeGeoKey_). +** user-defined length unit name (through the _GeodeticCitationGeoKey_) and + scaling from SI base unit of meter (through the _GeogLinearUnitSizeGeoKey_). ===== User-defined geocentric CRS For a user-defined geocentric CRS the user is expected to provide: -* geocentric coordinate reference system name (through the _GeodeticCitationGeoKey_); +* geocentric coordinate reference system name (through the _GeodeticCitationGeoKey_); -* geodetic datum through the _GeodeticDatumGeoKey_, either: +* geodetic datum through the _GeodeticDatumGeoKey_, either: -** the geodetic datum code (if available through standard EPSG code), or +** the geodetic datum code (if available through standard EPSG code), or -** user-defined geodetic datum name and other defining information: +** user-defined geodetic datum name and other defining information: -*** the geodetic datum name (through the _GeodeticCitationGeoKey_), +*** the geodetic datum name (through the _GeodeticCitationGeoKey_), -*** the ellipsoid (through the _EllipsoidGeoKey_, see <>), and +*** the ellipsoid (through the _EllipsoidGeoKey_, see <>), and -*** the prime meridian (through the _PrimeMeridianGeoKey_, see <>); +*** the prime meridian (through the _PrimeMeridianGeoKey_, see <>); -* axis unit through the _GeogLinearUnitsGeoKey_, either: +* axis unit through the _GeogLinearUnitsGeoKey_, either: -** length unit code (if available through standard EPSG code), or +** length unit code (if available through standard EPSG code), or -** user-defined length unit name (through the _GeodeticCitationGeoKey_) and scaling from SI base unit of meter (through the _GeogLinearUnitSizeGeoKey_); and +** user-defined length unit name (through the _GeodeticCitationGeoKey_) and + scaling from SI base unit of meter (through the _GeogLinearUnitSizeGeoKey_); and -* if the CRS uses a user-defined prime meridian, prime meridian Greenwich longitude unit through the _GeogAngularUnitsGeoKey_, either: +* if the CRS uses a user-defined prime meridian, prime meridian Greenwich longitude unit through the _GeogAngularUnitsGeoKey_, either: -** angle unit code (if available through standard EPSG code), or +** angle unit code (if available through standard EPSG code), or -** user-defined angle unit name (through the _GeodeticCitationGeoKey_) and scaling from SI base unit of radian (through the _GeogAngularUnitSizeGeoKey_). +** user-defined angle unit name (through the _GeodeticCitationGeoKey_) and + scaling from SI base unit of radian (through the _GeogAngularUnitSizeGeoKey_). ===== User-defined ellipsoid For any user-defined geocentric, geographic 3D or geographic 2D CRS an ellipsoid needs to be identified. The user is expected to provide: -* ellipsoid through the _EllipsoidGeoKey_, either: +* ellipsoid through the _EllipsoidGeoKey_, either: -** the ellipsoid code (if available through standard EPSG code), or +** the ellipsoid code (if available through standard EPSG code), or -** the user-defined ellipsoid name and other defining information: +** the user-defined ellipsoid name and other defining information: -*** the ellipsoid name (through the _GeodeticCitationGeoKey_), +*** the ellipsoid name (through the _GeodeticCitationGeoKey_), -*** the ellipsoid semi-major axis (through the _EllipsoidSemiMajorAxisGeoKey_), +*** the ellipsoid semi-major axis (through the _EllipsoidSemiMajorAxisGeoKey_), -*** either the ellipsoid semi-minor axis (through the _EllipsoidSemiMinorAxisGeoKey_) or the ellipsoid inverse flattening (through the _EllipsoidInvFlatteningGeoKey_), +*** either the ellipsoid semi-minor axis (through the _EllipsoidSemiMinorAxisGeoKey_) or + the ellipsoid inverse flattening (through the _EllipsoidInvFlatteningGeoKey_), -*** The units for the ellipsoid axis or axes; +*** The units for the ellipsoid axis or axes; -* For geocentric the ellipsoid axis or axes values must given in the length unit defined through the _GeogLinearUnitsGeoKey_ already required (see <>); and +* For geocentric the ellipsoid axis or axes values must given in the length unit defined through + the _GeogLinearUnitsGeoKey_ already required (see <>); and -* For geographic 2D CRSs, then a _GeogLinearUnitsGeoKey_ is additionally required. +* For geographic 2D CRSs, then a _GeogLinearUnitsGeoKey_ is additionally required. ===== User-defined prime meridian For any user-defined geocentric, @@ -545,75 +569,84 @@ geographic 3D or geographic 2D CRS a prime meridian needs to be identified whene (If no prime meridian is identified, it should be assumed to be Greenwich). The user is expected to provide: -* Prime meridian through the _PrimeMeridianGeoKey_, either: +* prime meridian through the _PrimeMeridianGeoKey_, either: -** the prime meridian code (if available through standard EPSG code), or +** the prime meridian code (if available through standard EPSG code), or -** the user-defined prime meridian name and other defining information: +** the user-defined prime meridian name and other defining information: -*** the prime meridian name (through the _GeodeticCitationGeoKey_), +*** the prime meridian name (through the _GeodeticCitationGeoKey_), -*** the prime meridian longitude (through the _PrimeMeridianLongitudeGeoKey_), +*** the prime meridian longitude (through the _PrimeMeridianLongitudeGeoKey_), -*** the units for the prime meridian longitude; +*** the units for the prime meridian longitude; -* For geographic CRSs the prime meridian longitude value must given in the angle unit defined through the _GeogAngularUnitsGeoKey_ already required (see <>); and +* For geographic CRSs the prime meridian longitude value must given in the angle unit defined + through the _GeogAngularUnitsGeoKey_ already required (see <>); and -* For geocentric CRSs, then a _GeogAngularUnitsGeoKey_ is additionally required. +* For geocentric CRSs, then a _GeogAngularUnitsGeoKey_ is additionally required. ===== User-defined Projected Coordinate Reference Systems For a user-defined projected CRS the user is expected to provide: -* projected coordinate reference system name (through _ProjectedCitationGeoKey_); +* projected coordinate reference system name (through _ProjectedCitationGeoKey_); -* base geographic CRS (either standard EPSG code or user-defined, see <>); +* base geographic CRS (either standard EPSG code or user-defined, see <>); -* map projection through the _ProjectionGeoKey_, either: +* map projection through the _ProjectionGeoKey_, either: -** map projection code (if available through standard EPSG code), or +** map projection code (if available through standard EPSG code), or -** user-defined map projection (see below); and +** user-defined map projection (see below); and -* axis unit through _ProjLinearUnitsGeoKey_, either: +* axis unit through _ProjLinearUnitsGeoKey_, either: -** length unit code (if available through standard EPSG code), or +** length unit code (if available through standard EPSG code), or -** user-defined length unit name (through the _ProjectedCitationGeoKey_) and scaling from SI base unit of meter (through the _ProjLinearUnitSizeGeoKey_). +** user-defined length unit name (through the _ProjectedCitationGeoKey_) and + scaling from SI base unit of meter (through the _ProjLinearUnitSizeGeoKey_). ===== User-defined map projection For a user-defined map projection the user is expected to provide: -* map projection name (through _ProjectedCitationGeoKey_); +* map projection name (through _ProjectedCitationGeoKey_); -* map projection method (through _ProjMethodGeoKey_); +* map projection method (through _ProjMethodGeoKey_); -* map projection parameter values (using a set of keys appropriate to the map projection method): +* map projection parameter values (using a set of keys appropriate to the map projection method): -** For map projection parameters that are lengths the parameter value needs to be expressed in the units defined through the _ProjLinearUnitsGeoKey_, and +** For map projection parameters that are lengths the parameter value needs + to be expressed in the units defined through the _ProjLinearUnitsGeoKey_, and -** For map projection parameters that are angles the parameter value needs to be expressed in the units defined through the _GeogAngularUnitsGeoKey_, which is required in the base geographic CRS description, except for azimuths when the value needs to be expressed in the units defined through a _GeogAzimuthUnitsGeoKey_; and +** For map projection parameters that are angles the parameter value needs to be expressed in the units + defined through the _GeogAngularUnitsGeoKey_, which is required in the base geographic CRS description, + except for azimuths when the value needs to be expressed in the units defined through a _GeogAzimuthUnitsGeoKey_; + and -* if the map projection method requires a parameter that is an azimuth, the azimuth unit through a _GeogAzimuthUnitsGeoKey_. +* if the map projection method requires a parameter that is an azimuth, + the azimuth unit through a _GeogAzimuthUnitsGeoKey_. ===== User-defined Vertical Coordinate Reference Systems For a user-defined vertical CRS the user is expected to provide: -* vertical coordinate reference system name (through _VerticalCitationGeoKey_); +* vertical coordinate reference system name (through _VerticalCitationGeoKey_); -* user-defined vertical datum through _VerticalDatumGeoKey_, either: +* user-defined vertical datum through _VerticalDatumGeoKey_, either: -** the vertical datum code (if available through standard EPSG code), or +** the vertical datum code (if available through standard EPSG code), or -** the vertical datum name and other defining information (through the _VerticalCitationGeoKey_); and +** the vertical datum name and other defining information (through the _VerticalCitationGeoKey_); and -* vertical axis unit through _VerticalUnitsGeoKey_, either: +* vertical axis unit through _VerticalUnitsGeoKey_, either: -** linear unit code (if available through standard EPSG code), or +** linear unit code (if available through standard EPSG code), or -** linear unit name (through _VerticalCitationGeoKey_) and scaling from SI base unit of meter (through _GeogLinearUnitSizeGeoKey_). +** linear unit name (through _VerticalCitationGeoKey_) and + scaling from SI base unit of meter (through _GeogLinearUnitSizeGeoKey_). === Model CRS Reference Parameters -Most of the GeoTIFF standard definitions for model ('real world') coordinate reference systems and their component elements are based on the hierarchical system developed for the EPSG Geodetic Parameter Dataset ('EPSG Dataset'). +Most of the GeoTIFF standard definitions for model ('real world') coordinate reference systems and their component +elements are based on the hierarchical system developed for the EPSG Geodetic Parameter Dataset ('EPSG Dataset'). The complete set of EPSG definitions is available at http://www.epsg-registry.org. The EPSG Dataset is maintained by the Geodesy Subcommittee of the International Association of Oil and Gas Producers (IOGP). @@ -623,8 +656,7 @@ Some of these objects themselves are composed objects and attributes, in a neste Each release of new or revised data is indicated by the EPSG Dataset version number. Since 1999 (from EPSG Dataset v5.0 and later) EPSG policy has been to never remove any invalid data but instead to leave it in the Dataset with its status set to deprecated. Deprecated data contains a significant error (significant defined as having impact on the result of applying a transformation or conversion) and is invalid. -As such, -since 1999 reference to the version of the EPSG Dataset to qualify codes of entities within the Dataset has been unnecessary. +As such, since 1999 reference to the version of the EPSG Dataset to qualify codes of entities within the Dataset has been unnecessary. Using EPSG Dataset versions 5.0 and 9.3 as examples, urn:ogc:def:crs:EPSG:5.0:4326 and urn:ogc:def:crs:EPSG:9.3:4326 and urn:ogc:def:crs:EPSG::4326 reference the same object. The terms of use of the EPSG Dataset are given at http://www.epsg.org/Termsofuse.aspx. @@ -632,11 +664,23 @@ The terms of use of the EPSG Dataset are given at http://www.epsg.org/Termsofuse Within the EPSG Dataset each object has a code. There have been three generations of coding. -i) In v1.x of the publicly-available EPSG Dataset (1994-1996, published by the Petrotechnical Open Software Corporation, POSC), codes were alphanumeric. The initial letter indicated the object type, and objects within each type were then assigned sequential numbers. +i) In v1.x of the publicly-available EPSG Dataset (1994-1996, published by the Petrotechnical Open Software Corporation, POSC), codes were alphanumeric. + The initial letter indicated the object type, and objects within each type were then assigned sequential numbers. -ii) With the introduction of GeoTIFF v1.0, EPSG Dataset v2.1 object codes were changed to integer values in the range 1024 through 32766. This overall code range was divided into non-overlapping sub-ranges, with one sub-range range for each object type. At that time, all EPSG object codes were unique. The GeoTIFF v1.0 specification was written at this time, and the EPSG code ranges for object types were written into the GeoTIFF v1.0 specification. +ii) With the introduction of GeoTIFF v1.0, EPSG Dataset v2.1 object codes were changed to integer values in the range 1024 through 32766. + This overall code range was divided into non-overlapping sub-ranges, with one sub-range range for each object type. + At that time, all EPSG object codes were unique. The GeoTIFF v1.0 specification was written at this time, + and the EPSG code ranges for object types were written into the GeoTIFF v1.0 specification. -iii) However as the number of items in the EPSG Dataset grew, some of the object code sub-ranges became fully assigned. The unique code system broke down. Since 2006, all object types have been separately assigned codes within the range 1024 through 32766. Within each object type codes remain unique, but one code value may be used for several object types. For example, code 4326 is used for both a CRS and for a geographic extent (in EPSG called 'area'). Codes at and just above the lower end of the range 1024 through 32766 may be used by numerous object types: for example by the year 2018 code 1026 has been assigned to 10 different object types. EPSG codes therefore are only unique when the object type is disclosed. urn:ogc:def:EPSG::4326 is ambiguous, urn:ogc:def:crs:EPSG::4326 and urn:ogc:def:area:EPSG::4326 are unambiguous. +iii) However as the number of items in the EPSG Dataset grew, some of the object code sub-ranges became fully assigned. + The unique code system broke down. + Since 2006, all object types have been separately assigned codes within the range 1024 through 32766. + Within each object type codes remain unique, but one code value may be used for several object types. + For example, code 4326 is used for both a CRS and for a geographic extent (in EPSG called 'area'). + Codes at and just above the lower end of the range 1024 through 32766 may be used by numerous object types: + for example by the year 2018 code 1026 has been assigned to 10 different object types. + EPSG codes therefore are only unique when the object type is disclosed. + urn:ogc:def:EPSG::4326 is ambiguous, urn:ogc:def:crs:EPSG::4326 and urn:ogc:def:area:EPSG::4326 are unambiguous. The GeoTIFF v1.0 specification refers to "obsolete EPSG/POSC codes." These refer to the numeric part of the alphanumeric coding in (i) above. These values had been used in some GeoTIFF v0.x files and for backward compatibility with those earlier files GeoTIFF v1.0 retained references to them. @@ -644,7 +688,8 @@ As all of these alphanumeric codes were changed to the integer coding in (ii) ab reference to these obsolete codes should now be unnecessary. In effect, for model CRS GeoKeys the obsolete code range may be treated as a reserved code range. -Note: 'EPSG/POSC obsolete codes' refers specifically to the coding in generation (i) above, and should not be confused with codes from generations (ii) and (iii) which have been given the status of 'deprecated.' +Note: 'EPSG/POSC obsolete codes' refers specifically to the coding in generation (i) above, +and should not be confused with codes from generations (ii) and (iii) which have been given the status of 'deprecated.' A reference to an EPSG coordinate reference system code is sufficient for a complete definition: it implies use of the CRS components (datum, ellipsoid, map projection, diff --git a/GeoTIFF_Standard/standard/clause_7_requirements.adoc b/GeoTIFF_Standard/standard/clause_7_requirements.adoc index 79c86e8c..6c8a8ba3 100644 --- a/GeoTIFF_Standard/standard/clause_7_requirements.adoc +++ b/GeoTIFF_Standard/standard/clause_7_requirements.adoc @@ -99,15 +99,15 @@ 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 user-defined. +* 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. @@ -117,13 +117,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 <>. -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 <>). +NOTE: The GTCitationGeoKey is also provided to give an ASCII reference to published documentation +on the overall configuration of the GeoTIFF file (see <>). === Raster to Model Coordinate Transformation Requirements @@ -190,7 +192,8 @@ include::requirements/Vertical_GeoKeys/requirements_class_VerticalGeoKey.adoc[] 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 (<>). +A citation may be included with a CRS identified through the GeoTIFF CRS register +(<>). A citation is mandatory for a user-defined CRSs and CRS objects (<>). The _GeodeticCitationGeoKey_, _ProjectedCitationGeoKey_ and _VerticalCitationGeoKey_ are used with CRSs and CRS components. @@ -200,40 +203,47 @@ 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. include::requirements/Units_Keys/requirements_class_UnitsGeoKeys.adoc[] diff --git a/GeoTIFF_Standard/standard/requirements/Configuration_Keys/requirements_class_GTModelTypeGeoKey.adoc b/GeoTIFF_Standard/standard/requirements/Configuration_Keys/requirements_class_GTModelTypeGeoKey.adoc index 580a8dfc..419a8fb2 100644 --- a/GeoTIFF_Standard/standard/requirements/Configuration_Keys/requirements_class_GTModelTypeGeoKey.adoc +++ b/GeoTIFF_Standard/standard/requirements/Configuration_Keys/requirements_class_GTModelTypeGeoKey.adoc @@ -23,15 +23,15 @@ _The GTModelTypeGeoKey SHALL have type = SHORT_ |http://www.opengis.net/spec/GeoTIFF/1.1/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. +* 32767 to indicate that the Model CRS type is user-defined. {set:cellbgcolor:#FFFFFF} |Requirement 8.5 {set:cellbgcolor:#CACCCE} diff --git a/GeoTIFF_Standard/standard/requirements/Units_Keys/requirements_class_UnitsGeoKeys.adoc b/GeoTIFF_Standard/standard/requirements/Units_Keys/requirements_class_UnitsGeoKeys.adoc index 82220595..c731584a 100644 --- a/GeoTIFF_Standard/standard/requirements/Units_Keys/requirements_class_UnitsGeoKeys.adoc +++ b/GeoTIFF_Standard/standard/requirements/Units_Keys/requirements_class_UnitsGeoKeys.adoc @@ -19,54 +19,65 @@ _The VerticalUnitsGeoKey SHALL have ID = 4099_ |Requirement 16.2 {set:cellbgcolor:#CACCCE} |http://www.opengis.net/spec/GeoTIFF/1.1/req/UnitsGeoKey.type + -_The GeogAngularUnitsGeoKey, the GeogAzimuthUnitsGeoKey, the GeogLinearUnitsGeoKey, the ProjLinearUnitsGeoKey and the VerticalUnitsGeoKey SHALL each have type = SHORT_ +_The GeogAngularUnitsGeoKey, the GeogAzimuthUnitsGeoKey, the GeogLinearUnitsGeoKey, the ProjLinearUnitsGeoKey and the VerticalUnitsGeoKey +SHALL each have type = SHORT_ {set:cellbgcolor:#FFFFFF} |Requirement 16.3 {set:cellbgcolor:#CACCCE} |http://www.opengis.net/spec/GeoTIFF/1.1/req/UnitsGeoKey.reserved + -_GeogAngularUnitsGeoKey, GeogAzimuthUnitsGeoKey, GeogLinearUnitsGeoKey, ProjLinearUnitsGeoKey and VerticalUnitsGeoKey values in the range 1-1023 SHALL be reserved._ +_GeogAngularUnitsGeoKey, GeogAzimuthUnitsGeoKey, GeogLinearUnitsGeoKey, ProjLinearUnitsGeoKey and VerticalUnitsGeoKey +values in the range 1-1023 SHALL be reserved._ NOTE: In GeoTIFF v1.0 the range 0001-2000 was used for obsolete GeoTIFF codes. {set:cellbgcolor:#FFFFFF} |Requirement 16.4 {set:cellbgcolor:#CACCCE} |http://www.opengis.net/spec/GeoTIFF/1.1/req/UnitsGeoKey.angular + -_GeogAngularUnitsGeoKey and GeogAzimuthUnitsGeoKey values in the range 1024-32766 SHALL be EPSG Unit Of Measure (UOM) codes with type = angle._ +_GeogAngularUnitsGeoKey and GeogAzimuthUnitsGeoKey +values in the range 1024-32766 SHALL be EPSG Unit Of Measure (UOM) codes with type = angle._ NOTE: In GeoTIFF v1.0 the range was 9100-9199 {set:cellbgcolor:#FFFFFF} |Requirement 16.5 {set:cellbgcolor:#CACCCE} |http://www.opengis.net/spec/GeoTIFF/1.1/req/UnitsGeoKey.linear + -_GeogLinearUnitsGeoKey, ProjLinearUnitsGeoKey and VerticalUnitsGeoKey values in the range 1024-32766 SHALL be EPSG Unit Of Measure (UOM) codes with type = length._ +_GeogLinearUnitsGeoKey, ProjLinearUnitsGeoKey and VerticalUnitsGeoKey +values in the range 1024-32766 SHALL be EPSG Unit Of Measure (UOM) codes with type = length._ -NOTE: In GeoTIFF v1.0 the range was 9000-9099. Several values in this range have been deprecated or deleted from the EPSG Dataset and should no longer be used. See <> +NOTE: In GeoTIFF v1.0 the range was 9000-9099. +Several values in this range have been deprecated or deleted from the EPSG Dataset and should no longer be used. +See <> {set:cellbgcolor:#FFFFFF} |Requirement 16.6 {set:cellbgcolor:#CACCCE} |http://www.opengis.net/spec/GeoTIFF/1.1/req/UnitsGeoKey.userdefinedAngular + -_A GeogAngularUnitsGeoKey or a GeogAzimuthUnitsGeoKey value of 32767 SHALL be a user-defined angular unit. If the value is 32767 (User-Defined) then the GeodeticCitationGeoKey and the GeogAngularUnitSizeGeoKey SHALL be populated_ +_A GeogAngularUnitsGeoKey or a GeogAzimuthUnitsGeoKey value of 32767 SHALL be a user-defined angular unit. +If the value is 32767 (User-Defined) then the GeodeticCitationGeoKey and the GeogAngularUnitSizeGeoKey SHALL be populated_ {set:cellbgcolor:#FFFFFF} |Requirement 16.7 {set:cellbgcolor:#CACCCE} |http://www.opengis.net/spec/GeoTIFF/1.1/req/UnitsGeoKey.userdefinedGeogLinear + -_A GeogLinearUnitsGeoKey value of 32767 SHALL be a user-defined linear unit. If the value is 32767 (User-Defined) then the GeodeticCitationGeoKey and the GeogLinearUnitSizeGeoKey SHALL be populated_ +_A GeogLinearUnitsGeoKey value of 32767 SHALL be a user-defined linear unit. +If the value is 32767 (User-Defined) then the GeodeticCitationGeoKey and the GeogLinearUnitSizeGeoKey SHALL be populated_ {set:cellbgcolor:#FFFFFF} |Requirement 16.8 {set:cellbgcolor:#CACCCE} |http://www.opengis.net/spec/GeoTIFF/1.1/req/UnitsGeoKey.userdefinedProjLinear + -_A ProjLinearUnitsGeoKey value of 32767 SHALL be a user-defined linear unit. If the value is 32767 (User-Defined) then the ProjectedCitationGeoKey and the ProjLinearUnitSizeGeoKey SHALL be populated._ +_A ProjLinearUnitsGeoKey value of 32767 SHALL be a user-defined linear unit. +If the value is 32767 (User-Defined) then the ProjectedCitationGeoKey and the ProjLinearUnitSizeGeoKey SHALL be populated._ {set:cellbgcolor:#FFFFFF} |Requirement 16.9 {set:cellbgcolor:#CACCCE} |http://www.opengis.net/spec/GeoTIFF/1.1/req/UnitsGeoKey.userdefinedVertical + _A VerticalUnitsGeoKey value of 32767 (user defined) SHALL not be used_ -NOTE: The rationale for this is that it would require a VerticalUnitSizeGeoKey, which does not exist in GeoTIFF 1.0. For vertical units, this document supports only EPSG linear units. +NOTE: The rationale for this is that it would require a VerticalUnitSizeGeoKey, which does not exist in GeoTIFF 1.0. +For vertical units, this document supports only EPSG linear units. {set:cellbgcolor:#FFFFFF} |Requirement 16.10 {set:cellbgcolor:#CACCCE} |http://www.opengis.net/spec/GeoTIFF/1.1/req/UnitsGeoKey.private + -_GeogAngularUnitsGeoKey, GeogAzimuthUnitsGeoKey, GeogLinearUnitsGeoKey, ProjLinearUnitsGeoKey and VerticalUnitsGeoKey values in the range 32768-65535 SHALL be private._ +_GeogAngularUnitsGeoKey, GeogAzimuthUnitsGeoKey, GeogLinearUnitsGeoKey, ProjLinearUnitsGeoKey and VerticalUnitsGeoKey +values in the range 32768-65535 SHALL be private._ {set:cellbgcolor:#FFFFFF} |=== From 23fe4e305b768cd8de6f6f93bed10b7c4ce42aa2 Mon Sep 17 00:00:00 2001 From: Martin Desruisseaux Date: Tue, 19 Sep 2023 17:49:37 +0200 Subject: [PATCH 3/3] Introduce TextDefGeoKey for textual definitions of the following forms: * Authorities other than EPSG. * Full WKT definitions. --- .../TIFF_Tests/TEST_Ascii_Param.adoc | 9 ++++ .../TIFF_Tests/TEST_Short_Param.adoc | 8 ++-- GeoTIFF_Standard/standard/annex-e.adoc | 40 +++++++++++++++++ .../standard/clause_7_requirements.adoc | 19 +++++++- .../requirements_class_TextDefGeoKeys.adoc | 45 +++++++++++++++++++ .../requirements_class_EllipsoidGeoKey.adoc | 13 ++++-- .../requirements_class_GeodeticCRSGeoKey.adoc | 13 ++++-- ...equirements_class_GeodeticDatumGeoKey.adoc | 13 ++++-- ...equirements_class_PrimeMeridianGeoKey.adoc | 13 ++++-- ...requirements_class_ProjectedCRSGeoKey.adoc | 9 +++- .../requirements_class_ProjectionGeoKey.adoc | 9 +++- ...equirements_class_VerticalDatumGeoKey.adoc | 9 +++- .../requirements_class_VerticalGeoKey.adoc | 9 +++- 13 files changed, 187 insertions(+), 22 deletions(-) create mode 100644 GeoTIFF_Standard/standard/requirements/Citation_Keys/requirements_class_TextDefGeoKeys.adoc diff --git a/GeoTIFF_Standard/standard/abstract_tests/TIFF_Tests/TEST_Ascii_Param.adoc b/GeoTIFF_Standard/standard/abstract_tests/TIFF_Tests/TEST_Ascii_Param.adoc index d94fc63e..69d471bb 100644 --- a/GeoTIFF_Standard/standard/abstract_tests/TIFF_Tests/TEST_Ascii_Param.adoc +++ b/GeoTIFF_Standard/standard/abstract_tests/TIFF_Tests/TEST_Ascii_Param.adoc @@ -13,6 +13,7 @@ |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/TextDefGeoKeys |=== *Purpose:* Verify ASCII parameters @@ -69,6 +70,14 @@ ^| Requirements Class ^| 1026 <| CitationGeoKeys (GTCitationGeoKey) ^| 2049 <| CitationGeoKeys (GeodeticCitationGeoKey) +^| 2063 <| TextDefGeoKeys (GeodeticCRSTextDefGeoKey) +^| 2064 <| TextDefGeoKeys (GeodeticDatumTextDefGeoKey) +^| 2065 <| TextDefGeoKeys (EllipsoidTextDefGeoKey) +^| 2066 <| TextDefGeoKeys (PrimeMeridianTextDefGeoKey) ^| 3073 <| CitationGeoKeys (ProjectedCitationGeoKey) +^| 3097 <| TextDefGeoKeys (ProjectedCRSTextDefGeoKey) +^| 3098 <| TextDefGeoKeys (ProjectionTextDefGeoKey) ^| 4097 <| CitationGeoKeys (VerticalCitationGeoKey) +^| 4100 <| TextDefGeoKeys (VerticalTextDefGeoKey) +^| 4101 <| TextDefGeoKeys (VerticalDatumTextDefGeoKey) |=== diff --git a/GeoTIFF_Standard/standard/abstract_tests/TIFF_Tests/TEST_Short_Param.adoc b/GeoTIFF_Standard/standard/abstract_tests/TIFF_Tests/TEST_Short_Param.adoc index a0da1f7d..f3201335 100644 --- a/GeoTIFF_Standard/standard/abstract_tests/TIFF_Tests/TEST_Short_Param.adoc +++ b/GeoTIFF_Standard/standard/abstract_tests/TIFF_Tests/TEST_Short_Param.adoc @@ -14,11 +14,11 @@ |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.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.2/req/GeodeticCRSGeoKey +|http://www.opengis.net/spec/GeoTIFF/1.2/req/GeodeticDatumGeoKey +|http://www.opengis.net/spec/GeoTIFF/1.2/req/PrimeMeridianGeoKey |http://www.opengis.net/spec/GeoTIFF/1.1/req/UnitsGeoKey -|http://www.opengis.net/spec/GeoTIFF/1.1/req/EllipsoidGeoKey +|http://www.opengis.net/spec/GeoTIFF/1.2/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 diff --git a/GeoTIFF_Standard/standard/annex-e.adoc b/GeoTIFF_Standard/standard/annex-e.adoc index fa5870a0..bd5e23ff 100644 --- a/GeoTIFF_Standard/standard/annex-e.adoc +++ b/GeoTIFF_Standard/standard/annex-e.adoc @@ -99,6 +99,26 @@ __Table E.1 - Summary of GeoKey IDs and names __ <| Reserved (GeogTOWGS84GeoKey used by GDAL) <| <| Reserved +^| 2063 +^| Ascii +<| +<| +<| GeodeticCRSTextDefGeoKey +^| 2064 +^| Ascii +<| +<| +<| GeodeticDatumTextDefGeoKey +^| 2065 +^| Ascii +<| +<| +<| EllipsoidTextDefGeoKey +^| 2066 +^| Ascii +<| +<| +<| PrimeMeridianTextDefGeoKey 5+<| [underline]#Projected CRS Parameter Keys# ^| [underline]#_2060_# ^| Short @@ -230,6 +250,16 @@ __Table E.1 - Summary of GeoKey IDs and names __ <| ProjStraightVertPoleLongGeoKey <| <| (as GeoTIFF v1.0) +^| 3097 +^| Ascii +<| +<| +<| ProjectedCRSTextDefGeoKey +^| 3098 +^| Ascii +<| +<| +<| ProjectionTextDefGeoKey 5+<| [underline]#Vertical CRS Parameter Keys (4096-5119)# ^| 4096 ^| Short @@ -251,6 +281,16 @@ __Table E.1 - Summary of GeoKey IDs and names __ <| VerticalUnitsGeoKey <| <| (as GeoTIFF v1.0) +^| 4100 +^| Ascii +<| +<| +<| VerticalTextDefGeoKey +^| 4101 +^| Ascii +<| +<| +<| VerticalDatumTextDefGeoKey 5+<| [underline]#Dynamic CRS Parameter Keys# ^| 5120 ^| Double diff --git a/GeoTIFF_Standard/standard/clause_7_requirements.adoc b/GeoTIFF_Standard/standard/clause_7_requirements.adoc index 6c8a8ba3..c615986c 100644 --- a/GeoTIFF_Standard/standard/clause_7_requirements.adoc +++ b/GeoTIFF_Standard/standard/clause_7_requirements.adoc @@ -190,8 +190,8 @@ include::requirements/Vertical_GeoKeys/requirements_class_VerticalGeoKey.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. +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 (<>). A citation is mandatory for a user-defined CRSs and CRS objects (<>). @@ -201,6 +201,21 @@ NOTE: In GeoTIFF 1.0 the GeodeticCitationGeoKey key was called GeogCitationGeoKe include::requirements/Citation_Keys/requirements_class_CitationGeoKeys.adoc[] +==== Requirements Class TextDef GeoKeys +The _GeodeticCRSTextDefGeoKey_, _GeodeticDatumTextDefGeoKey_, _EllipsoidTextDefGeoKey_, _PrimeMeridianTextDefGeoKey_, +_ProjectedCRSTextDefGeoKey_, _ProjectionTextDefGeoKey_, _VerticalTextDefGeoKey_ and _VerticalDatumTextDefGeoKey_ +can be used to provide full CRS element definitions through ASCII free text. +The definitions can be of the following forms: + +* **Type 1:** URL of the form `http://www.opengis.net/def/crs/{authority}/{version}/{code}`. +* **Type 2:** Well-Known Text (WKT) as defined by ISO 19162:2019. + +The type number is specified in the +_GeodeticCRSGeoKey_, _GeodeticDatumGeoKey_, _EllipsoidGeoKey_, _PrimeMeridianGeoKey_, +_ProjectedCRSGeoKey_, _ProjectionGeoKey_, _VerticalGeoKey_ or _VerticalDatumGeoKey_. + +include::requirements/Citation_Keys/requirements_class_TextDefGeoKeys.adoc[] + === Requirements for definition of user-defined Model CRS The GeoKeys described in this section are needed only when Model CRSs are not available diff --git a/GeoTIFF_Standard/standard/requirements/Citation_Keys/requirements_class_TextDefGeoKeys.adoc b/GeoTIFF_Standard/standard/requirements/Citation_Keys/requirements_class_TextDefGeoKeys.adoc new file mode 100644 index 00000000..60c8773e --- /dev/null +++ b/GeoTIFF_Standard/standard/requirements/Citation_Keys/requirements_class_TextDefGeoKeys.adoc @@ -0,0 +1,45 @@ +[cols="1,4",width="90%"] +|=== +2+|*Requirements Class TBD: TextDefGeoKeys* {set:cellbgcolor:#CACCCE} +2+|http://www.opengis.net/spec/GeoTIFF/1.2/req/TextDefGeoKeys +{set:cellbgcolor:#FFFFFF} + +|Requirement TBD.1 {set:cellbgcolor:#CACCCE} +|http://www.opengis.net/spec/GeoTIFF/1.2/req/TextDefGeoKeys.ID + +_The GeodeticCRSTextDefGeoKey SHALL have ID = 2063_ + +_The GeodeticDatumTextDefGeoKey SHALL have ID = 2064_ + +_The EllipsoidTextDefGeoKey SHALL have ID = 2065_ + +_The PrimeMeridianTextDefGeoKey SHALL have ID = 2066_ + +_The ProjectedCRSTextDefGeoKey SHALL have ID = 3097_ + +_The ProjectionTextDefGeoKey SHALL have ID = 3098_ + +_The VerticalTextDefGeoKey SHALL have ID = 4100_ + +_The VerticalDatumTextDefGeoKey SHALL have ID = 4101_ +{set:cellbgcolor:#FFFFFF} + +|Requirement TBD.2 {set:cellbgcolor:#CACCCE} +|http://www.opengis.net/spec/GeoTIFF/1.2/req/TextDefGeoKeys.type + +_The TextDefGeoKeys SHALL have type = ASCII_ +{set:cellbgcolor:#FFFFFF} + +|Requirement TBD.3 {set:cellbgcolor:#CACCCE} +|http://www.opengis.net/spec/GeoTIFF/1.2/req/TextDefGeoKeys.url + +_If the textual definition is a URL (type 1), +then the Ascii string SHOULD be of the form +`http://www.opengis.net/def/crs/{authority}/{version}/{code}`. +The `www.opengis.net` part SHALL be something else if the defining authority is not OGC._ +A `{version}` value of 0 means to use the latest version of the definition. + +|Requirement TBD.4 {set:cellbgcolor:#CACCCE} +|http://www.opengis.net/spec/GeoTIFF/1.2/req/TextDefGeoKeys.wkt + +_If the textual definition is a Well-Known Text (type 2), +then the Ascii string SHALL be a valid WKT definition as specified by ISO 19162:2019. +Carriage returns are allowed for readability and should be treated as white spaces. +{set:cellbgcolor:#FFFFFF} +|=== diff --git a/GeoTIFF_Standard/standard/requirements/Geodetic_CRS_GeoKeys/requirements_class_EllipsoidGeoKey.adoc b/GeoTIFF_Standard/standard/requirements/Geodetic_CRS_GeoKeys/requirements_class_EllipsoidGeoKey.adoc index 179cf2bc..661538a2 100644 --- a/GeoTIFF_Standard/standard/requirements/Geodetic_CRS_GeoKeys/requirements_class_EllipsoidGeoKey.adoc +++ b/GeoTIFF_Standard/standard/requirements/Geodetic_CRS_GeoKeys/requirements_class_EllipsoidGeoKey.adoc @@ -1,7 +1,7 @@ [cols="1,4",width="90%"] |=== 2+|*Requirements Class 21.0: EllipsoidGeoKey* {set:cellbgcolor:#CACCCE} -2+|http://www.opengis.net/spec/GeoTIFF/1.1/req/EllipsoidGeoKey +2+|http://www.opengis.net/spec/GeoTIFF/1.2/req/EllipsoidGeoKey {set:cellbgcolor:#FFFFFF} |Requirement 21.1 {set:cellbgcolor:#CACCCE} @@ -14,9 +14,16 @@ _The EllipsoidGeoKey SHALL have ID = 2056_ _The EllipsoidGeoKey SHALL have type = SHORT_ {set:cellbgcolor:#FFFFFF} +|Requirement TBD {set:cellbgcolor:#CACCCE} +|http://www.opengis.net/spec/GeoTIFF/1.2/req/EllipsoidGeoKey.authority +_If the EllipsoidGeoKey value is 1 (authority code specified by URL) +or 2 (full definition provided by WKT 2), +then the EllipsoidTextDefGeoKey SHALL be populated._ +{set:cellbgcolor:#FFFFFF} + |Requirement 21.3 {set:cellbgcolor:#CACCCE} -|http://www.opengis.net/spec/GeoTIFF/1.1/req/EllipsoidGeoKey.reserved -_EllipsoidGeoKey values in the range 1-1023 SHALL be reserved_ +|http://www.opengis.net/spec/GeoTIFF/1.2/req/EllipsoidGeoKey.reserved +_EllipsoidGeoKey values in the range 3-1023 SHALL be reserved_ {set:cellbgcolor:#FFFFFF} |Requirement 21.4 {set:cellbgcolor:#CACCCE} diff --git a/GeoTIFF_Standard/standard/requirements/Geodetic_CRS_GeoKeys/requirements_class_GeodeticCRSGeoKey.adoc b/GeoTIFF_Standard/standard/requirements/Geodetic_CRS_GeoKeys/requirements_class_GeodeticCRSGeoKey.adoc index 933bacd5..3b6e1425 100644 --- a/GeoTIFF_Standard/standard/requirements/Geodetic_CRS_GeoKeys/requirements_class_GeodeticCRSGeoKey.adoc +++ b/GeoTIFF_Standard/standard/requirements/Geodetic_CRS_GeoKeys/requirements_class_GeodeticCRSGeoKey.adoc @@ -1,7 +1,7 @@ [cols="1,4",width="90%"] |=== 2+|*Requirements Class 13.0: GeodeticCRSGeoKey* {set:cellbgcolor:#CACCCE} -2+|http://www.opengis.net/spec/GeoTIFF/1.1/req/GeodeticCRSGeoKey +2+|http://www.opengis.net/spec/GeoTIFF/1.2/req/GeodeticCRSGeoKey {set:cellbgcolor:#FFFFFF} |Requirement 13.1 {set:cellbgcolor:#CACCCE} @@ -14,9 +14,16 @@ _The GeodeticCRSGeoKey SHALL have ID = 2048_ _The GeodeticCRSGeoKey SHALL have type = SHORT_ {set:cellbgcolor:#FFFFFF} +|Requirement TBD {set:cellbgcolor:#CACCCE} +|http://www.opengis.net/spec/GeoTIFF/1.2/req/EllipsoidGeoKey.authority +_If the GeodeticCRSGeoKey value is 1 (authority code specified by URL) +or 2 (full definition provided by WKT 2), +then the GeodeticCRSTextDefGeoKey SHALL be populated._ +{set:cellbgcolor:#FFFFFF} + |Requirement 13.3 {set:cellbgcolor:#CACCCE} -|http://www.opengis.net/spec/GeoTIFF/1.1/req/GeodeticCRSGeoKey.reserved + -_GeodeticCRSGeoKey values in the range 1-1023 SHALL be reserved._ +|http://www.opengis.net/spec/GeoTIFF/1.2/req/GeodeticCRSGeoKey.reserved + +_GeodeticCRSGeoKey values in the range 3-1023 SHALL be reserved._ NOTE: In GeoTIFF v1.0 the reserved ranges were 1001-3999 and 5000-32766. {set:cellbgcolor:#FFFFFF} diff --git a/GeoTIFF_Standard/standard/requirements/Geodetic_CRS_GeoKeys/requirements_class_GeodeticDatumGeoKey.adoc b/GeoTIFF_Standard/standard/requirements/Geodetic_CRS_GeoKeys/requirements_class_GeodeticDatumGeoKey.adoc index 63dfdc67..d5ba431d 100644 --- a/GeoTIFF_Standard/standard/requirements/Geodetic_CRS_GeoKeys/requirements_class_GeodeticDatumGeoKey.adoc +++ b/GeoTIFF_Standard/standard/requirements/Geodetic_CRS_GeoKeys/requirements_class_GeodeticDatumGeoKey.adoc @@ -1,7 +1,7 @@ [cols="1,4",width="90%"] |=== 2+|*Requirements Class 18.0: GeodeticDatumGeoKey* {set:cellbgcolor:#CACCCE} -2+|http://www.opengis.net/spec/GeoTIFF/1.1/req/GeodeticDatumGeoKey +2+|http://www.opengis.net/spec/GeoTIFF/1.2/req/GeodeticDatumGeoKey {set:cellbgcolor:#FFFFFF} |Requirement 18.1 {set:cellbgcolor:#CACCCE} @@ -14,9 +14,16 @@ _The GeodeticDatumGeoKey SHALL have ID = 2050_ _The GeodeticDatumGeoKey SHALL have type = SHORT_ {set:cellbgcolor:#FFFFFF} +|Requirement TBD {set:cellbgcolor:#CACCCE} +|http://www.opengis.net/spec/GeoTIFF/1.2/req/GeodeticDatumGeoKey.authority +_If the GeodeticDatumGeoKey value is 1 (authority code specified by URL) +or 2 (full definition provided by WKT 2), +then the GeodeticDatumTextDefGeoKey SHALL be populated._ +{set:cellbgcolor:#FFFFFF} + |Requirement 18.3 {set:cellbgcolor:#CACCCE} -|http://www.opengis.net/spec/GeoTIFF/1.1/req/GeodeticDatumGeoKey.reserved + -_GeodeticDatumGeoKey values in the range 1-1023 SHALL be reserved._ +|http://www.opengis.net/spec/GeoTIFF/1.2/req/GeodeticDatumGeoKey.reserved + +_GeodeticDatumGeoKey values in the range 3-1023 SHALL be reserved._ NOTE: In GeoTIFF v1.0 the reserved ranges were 1001-5999 and 7000-32766. {set:cellbgcolor:#FFFFFF} diff --git a/GeoTIFF_Standard/standard/requirements/Geodetic_CRS_GeoKeys/requirements_class_PrimeMeridianGeoKey.adoc b/GeoTIFF_Standard/standard/requirements/Geodetic_CRS_GeoKeys/requirements_class_PrimeMeridianGeoKey.adoc index 24d96d18..f5f83f63 100644 --- a/GeoTIFF_Standard/standard/requirements/Geodetic_CRS_GeoKeys/requirements_class_PrimeMeridianGeoKey.adoc +++ b/GeoTIFF_Standard/standard/requirements/Geodetic_CRS_GeoKeys/requirements_class_PrimeMeridianGeoKey.adoc @@ -1,7 +1,7 @@ [cols="1,4",width="90%"] |=== 2+|*Requirements Class 19.0: PrimeMeridianGeoKey* {set:cellbgcolor:#CACCCE} -2+|http://www.opengis.net/spec/GeoTIFF/1.1/req/PrimeMeridianGeoKey +2+|http://www.opengis.net/spec/GeoTIFF/1.2/req/PrimeMeridianGeoKey {set:cellbgcolor:#FFFFFF} |Requirement 19.1 {set:cellbgcolor:#CACCCE} @@ -14,9 +14,16 @@ _The PrimeMeridianGeoKey SHALL have ID = 2051_ _The PrimeMeridianGeoKey SHALL have type = SHORT_ {set:cellbgcolor:#FFFFFF} +|Requirement TBD {set:cellbgcolor:#CACCCE} +|http://www.opengis.net/spec/GeoTIFF/1.2/req/PrimeMeridianGeoKey.authority +_If the PrimeMeridianGeoKey value is 1 (authority code specified by URL) +or 2 (full definition provided by WKT 2), +then the PrimeMeridianTextDefGeoKey SHALL be populated._ +{set:cellbgcolor:#FFFFFF} + |Requirement 19.3{set:cellbgcolor:#CACCCE} -|http://www.opengis.net/spec/GeoTIFF/1.1/req/PrimeMeridianGeoKey.reserved + -_PrimeMeridianGeoKey values in the range 1-1023 SHALL be reserved_ +|http://www.opengis.net/spec/GeoTIFF/1.2/req/PrimeMeridianGeoKey.reserved + +_PrimeMeridianGeoKey values in the range 3-1023 SHALL be reserved_ NOTE: In GeoTIFF v1.0 the range was 101-7999 and 9000-32766 {set:cellbgcolor:#FFFFFF} diff --git a/GeoTIFF_Standard/standard/requirements/Projected_CRS_GeoKey/requirements_class_ProjectedCRSGeoKey.adoc b/GeoTIFF_Standard/standard/requirements/Projected_CRS_GeoKey/requirements_class_ProjectedCRSGeoKey.adoc index 8868ccba..b86171a6 100644 --- a/GeoTIFF_Standard/standard/requirements/Projected_CRS_GeoKey/requirements_class_ProjectedCRSGeoKey.adoc +++ b/GeoTIFF_Standard/standard/requirements/Projected_CRS_GeoKey/requirements_class_ProjectedCRSGeoKey.adoc @@ -14,9 +14,16 @@ _The ProjectedCRSGeoKey SHALL have ID = 3072_ _The ProjectedCRSGeoKey SHALL have type = SHORT_ {set:cellbgcolor:#FFFFFF} +|Requirement TBD {set:cellbgcolor:#CACCCE} +|http://www.opengis.net/spec/GeoTIFF/1.2/req/ProjectedCRSGeoKey.authority +_If the ProjectedCRSGeoKey value is 1 (authority code specified by URL) +or 2 (full definition provided by WKT 2), +then the ProjectedCRSTextDefGeoKey SHALL be populated._ +{set:cellbgcolor:#FFFFFF} + |Requirement 12.3 {set:cellbgcolor:#CACCCE} |http://www.opengis.net/spec/GeoTIFF/1.1/req/ProjectedCRSGeoKey.reserved + -_ProjectedCRSGeoKey values in the range 1-1023 SHALL be reserved._ +_ProjectedCRSGeoKey values in the range 3-1023 SHALL be reserved._ {set:cellbgcolor:#FFFFFF} |Requirement 12.4 {set:cellbgcolor:#CACCCE} diff --git a/GeoTIFF_Standard/standard/requirements/Projection_Definition_Keys/requirements_class_ProjectionGeoKey.adoc b/GeoTIFF_Standard/standard/requirements/Projection_Definition_Keys/requirements_class_ProjectionGeoKey.adoc index 7c7cd9fd..32e8045f 100644 --- a/GeoTIFF_Standard/standard/requirements/Projection_Definition_Keys/requirements_class_ProjectionGeoKey.adoc +++ b/GeoTIFF_Standard/standard/requirements/Projection_Definition_Keys/requirements_class_ProjectionGeoKey.adoc @@ -14,9 +14,16 @@ _The ProjectionGeoKey SHALL have ID = 3074_ _The ProjectionGeoKey SHALL have type = SHORT_ {set:cellbgcolor:#FFFFFF} +|Requirement TBD {set:cellbgcolor:#CACCCE} +|http://www.opengis.net/spec/GeoTIFF/1.2/req/ProjectionGeoKey.authority +_If the ProjectionGeoKey value is 1 (authority code specified by URL) +or 2 (full definition provided by WKT 2), +then the ProjectionTextDefGeoKey SHALL be populated._ +{set:cellbgcolor:#FFFFFF} + |Requirement 26.3 {set:cellbgcolor:#CACCCE} |http://www.opengis.net/spec/GeoTIFF/1.1/req/ProjectionGeoKey.reserved -_ProjectionGeoKey values in the range 1-1023 SHALL be reserved_ +_ProjectionGeoKey values in the range 3-1023 SHALL be reserved_ {set:cellbgcolor:#FFFFFF} |Requirement 26.4 {set:cellbgcolor:#CACCCE} diff --git a/GeoTIFF_Standard/standard/requirements/Vertical_GeoKeys/requirements_class_VerticalDatumGeoKey.adoc b/GeoTIFF_Standard/standard/requirements/Vertical_GeoKeys/requirements_class_VerticalDatumGeoKey.adoc index 6d1cca3f..0705ea38 100644 --- a/GeoTIFF_Standard/standard/requirements/Vertical_GeoKeys/requirements_class_VerticalDatumGeoKey.adoc +++ b/GeoTIFF_Standard/standard/requirements/Vertical_GeoKeys/requirements_class_VerticalDatumGeoKey.adoc @@ -14,9 +14,16 @@ _The VerticalDatumGeoKey SHALL have ID = 4098_ _The VerticalDatumGeoKey SHALL have type = SHORT_ {set:cellbgcolor:#FFFFFF} +|Requirement TBD {set:cellbgcolor:#CACCCE} +|http://www.opengis.net/spec/GeoTIFF/1.2/req/VerticalDatumGeoKey.authority +_If the VerticalDatumGeoKey value is 1 (authority code specified by URL) +or 2 (full definition provided by WKT 2), +then the VerticalDatumTextDefGeoKey SHALL be populated._ +{set:cellbgcolor:#FFFFFF} + |Requirement 25.3 {set:cellbgcolor:#CACCCE} |http://www.opengis.net/spec/GeoTIFF/1.1/req/VerticalDatumGeoKey.reserved + -_VerticalDatumGeoKey values in the range 1-1023 SHALL be reserved_ +_VerticalDatumGeoKey values in the range 3-1023 SHALL be reserved_ NOTE: In GeoTIFF v1.0 the reserved range was 16384-32766. {set:cellbgcolor:#FFFFFF} diff --git a/GeoTIFF_Standard/standard/requirements/Vertical_GeoKeys/requirements_class_VerticalGeoKey.adoc b/GeoTIFF_Standard/standard/requirements/Vertical_GeoKeys/requirements_class_VerticalGeoKey.adoc index e8f47a75..e16fdcad 100644 --- a/GeoTIFF_Standard/standard/requirements/Vertical_GeoKeys/requirements_class_VerticalGeoKey.adoc +++ b/GeoTIFF_Standard/standard/requirements/Vertical_GeoKeys/requirements_class_VerticalGeoKey.adoc @@ -14,9 +14,16 @@ _The VerticalGeoKey SHALL have ID = 4096_ _The VerticalGeoKey SHALL have type = SHORT_ {set:cellbgcolor:#FFFFFF} +|Requirement TBD {set:cellbgcolor:#CACCCE} +|http://www.opengis.net/spec/GeoTIFF/1.2/req/VerticalGeoKey.authority +_If the VerticalGeoKey value is 1 (authority code specified by URL) +or 2 (full definition provided by WKT 2), +then the VerticalTextDefGeoKey SHALL be populated._ +{set:cellbgcolor:#FFFFFF} + |Requirement 14.3 {set:cellbgcolor:#CACCCE} |http://www.opengis.net/spec/GeoTIFF/1.1/req/VerticalGeoKey.reserved + -_VerticalGeoKey values in the range 1-1023 SHALL be reserved_ +_VerticalGeoKey values in the range 3-1023 SHALL be reserved_ NOTE: In GeoTIFF v1.0 the reserved ranges were 0001-4999 and 6000-32766. {set:cellbgcolor:#FFFFFF}