This issue does not apply to GeoTIFF 1.1 specification, but it applies to the list of projection parameters that should be part of a GeoTIFF specification according issue #5. It may also apply to GDAL implementation (to be confirmed).
The http://geotiff.maptools.org/proj_list/ web site describes the mapping of GeoTIFF projection parameters to EPSG codes or PROJ arguments, as implemented by GDAL. We should consider putting this material, possibly with some corrections, in the GeoTIFF specification for avoiding ambiguities that reduce interoperability. However that material may need some corrections. An issue with Mercator projection was raised in above link. Another issue is described below.
The page about Polar Stereographic (GeoTIFF code 15: CT_PolarStereographic) maps that projection to EPSG::9810, which is Polar Stereographic (variant A). The EPSG registry lists the following parameters for that projection:
- Latitude of natural origin
- Longitude of natural origin
- Scale factor at natural origin
- False easting
- False northing
However, the EPSG guidance notes Coordinate Conversions and Transformations including Formulas — May 2022 said the following about the Latitude of natural origin parameter:
In the basic variant (variant A) the latitude of origin is either the north pole or the south pole, at which is defined a scale factor at the natural origin (…snip…) In variant A the parameter Latitude of natural origin is used only to identify which hemisphere case is required. The only valid entries are ±90° or equivalent in alternative angle units.
But the use of that parameter in geotiff.maptools.org, where they give an example setting that parameter to 71°N, contradicts the EPSG statement. I think that geotiff.maptools.org actually wants to set the Latitude of standard parallel, not the latitude of natural origin. That parameter is defined in EPSG Polar Stereographic (variant B) projection, not variant A. My impression seems confirmed by the example given by geotiff.maptools.org where they set the 71°N value to PROJ +lat_ts argument rather than +lat_0.
Proposed corrections
In geotiff.maptools.org
In geotiff.maptools.org web site, or in the equivalent material that would be put in OGC GeoTIFF specification:
- In "EPSG Code", replace 9810 by 9829.
- Replace the list of parameters by this one from EPSG registry:
- Latitude of standard parallel
- Longitude of origin
- False easting
- False northing
- Map Latitude of standard parallel parameter to
ProjStdParallel1GeoKey (GeoTIFF code 3078) instead of ProjNatOriginLatGeoKey (GeoTIFF code 3081).
- In the example mapping to PROJ arguments, replace
+lat_ts=Latitude at natural origin by +lat_ts=Latitude of standard parallel.
In GDAL
If geotiff.maptools.org reflects GDAL implementation (it seems to be the case for GDAL 3.4.3 according a test we did with gdal_translate), then the correction would be:
- If the
ProjScaleAtNatOriginGeoKey has a value different than 1, keep current behaviour (see next section).
- Otherwise when writing the parameters of projection code 15:
- Omit the
ProjScaleAtNatOriginGeoKey parameter (code 3092).
- Replace the parameter code 3081 by 3078 (associated to the same value).
In GeoTIFF specification
Proposed heuristic for reducing the risk of compatibility break:
- If the scale factor is different than 1, then GeoTIFF projection 15 shall be interpreted as Polar Stereographic (variant A) and the expected latitude parameter is
ProjNatOriginLatGeoKey (code 3081). This is the current behaviour except that the latitude should be restricted to -90° or +90°.
- Otherwise the GeoTIFF projection 15 shall be interpreted as Polar Stereographic (variant B) and the expected latitude parameter is
ProjStdParallel1GeoKey (code 3078). The ProjScaleAtNatOriginGeoKey (code 3092) parameter shall not be present.
This issue does not apply to GeoTIFF 1.1 specification, but it applies to the list of projection parameters that should be part of a GeoTIFF specification according issue #5. It may also apply to GDAL implementation (to be confirmed).
The http://geotiff.maptools.org/proj_list/ web site describes the mapping of GeoTIFF projection parameters to EPSG codes or PROJ arguments, as implemented by GDAL. We should consider putting this material, possibly with some corrections, in the GeoTIFF specification for avoiding ambiguities that reduce interoperability. However that material may need some corrections. An issue with Mercator projection was raised in above link. Another issue is described below.
The page about Polar Stereographic (GeoTIFF code 15:
CT_PolarStereographic) maps that projection to EPSG::9810, which is Polar Stereographic (variant A). The EPSG registry lists the following parameters for that projection:However, the EPSG guidance notes Coordinate Conversions and Transformations including Formulas — May 2022 said the following about the Latitude of natural origin parameter:
But the use of that parameter in geotiff.maptools.org, where they give an example setting that parameter to 71°N, contradicts the EPSG statement. I think that geotiff.maptools.org actually wants to set the Latitude of standard parallel, not the latitude of natural origin. That parameter is defined in EPSG Polar Stereographic (variant B) projection, not variant A. My impression seems confirmed by the example given by geotiff.maptools.org where they set the 71°N value to PROJ
+lat_tsargument rather than+lat_0.Proposed corrections
In geotiff.maptools.org
In geotiff.maptools.org web site, or in the equivalent material that would be put in OGC GeoTIFF specification:
ProjStdParallel1GeoKey(GeoTIFF code 3078) instead ofProjNatOriginLatGeoKey(GeoTIFF code 3081).+lat_ts=Latitude at natural originby+lat_ts=Latitude of standard parallel.In GDAL
If geotiff.maptools.org reflects GDAL implementation (it seems to be the case for GDAL 3.4.3 according a test we did with
gdal_translate), then the correction would be:ProjScaleAtNatOriginGeoKeyhas a value different than 1, keep current behaviour (see next section).ProjScaleAtNatOriginGeoKeyparameter (code 3092).In GeoTIFF specification
Proposed heuristic for reducing the risk of compatibility break:
ProjNatOriginLatGeoKey(code 3081). This is the current behaviour except that the latitude should be restricted to -90° or +90°.ProjStdParallel1GeoKey(code 3078). TheProjScaleAtNatOriginGeoKey(code 3092) parameter shall not be present.