ModelPixelScaleTag ModelTiepointTag GeoKeyDirectoryTag CS R -------- OR ---------------> M --------- AND -----------> Earth ModelTransformationTag GeoDoubleParamsTag GeoAsciiParamsTag
The geocoding coordinate system is defined by the GeoKeyDirectoryTag, while the Georeferencing information (T) is defined by the ModelTiepointTag and the ModelPixelScale, or ModelTransformationTag. Since these two systems are independent of each other, the tags used to store the parameters are separated from each other in the GeoTIFF file to emphasize the orthogonality.
GeoTIFF GeoKey ID's may take any value between 0 and 65535. Following TIFF general approach, the GeoKey ID's from 32768 and above are available for private implementations. However, no registry will be established for these keys or codes, so developers are warned to use them at their own risk.
The Key ID's from 0 to 32767 are reserved for use by the official GeoTIFF spec, and are broken down into the following sub-domains:
[ 0, 1023] Reserved [ 1024, 2047] GeoTIFF Configuration Keys [ 2048, 3071] Geographic/Geocentric CS Parameter Keys [ 3072, 4095] Projected CS Parameter Keys [ 4096, 5119] Vertical CS Parameter Keys [ 5120, 32767] Reserved [32768, 65535] Private use
GeoKey codes, like keys and tags, also range from 0 to 65535. Following the TIFF approach, all codes from 32768 and above are available for private user implementation. There will be no registry for these codes, however, and so developers must be sure that these tags will only be used internally. Use private codes at your own risk.
The codes from 0 to 32767 for all public GeoKeys are reserved by this GeoTIFF specification.
For consistency, several key codes have the same meaning in all implemented GeoKeys possessing a SHORT numerical coding system:
0 = undefined 32767 = user-defined
The "undefined" code means that this parameter is intentionally omitted, for whatever reason. For example, the datum used for a given map may be unknown, or the accuracy of a aerial photo is so low that to specify a particular datum would imply a higher accuracy than is in the data.
The "user-defined" code means that a feature is not among the standard list, and is being explicitly defined. In cases where this is meaningful, Geokey parameters have been supplied for the user to define this feature.
"User-Defined" requirements: In each section below a specification of the additional GeoKeys required for the "user-defined" option is given. In all cases the corresponding "Citation" key is strongly recommended, as per the FGDC Metadata standard regarding "local" types.
These keys are to be used to establish the general configuration of this file's coordinate system, including the types of raster coordinate systems, model coordinate systems, and citations if any.
Key ID = 1024 Type: SHORT (code) Values: Section 22.214.171.124 Codes
This GeoKey defines the general type of model Coordinate system used, and to which the raster space will be transformed:unknown, Geocentric (rarely used), Geographic, Projected Coordinate System, or user-defined. If the coordinate system is a PCS, then only the PCS code need be specified. If the coordinate system does not fit into one of the standard registered PCS'S, but it uses one of the standard projections and datums, then its should be documented as a PCS model with "user-defined" type, requiring the specification of projection parameters, etc.
GeoKey requirements for User-Defined Model Type (not advisable): GTCitationGeoKey
Key ID = 1025 Type = Section 126.96.36.199 codesThis establishes the Raster Space coordinate system used; there are currently only two, namely RasterPixelIsPoint and RasterPixelIsArea. No user-defined raster spaces are currently supported. For variance in imaging display parameters, such as pixel aspect-ratios, use the standard TIFF 6.0 device-space tags instead.
Key ID = 1026 Type = ASCIIAs with all the "Citation" GeoKeys, this is provided to give an ASCII reference to published documentation on the overall configuration of this GeoTIFF file.
In general, the geographic coordinate system used will be implied by the projected coordinate system code. If however, this is a user-defined PCS, or the ModelType was chosen to be Geographic, then the system must be explicitly defined here, using the Horizontal datum code.
Key ID = 2048 Type = SHORT (code) Values = Section 188.8.131.52 CodesThis key may be used to specify the code for the geographic coordinate system used to map lat-long to a specific ellipsoid over the earth.
GeoKey Requirements for User-Defined geographic CS: GeogCitationGeoKey GeogGeodeticDatumGeoKey GeogAngularUnitsGeoKey (if not degrees) GeogPrimeMeridianGeoKey (if not Greenwich)
Key ID = 2049 Type = ASCII Values = textGeneral citation and reference for all Geographic CS parameters.
Key ID = 2050 Type = SHORT (code) Values = Section 184.108.40.206 CodesThis key may be used to specify the horizontal datum, defining the size, position and orientation of the reference ellipsoid used in user-defined geographic coordinate systems.
GeoKey Requirements for User-Defined Horizontal Datum: GeogCitationGeoKey GeogEllipsoidGeoKey
Key ID = 2051 Type = SHORT (code) Units: Section 220.127.116.11 codeAllows specification of the location of the Prime meridian for user-defined geographic coordinate systems. The default standard is Greenwich, England.
Key ID = 2061 Type = DOUBLE Units = GeogAngularUnits
This key allows definition of user-defined Prime Meridians, the location of which is defined by its longitude relative to Greenwich.
Key ID = 2052 Type = SHORT Values: Section 18.104.22.168 CodesAllows the definition of geocentric CS linear units for user-defined GCS.
Key ID = 2053 Type = DOUBLE Units: metersAllows the definition of user-defined linear geocentric units, as measured in meters.
Key ID = 2054 Type = SHORT (code) Values = Section 22.214.171.124 CodesAllows the definition of geocentric CS Linear units for user-defined GCS and for ellipsoids.
GeoKey Requirements for "user-defined" units: GeogCitationGeoKey GeogAngularUnitSizeGeoKey
Key ID = 2055 Type = DOUBLE Units: radiansAllows the definition of user-defined angular geographic units, as measured in radians.
Key ID = 2056 Type = SHORT (code) Values = Section 126.96.36.199 CodesThis key may be used to specify the coded ellipsoid used in the geodetic datum of the Geographic Coordinate System.
GeoKey Requirements for User-Defined Ellipsoid: GeogCitationGeoKey [GeogSemiMajorAxisGeoKey, [GeogSemiMinorAxisGeoKey | GeogInvFlatteningGeoKey] ]
Key ID = 2057 Type = DOUBLE Units: Geocentric CS Linear UnitsAllows the specification of user-defined Ellipsoid Semi-Major Axis (a).
Key ID = 2058 Type = DOUBLE Units: Geocentric CS Linear UnitsAllows the specification of user-defined Ellipsoid Semi-Minor Axis (b).
Key ID = 2059 Type = DOUBLE Units: none.Allows the specification of the inverse of user-defined Ellipsoid's flattening parameter (f). The eccentricity-squared e^2 of the ellipsoid is related to the non-inverted f by:
e^2 = 2*f - f^2 Note: if the ellipsoid is spherical the inverse-flattening becomes infinite; use the GeogSemiMinorAxisGeoKey instead, and set it equal to the semi-major axis length.
Key ID = 2060 Type = SHORT (code) Values = Section 188.8.131.52 CodesThis key may be used to specify the angular units of measurement used to defining azimuths, in geographic coordinate systems. These may be used for defining azimuthal parameters for some projection algorithms, and may not necessarily be the same angular units used for lat-long.
The PCS range of GeoKeys includes the projection and coordinate transformation keys as well. The projection keys are included in this block since they can only be used to define projected coordinate systems.
Key ID = 3072 Type = SHORT (codes) Values: Section 184.108.40.206 codes
This code is provided to specify the projected coordinate system.
GeoKey requirements for "user-defined" PCS families: PCSCitationGeoKey ProjectionGeoKey
Key ID = 3073 Type = ASCIIAs with all the "Citation" GeoKeys, this is provided to give an ASCII reference to published documentation on the Projected Coordinate System particularly if this is a "user-defined" PCS.
With the exception of the first two keys, these are mostly projection-specific parameters, and only a few will be required for any particular projection type. Projected coordinate systems automatically imply a specific projection type, as well as specific parameters for that projection, and so the keys below will only be necessary for user-defined projected coordinate systems.
Key ID = 3074 Type = SHORT (code) Values: Section 220.127.116.11 codesAllows specification of the coordinate transformation method and projection zone parameters. Note : when associated with an appropriate Geographic Coordinate System, this forms a Projected Coordinate System.
GeoKeys Required for "user-defined" Projections:
PCSCitationGeoKey ProjCoordTransGeoKey ProjLinearUnitsGeoKey (additional parameters depending on ProjCoordTransGeoKey).
Key ID = 3075 Type = SHORT (code) Values: Section 18.104.22.168 codesAllows specification of the coordinate transformation method used. Note: this does not include the definition of the corresponding Geographic Coordinate System to which the projected CS is related; only the transformation method is defined here.
GeoKeys Required for "user-defined" Coordinate Transformations: PCSCitationGeoKey <additional parameter geokeys depending on the Coord. Trans. specified).
Key ID = 3076 Type = SHORT (code) Values: Section 22.214.171.124 codesDefines linear units used by this projection.
Key ID = 3077 Type = DOUBLE Units: metersDefines size of user-defined linear units in meters.
Key ID = 3078 Type = DOUBLE Units: GeogAngularUnit Alias: ProjStdParallelGeoKey (from Rev 0.2)Latitude of primary Standard Parallel.
Key ID = 3079 Type = DOUBLE Units: GeogAngularUnitLatitude of second Standard Parallel.
Key ID = 3080 Type = DOUBLE Units: GeogAngularUnit Alias: ProjOriginLongGeoKeyLongitude of map-projection Natural origin.
Key ID = 3081 Type = DOUBLE Units: GeogAngularUnit Alias: ProjOriginLatGeoKeyLatitude of map-projection Natural origin.
Key ID = 3082 Type = DOUBLE Units: ProjLinearUnit
Gives the easting coordinate of the map projection Natural origin.
Key ID = 3083 Type = DOUBLE Units: ProjLinearUnit
Gives the northing coordinate of the map projection Natural origin.
Key ID = 3084 Type = DOUBLE Units: GeogAngularUnit
Gives the longitude of the False origin.
Key ID = 3085 Type = DOUBLE Units: GeogAngularUnit
Gives the latitude of the False origin.
Key ID = 3086 Type = DOUBLE Units: ProjLinearUnit
Gives the easting coordinate of the false origin. This is NOT the False Easting, which is the easting attached to the Natural origin.
Key ID = 3087 Type = DOUBLE Units: ProjLinearUnit
Gives the northing coordinate of the False origin. This is NOT the False Northing, which is the northing attached to the Natural origin.
Key ID = 3088 Type = DOUBLE Units: GeogAngularUnitLongitude of Center of Projection. Note that this is not necessarily the origin of the projection.
Key ID = 3089 Type = DOUBLE Units: GeogAngularUnitLatitude of Center of Projection. Note that this is not necessarily the origin of the projection.
Key ID = 3090 Type = DOUBLE Units: ProjLinearUnit
Gives the easting coordinate of the center. This is NOT the False Easting.
Key ID = 3091 Type = DOUBLE Units: ProjLinearUnit
Gives the northing coordinate of the center. This is NOT the False Northing.
Key ID = 3092 Type = DOUBLE Units: none Alias: ProjScaleAtOriginGeoKey (Rev. 0.2)Scale at Natural Origin. This is a ratio, so no units are required.
Key ID = 3093 Type = DOUBLE Units: noneScale at Center. This is a ratio, so no units are required.
Key ID = 3094 Type = DOUBLE Units: GeogAzimuthUnitAzimuth angle east of true north of the central line passing through the projection center (for elliptical (Hotine) Oblique Mercator). Note that this is the standard method of measuring azimuth, but is opposite the usual mathematical convention of positive indicating counter-clockwise.
Key ID = 3095 Type = DOUBLE Units: GeogAngularUnitLongitude at Straight Vertical Pole. For polar stereographic.
Key ID = 2060 Type = SHORT (code) Values = Section 126.96.36.199 CodesThis key is actually part of the "Geographic CS Parameter Keys" section, but is mentioned here as it is useful for defining units used in the azimuthal projection parameters.
Note: Vertical coordinate systems are not yet implemented. These sections are provided for future development, and any vertical coordinate systems in the current revision must be defined using the VerticalCitationGeoKey.
Key ID = 4096 Type = SHORT (code) Values = Section 188.8.131.52 CodesThis key may be used to specify the vertical coordinate system.
Key ID = 4097 Type = ASCII Values = textThis key may be used to document the vertical coordinate system used, and its parameters.
Key ID = 4098 Type = SHORT (code) Values = Section 184.108.40.206 codesThis key may be used to specify the vertical datum for the vertical coordinate system.
Key ID = 4099 Type = SHORT (code) Values = Section 220.127.116.11 CodesThis key may be used to specify the vertical units of measurement used in the geographic coordinate system, in cases where geographic CS's need to reference the vertical coordinate. This, together with the Citation key, comprise the only fully implemented keys in this section, at present.
Step 1: Determine the Coordinate system type of the raster data, based on the nature of the data: pixels derived from scanners or other optical devices represent areas, and most commonly will use the RasterPixelIsArea coordinate system. Pixel data such as digital elevation models represent points, and will probably use RasterPixelIsPoint coordinates. Store in: GTRasterTypeGeoKey Step 2: Determine which class of model space coordinates are most natural for this dataset:Geographic, Geocentric, or Projected Coordinate System. Usually this will be PCS. Store in: GTModelTypeGeoKey Step 3: This step depends on the GTModelType: case PCS: Determine the PCS projection system. Most of the PCS's used in standard State Plane and national grid systems are defined, so check this list first; the EPSG index in section 6.4 may be useful for this purpose. Store in: ProjectedCSTypeGeoKey, ProjectedCSTypeGeoKey If coded, it will not be necessary to specify the Projection datum, etc for this case, since all of those parameters are determined by the ProjectedCSTypeGeoKey code. Skip to step 4 from here. If none of the coded PCS's match your system, then this is a user-defined PCS. Use the Projection code list to check for standard projection systems. Store in: ProjectionGeoKey and skip to Geographic CS case. If none of the Projection codes match your system, then this is a user-defined projection. Use the ProjCoordTransGeoKey to specify the coordinate transformation method (e.g. Transverse Mercator), and all of the associated parameters of that method. Also define the linear units used in the planar coordinate system. Store in: ProjCoordTransGeoKey, ProjLinearUnitsGeoKey <and other CT related parameter keys> Now continue on to define the Geographic CS, below. case GEOCENTRIC: case GEOGRAPHIC: Check the list of standard GCS's and use the corresponding code. To use a code both the Datum, Prime Meridian, and angular units must match those of the code. Store in: GeographicTypeGeoKey and skip to Step 4. If none of the coded GCS's match exactly, then this is a user-defined GCS. Check the list of standard datums, Prime Meridians, and angular units to define your system. Store in: GeogGeodeticDatumGeoKey, GeogAngularUnitsGeoKey, GeogPrimeMeridianGeoKey and skip to Step 4. If none of the datums match your system, you have a user-defined datum, which is an odd system, indeed. Use the GeogEllipsoidGeoKey to select the appropriate ellipsoid or use the GeogSemiMajorAxisGeoKey, GeogInvFlatteningGeoKey to define, and give a reference using the GeogCitationGeoKey. Store in: GeogEllipsoidGeoKey, etc. and go to Step 4. Step 4: Install the GeoKeys/codes into the GeoKeyDirectoryTag, and the DOUBLE and ASCII key values into the corresponding value-tags. Step 5: Having completely defined the Raster & Model coordinate system, go to Cookbook section 2.6.2 and use the Georeferencing Tags to tie the raster image down onto the Model space.