Skip to content

Erroneuous use of "latitude of origin" in Polar Stereographic projection #110

@desruisseaux

Description

@desruisseaux

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions