I. Abstract
This OGC Testbed 20 Report defines a draft OGC Specification for Geographic High Efficiency Image Format (GeoHEIF). The Report specifies requirements and encoding rules for using the High Efficiency Image File Format (HEIF) for the exchange of georeferenced or geocoded imagery. The GeoHEIF specification defines HEIF properties to include the georeference information in one or more image items. In addition, other HEIF properties are added to define the semantics of dimensions and cell properties that together allow for converting HEIF into a datacube container.
Please note that while the intent is to submit this document to the OGC for consideration as an OGC Standard, this document is internally referred to as an OGC Testbed 20 Report or more simply “this Report” or “this specification”.
II. Keywords
The following are keywords to be used by search engines and document catalogues.
raster, datacube, ISOBMFF, MPEG, HEIF, HEIC
III. Preface
The High Efficiency Image Format (HEIF) format is a multipart data encoding that is defined by Moving Picture Experts Group (MPEG). In addition to camera footage, by adding the georeference information, HEIF can be used to store geospatial imagery. The GeoHEIF (Geographic High Efficiency Image Format) specification defines HEIF properties to include the georeference information in one or more image items. In addition, other HEIF properties are added to define the semantics of dimensions and cell properties that together enable converting HEIF into a datacube container. This Testbed 20 GIMI Report is based on previous experiences gained in the October 2023 London OGC Code Sprint and in Testbed 20 testing. This Report is presented as a standard candidate for consideration by the OGC Technical Committee (TC). The first step in the OGC TC would be the creation of a SWG, then a broader discussion, and then eventually final approval as an OGC Standard. This process is similar to the one used for GeoTIFF, where an external imagery file was with the necessary elements to support geospatial metadata.
IV. Submitters
All questions regarding this submission should be directed to the editor or the submitters:
Table — Submitters and affiliation
| Name | Affiliation | OGC member |
|---|---|---|
| Núria Julià Selvas | University Autonomous of Barcelona, Spain / CREAF | Yes |
| Joan Masó Pau | University Autonomous of Barcelona, Spain / CREAF | Yes |
V. Security Considerations
No security considerations are made in this Report. Future work could consider including information about security labeling and methods to encrypting the images in this document or in another extension of HEIF or in other OGC document.
VI. Contributors
Additional contributors to this draft Specification include the following:
Brad Hards, Silvereye Technology
Martin Desruisseaux, Geomatys
1. Scope
The HEIF format supports the storage and containment of uncompressed and compressed forms of imagery, with supporting metadata. This Testbed 20 Report defines a GeoHEIF (Geographic High Efficiency Image Format) format based on HEIF and ISO base media file format (ISOBMFF) standards that can be used to represent orthorectified, georectified, and unrectified imagery. Images can be geospatially enabled by providing coordinate reference system (CRS) metadata defined in Compact URIs (CURIEs), Well-Known Text version 2 (WKT2), or other OGC approved encodings. Using a raster space to model space transformation matrix, the image becomes georectified. Alternatively, a set of tie-points can be used to make the image georeferenceable. In addition, by adding the definition of the semantics of dimensions and cell properties, the specification supports geospatial datacubes. Both dimensions and cell properties can be continuous, ordinal or categorical. In addition, by adding the definition of the semantics of dimensions and cell properties, geospatial datacubes are supported. Both dimensions and cell properties can take continuous, ordinal, or categorical values.
The scope of this Report includes still and sequence imagery but does not consider motion imagery.
The scope of this Report also includes containment of imagery with a broad range of array sizes, frame rates, one-to-many components (bands), variability in color formats, bit depths and, 2D dimension, or N dimension datacubes:
Panchromatic or grey scale imagery
Photographic or color imagery
Multispectral satellite imagery
Hyperspectral satellite imagery
Orthophotography
Stereogram imagery
Timeseries imagery
Model outputs imagery of continuous or categorical variables through time
Astronomic or planetary imagery
Synthetic Aperture Radar imagery
The draft Specification defined in this Report builds on and leverages existing HEIF and ISOBMFF functionality including advanced codecs, image overviews, image tiling, and metadata. Those capabilities are not separately defined in this Report but can be used along with the geographical capabilities defined in this Report.
2. Conformance
This draft Specification defines 14 requirements grouped into 7 Requirements Classes.
Requirements for 3 standardization target types are considered:
HEIF File
Properties in a HEIF File
Associations between properties and image items in a HEIF file
Conformance class related with HEIF File “Requirements Class HEIF” https://www.opengis.net/spec/GeoHEIF/1.0/req/HEIF is the core of this draft Specification and shall be considered mandatory for all implementations.
NOTE: The “Requirements Class HEIF” uses the ISOBMFF branding mechanism to specify file compatibility with this draft Specification. To implement solutions based on this draft Specification, understanding the ISOBMFF and HEIF standards is necessary.
Conformance with this draft Specification shall be checked using all the relevant tests specified in Annex A (normative) of this document. The framework, concepts, and methodology for testing, and the criteria to be achieved to claim conformance are specified in the OGC Compliance Testing Policies and Procedures and the OGC Compliance Testing web site.
In order to conform to this OGC® interface draft Specification, a software implementation shall choose to implement:
Any one of the conformance levels specified in Annex A (normative).
All requirements-classes and conformance-classes described in this document are owned by the draft Specification(s) identified.
3. Normative references
The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.
ISO/IEC: ISO/IEC 14496-12:2022, Information technology — Coding of audio-visual objects — Part 12: ISO base media file format. International Organization for Standardization, International Electrotechnical Commission, Geneva (2022). https://www.iso.org/standard/83102.html.
ISO/IEC: ISO/IEC 23008-12:2022, Information technology — High efficiency coding and media delivery in heterogeneous environments — Part 12: Image File Format. International Organization for Standardization, International Electrotechnical Commission, Geneva (2022). https://www.iso.org/standard/83650.html.
4. Terms, definitions and abbreviated terms
This document uses the terms defined in OGC Policy Directive 49, which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word “shall” (not “must”) is the verb form used to indicate a requirement to be strictly followed to conform to this document and OGC documents do not use the equivalent phrases in the ISO/IEC Directives, Part 2.
This document also uses terms defined in the OGC Standard for Modular specifications (OGC 08-131r3), also known as the ‘ModSpec’. The definitions of terms such as standard, specification, requirement, and conformance test are provided in the ModSpec.
For the purposes of this document, the following additional terms and definitions apply.
This document uses the terms defined in Sub-clause 5.3 of OGC 06-121r9, which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word “shall” (not “must”) is the verb form used to indicate a requirement to be strictly followed to conform to this standard.
For the purposes of this document, the following additional terms and definitions apply.
ASCII encoded “four-character code” indicating data formatting requirements. Applications implement the 4CC code as a 32-bit big-endian unsigned integer with the first character in the MSB, last character in the LSB. There is no string termination
[SOURCE: NGA.STND.0076_1.0_GIMI]
In the context of this Report, this is an identifier in the FileTypeBox of a HEIF file that identify a specification to which the file complies
type of variable that represents qualitative characteristics or attributes that can be grouped into distinct categories (examples of categorical variables include land cover classification, gender and business type)
variable measured (or stored) for a cell of the gridded space
variable that can take on any value within a given range i.e., that have an infinite number of possible values between two values (examples include height, time, and temperature)
epoch to which coordinates in a dynamic coordinate reference system are referenced
[SOURCE: OGC 18-005r8, Clause 3.1]
coordinate system that is related to an object by a datum
Note 1 to entry: Geodetic and vertical datums are referred to as reference frames.
Note 2 to entry: For geodetic and vertical reference frames, the object will be the Earth. In planetary applications, geodetic and vertical reference frames may be applied to other celestial bodies
[SOURCE: OGC 18-005r8, Clause 3.1]
set of mathematical rules for specifying how coordinates are to be assigned to points
[SOURCE: OGC 18-005r8, Clause 3.1]
feature that acts as a function to return values from its range for any direct position within its spatial, temporal, or spatiotemporal domain
[SOURCE: ISO 19123:2005]
multi-dimensional (“n-D”) array of values designed for efficient data analysis and querying. The data is arranged in dimensions that can be coordinates, other continuous variables or even enumerations, e.g., categories
number of measurements or axes needed to describe a position in a coordinate system
[SOURCE: ISO 19123:2005]
ordered list of axes whose lower and upper bounds establish the extent along each axis
[SOURCE: OGC 09-146r6]
two- or three-dimensional coordinate reference system based on a geodetic reference frame and having either a three-dimensional Cartesian or an ellipsoidal or a spherical coordinate system
Note 1 to entry: In this document a coordinate reference system based on a geodetic reference frame and having an ellipsoidal coordinate system is geographic
[SOURCE: OGC 18-005r8, Clause 3.1]
coordinate reference system that has a geodetic reference frame and an ellipsoidal coordinate system
[SOURCE: OGC 18-005r8, Clause 3.1]
grid with regularly spaced cells in a geographic (i.e., latitude/longitude) or map coordinate system defined in a CRS so that any cell in the grid can be geolocated given its grid coordinate and the grid origin, cell spacing, and orientation
[SOURCE: ISO 19115:2003]
grid with irregularly spaced cells in any given geographic/map projection coordinate system, whose individual cells can be geolocated using geolocation information supplied with the data but cannot be geolocated from the grid properties alone
[SOURCE: ISO 19115:2003]
coverage covering of a multi-dimensional region using quadrilateral shapes (in the 2D case) or their n-dimensional generation (in the n-D case) with no overlaps and gaps
Note 1 to entry: The term grid originates historically from a 2D view: In ISO 19123:2005 a grid consists of a network composed of one or more sets of curves in which the members of each set intersect the members of the other sets. Meantime, nD grids (including 1D) are known and in use. The “covering” of a region is also known as a tessellation in mathematics.
Note 2 to entry: The ISO 19123:2005 definition is equivalent to the revised definition of this document.
[SOURCE: OGC 07-011r2]
fundamental unit that represents a specific location or intersection point within the grid structure and have a value for a concrete property. It is defined by its position along multiple dimensions, typically including spatial coordinates and potentially other extra dimensions such as time or frequency
In the context of this Report, this is data that does not require timed processing, as opposed to sample data, and is described by the boxes contained in a HEIF MetaBox
[SOURCE: ISO/IEC 23008-12:2022]
In the context of this Report, this is descriptive or transformative information about an item as stored in the HEIF item properties array in the ItemPropertyContainerBox
[SOURCE: ISO/IEC 23008-12:2022]
space in a coordinate reference system related to the Earth or a part of the Earth
[SOURCE: OGC 19-008r4]
missing value, invalid value, or inapplicable value for that location that occurs when no data value is stored for the variable in an observation
categorical value with a clear ordering amount the set it belongs. The spacing between values may not be consistent or meaningful (examples include academic grades (A, B, C), clothing sizes (S, M, L, XL), and attitude scales (strongly agree, agree, disagree, strongly disagree))
coordinate reference system derived from a geographic coordinate reference system by applying a map projection
Note 1 to entry: May be two- or three-dimensional, the dimension being equal to that of the geographic coordinate reference system from which it is derived.
Note 2 to entry: In the three-dimensional case the horizontal coordinates (geodetic latitude and geodetic longitude coordinates) are projected to northing and easting and the ellipsoidal height is unchanged
[SOURCE: OGC 18-005r8, Clause 3.1]
rectilinear grid NOTE: The term is also used as an imprecise generic term for imagery and gridded coverage data. NOTE: Historically, the term derives from the scanning lines display pattern on a cathode ray tube.
[SOURCE: OGC 07-011r2]
set of cell property (feature attribute) values associated by a function with the elements of the domain of a coverage
[SOURCE: ISO 19123:2005]
any characteristic, number, or quantity that can be measured or counted
cell in a multidimensional space
4.29. Abbreviated terms
2D
Two dimensions or two-dimensional
3D
Three dimensions or three-dimensional
4CC
Four Character Code
AVIF
AV1 Image File Format
CIS
Coverage Implementation Schema
CRS
Coordinate Reference System
CSCRNA
Corner Footprint
CURIEs
Compact URIs
DEM
Digital Elevation Model
DSM
Digital Surface Model
DTM
Digital Terrain Model
EPSG
European Petroleum Survey Group
GeoHEIF
Geographic High Efficiency Image Format
GEOINT
Geospatial-Intelligence
GEOTIFF
Geographic Tagged Image File Format
GFM
Generic Frame-sequence Model
GIMI
GEOINT Imagery Media for ISR
GLAS
Generic Linear Array Scanner
GMLJP2
GML in JPEG 2000
HEIF
High Efficiency Image File Format
HEVC
High Efficiency Video Coding
HSI
HyperSpectral Imagery
I-ADOPT
InteroperAble Descriptions of Observable Property Terminology
IGEOLO
Image GEOgraphic LOcation
ISO
International Organization for Standardization
ISOBMFF
ISO Base Media File Format
ISR
Intelligence, Surveillance, and Reconnaissance
JPEG
Joint Photographic Experts Group
LSB
Least significant bit
MPEG
Moving Picture Experts Group
MSB
Most significant bit
NITF
National Imagery Transformation Format
SDEs
Support Data Extensions
TC
Technical Committee
TRE
Tagged Record Extension
UoM
Units of Measure
URI
Uniform Resource Identifier
WKT
Well Known Text
5. Conventions
This section provides details and examples for any conventions used in this Report. Examples of conventions are symbols, abbreviations, use of XML schema, or special notes regarding how to read the document.
5.1. Identifiers
The normative provisions specified in this specification are denoted by the URI
https://www.opengis.net/spec/GeoHEIF/1.0
All requirements and conformance tests that appear in this document are denoted by partial URIs which are relative to this base.
5.2. MPEG Syntax Description Language
The MPEG encoding of syntax uses MPEG SDL which will be defined in ISO/IEC 14496-34 (currently at Final Draft International Standard status), based on updates to ISO/IEC 14496-1.
NOTE: The float(64) representation was double(64) in ISO/IEC 14496-1.
5.3. Encoding in GEOHEIF
All numerical values in this specification use the MPEG convention of big endian byte order (including floating point values). Note that ISO/IEC 23001-17:2024 allows encoding of image values in both big endian and little endian.
In the definition of strings this specification always use utf8string so they are UTF-8 encoded bytes with a terminating null. ISOBMFF and HEIF may use other encodings (e.g., packed ASCII, or utfstring which has a different meaning).
6. Overview
The requirements defined in this specification build on the work done in GeoTIFF (OGC 19-008r4) and complements OGC Abstract Specification Topic 6: Schema for Coverage Geometry and Functions OGC 07-011r2 and its implementation in the Coverage Implementation Schema (OGC 09-146r6), as well as the work done in GMLJP2 (OGC 08-085r8).
6.1. Georeference
The requirements defined in this specification can be used to represent georectified and georeferenceable imagery.
Images can be geospatially-enabled by adding a coordinate reference system (CRS) defined in WKT2 or other OGC approved encodings, along with a raster space to model space transformation matrix.
Georeferenceable images can also be tied to Clause 4.21 using one or more tie points without a transformation matrix. In this case, the relationship to the model space is not known, except at those tie points. Tie points are not restricted to only being at the corners. This supports images where part of the image space contains pixels from above the horizon.
NOTE: Georeferenceable images may have additional metadata, such as about a sensor model, which could provide for additional geospatial referencing with error propagation. This may also be applicable to georectified images under some circumstances.
6.2. Dimensions and Properties: DataCube
The OGC Coverage Implementation Schema (CIS) (OGC 09-146r6) divides the variables involved in the continuous distributions of observed properties into two main concepts.
Dimensions: are the variables that define the multidimensional gridded space. Every combination of the values of these variables defines a cell in a multidimensional space, sometimes called voxel. Examples include longitude, latitude, time and height.
Properties: are the variables measured (or stored) in each cell of the gridded space. Examples include temperature, intensity and reflected light.
Ideally, these variables should be defined with a minimum set of common characteristics: A name, a URI to a concept (a.k.a. a definition in a vocabulary) and its units of measure (again with a name, a URI definition and possibly a symbol). The use of the word properties might result confusing as it is used to designate characteristics of objects (in programming languages) or features (in geospatial entities). In fact, the selection of the word properties is done on purpose to help to converge the coverage model with the vector/feature model. In the OGC 07-011r2 “properties” are called “range” and sometimes are also called “attributes” or “bands” in remote sensing. As such, do not get confused with HEIF item properties. In this document, properties that are the variables measured in each cell of the gridded space are called cell properties.
While both types of variables share some commonalities, there are some differences.
Dimensions: Spatial dimensions comes in “pairs” (e.g., longitude, latitude) and they are defined “together” in a single URI (e.g., https://www.opengis.net/def/crs/OGC/1.3/CRS84) along with Units of Measure (UoM), and axis order. They can only take discrete values (quantized) and have regular, irregular or even categorical values.
Properties: Apart from the common characteristics, in some cases the values may not exist in some cell and there is a need for being able to specify a “nilValue.” Values can be continuous, discrete or categorical. Another characteristic defines if the value in the cell covers the whole pixel or is in the center. In GeoTIFF (OGC 19-008r4) this characteristic is defined as GTRasterTypeGeoKey (RasterPixelIsArea and RasterPixelIsPoint).
URI to a concept can define many characteristics. For example, some “bands” require more than a name such as polarization, etc. Normally there should be a URI that represents all those characteristics. If you need to express “characteristics” you can always link concepts together in a more precise concept. One example of how this can be done is provided by the InteroperAble Descriptions of Observable Property Terminology (I-ADOPT) Working Group (https://i-adopt.github.io/).
Figure 1 — Examples of DataCubes: (1) extra dimension: Time, property type: Digital numbers; (2) extra dimension: Altitude, property type: Temperature; (3) extra dimension: Species, property type: Occurrences; (4) extra dimension: Observed or modeled, property type: NO2 concentration
When dealing with 2D images (a.k.a. slices), the image axes (i and j) need to be assigned to 2 dimensions and the other dimensions are constant values for an image. Each image describes only one or more properties. Only image encodings supporting multiple components are able to represent more than one property per image.
The ISO Base Media File Format (ISOBMFF) defined in ISO/IEC 14496-12:2022 and the ISO High Efficiency Image File Format (HEIF) defined in ISO/IEC 23008-12:2022 can be used to encode images and videos. However, there is no provision on how to georeference the images. A brief introduction of the ISOBMFF and HEIF format structure can be found in Annex D.
This Report specifies extensions to the ISO Base Media File Format (ISOBMFF) defined in ISO/IEC 14496-12:2022 and extended in ISO/IEC 23008-12:2022 to define the following geo related properties to be include in ItemPropertyContainerBox ipco that are parts of ItemPropertyBox iprp in the MetaBox.
CRSs (specified in a mcrs property in ItemPropertyContainerBox) that includes the definition of the first “2D” dimensions
Models to assign two dimensions of the model to image axes (i and j): A affine transformation matrix (specified in a mtxf in ItemPropertyContainerBox) or tie points (specified in a tiep in ItemPropertyContainerBox).
Extra-dimensions (specified in a edim in ItemPropertyContainerBox): including the quantized values that can be implicit in a regular grid or a direct list of values for irregular or categorical dimensions
Cell property types (specified in a pcel in ItemPropertyContainerBox): including the name, definition, units of measure, if the measure represent the central point or the cell area, the minimum and maximum values in the datacube, and the nilValue and what the nilValue represents.
In addition to that another small property is also included:
Constant values for the zero or more (N-2) extra-dimensions not included in the CRSs (specified in a edvl item property container box).
The specification defined in this report also extends the image concept by relating it to the cell properties introduced before in cell property types. The images themselves are stored in ImageItemData in the MediaDataBox mdat and remain unaltered. The actual relation to the cell properties is done independently in the ItemPropertyAssociationBox that relates the ItemPropertyContainerBox to the ImageItemData.
In fact, for each image there is an association to:
A reference to one CRS;
A reference to one model to assign the two dimensions of the model defined in the CRS to image axes (i and j): In the case of affine transformation matrix and tie points, and using nCol and nRow of the image, the bounding box (BBOX) and the cell size in CRS units can be obtained;
Reference to zero or more (N-2) extra-dimensions;
Reference to zero or more values the (N-2) extra-dimensions; and
Reference to one or more properties (one for each channel in an image).
The requirements classes defined in this report are structured as follows:
A requirements class defining the properties to be include in ItemPropertyContainerBox; and
A requirements class defining how to associate the properties to the images.
This approach solves the datacube problem and the imagery problem in a single format.
6.3. Relations to other formats
6.3.1. Relationship to GeoTIFF
The requirements defined in this Report relies on the GeoTIFF 1.1 data model (OGC 19-008r4), with some variations based on likely approaches to a future “GeoTIFF 2.0” Standard. Specifically, this document supports use of more modern OGC/ISO CRS representations that can be used in place of the GeoKeyTag properties specified in GeoTIFF 1.1.
The GeoHEIF design does not have a direct equivalence to the OGC GeoTIFF ModelPixelScaleTag. Instead, the same concept is represented as part of an equivalent to the more general GeoTIFF ModelTransformationTag representation.
The design specified in this Report does not use the GeoTIFF encoding. Instead, the same concepts are adapted to the way HEIF represents data. The specific encoding is directly applicable to other image file formats that use ISO Base Media File Format (ISO/IEC 14496-12:2022), such as AV1 Image File Format (AVIF).
More information on a mapping between GeoTIFF and GeoHEIF is provided in Annex E.
6.3.2. Relationship to GIMI
The requirements specified in this Report are intended to be complementary to GIMI (defined in NGA.STND.0076_1.0_GIMI), such that a GIMI file could use the capabilities and tools specified in this document. A GIMI file does not need to use these tools and may (or may not) have additional metadata.
A HEIF file can be conformant to the requirements in this Report without being conformant to the GIMI standard. For example, it may not have the required TAI timestamp properties.
6.3.3. Relationship to NITF
GeoHEIF partially parallels how National Imagery Transmission Format (NITF) image segments contain general form of position (i.e., IGEOLO) and detailed metadata is provided in Support Data Extensions (SDEs).
The GeoHEIF provides more than Image GEOgraphic LOcation (IGEOLO), with scope for the kind of data in the CSCRNA (Corner Footprint or corner points) Tagged Record Extension (TRE) (OGC 12-154:2013). The GeoHEIF design does not provide the full scope of what would be found in SDEs such as the Generic Linear Array Scanner and the Generic Frame-sequence Model (GLAS/GFM) SDE. That is left to separate GIMI metadata approaches, or to non-GIMI equivalent representations of replacement sensor models.
7. ISO Base Media File Format extensions
7.1. Underlying HEIF Requirement
This section addresses the core HEIF Requirements Class applicable to all GeoHEIF instances (i.e., files).
A GeoHEIF file is a HEIF file and inherits the file structure as described in the corresponding portion of the ISOBMFF and HEIF specifications. In addition, a brand is added to the file to specify conformance to the requirements specified in this Report.
| Identifier | https://www.opengis.net/spec/GeoHEIF/1.0/req/HEIF |
|---|---|
| Target type | HEIF File |
| Prerequisites | ISO14496-12,ISO/IEC 14496-12:2022, Information technology — Coding of audio-visual objects — Part 12: ISO base media file format ISO/IEC 23008-12:2022, Information technology — High efficiency coding and media delivery in heterogenous environments — Part 12: Image File Format |
| Normative statements | Requirement 1: /req/HEIF/follow-ISOBMFF Requirement 2: /req/HEIF/follow-HEIF Requirement 3: /req/HEIF/ogeo-brand |
7.1.1. File format
The following two requirements specify the file format used.
| Identifier | /req/HEIF/follow-ISOBMFF |
|---|---|
| Included in | Requirements class 1: https://www.opengis.net/spec/GeoHEIF/1.0/req/HEIF |
| A | A GeoHEIF file SHALL be compliant with the ISO Base Media File Format (ISOBMFF) specification. |
| Identifier | /req/HEIF/follow-HEIF |
|---|---|
| Included in | Requirements class 1: https://www.opengis.net/spec/GeoHEIF/1.0/req/HEIF |
| A | A GeoHEIF file SHALL be compliant with the High Efficiency Image File Format (HEIF) specification. |
7.1.2. The ogeo brand
ISOBMFF files use brands in the FileTypeBox (ftyp) to signal interoperability requirements. The FileTypeBox contains a major_brand and a list of compatible_brands. Each brand is an unsigned 32 bit integer value that is interpreted as a four character code (4CC), similar to the way boxes are identified, but in a different implicit namespace.
NOTE: Under some circumstances, brands can occur in other boxes for similar use, such as the BrandProperty (brnd). The requirements in this section apply to use of those brands in context.
| Identifier | /req/HEIF/ogeo-brand |
|---|---|
| Included in | Requirements class 1: https://www.opengis.net/spec/GeoHEIF/1.0/req/HEIF |
| A | A GeoHEIF file SHALL include the ogeo brand in the FileTypeBox (ftyp). |
Files containing the brand ogeo (for Ogc GEOreference information) in the compatible_brands array of the FileTypeBox are expected to present some boxes and properties that are detailed in requirements classes below.
7.2. Defining Dimensions and Properties
The Dimensions and Properties requirement Class defines a set of small properties to be included in ItemPropertyContainerBox ipco that are parts of ItemPropertyBox iprp in the MetaBox. This requirement class imposes requirements on the format of those properties.
These properties are building blocks that can be used in different use cases including:
Describe the georeference and the content of a single image;
Describe the georeference and the content of a set of images; and
Organize a set of images in a multiresolution data cube.
7.2.1. Georeferencing
The following item properties listed in Table 1 can be present under the ogeo brand. The Version column in the table specifies the versions of the item properties that are supported by image readers of the ogeo brand.
Table 1 — item properties for ogeo brand
| Box | Version | Box description |
|---|---|---|
| mcrs | 0 | coordinate reference system framework |
| mtxf | 0 | pixel to model affine transformation |
| tiep | 0 | pixel point to model tie-points |
NOTE: For one image item only mtxf or tiep item properties will be associated in addition to mcrs. | ||
7.2.2. Coordinate Reference System (CRS) Requirements
This section addresses the CRS Requirements Class that supports definition of the coordinate reference system of a georectified collection of images or the target of georeferenceable images, to which the transformation from the raster space is made. The CRS framework can be classified in the following types:
CRS is a Geographic CRS, commonly a reference to an EPSG or another planetary registry;
CRS is a Geodetic CRS, commonly a reference to an EPSG or another planetary registry;
CRS is a Projected CRS, commonly a reference to an EPSG or another planetary registry; and
CRS is user-defined, full definition of a well-known CRS or user specific CRS, commonly defined using WKT or JSON equivalent.
| Identifier | https://www.opengis.net/spec/GeoHEIF/1.0/req/CRS |
|---|---|
| Target type | Properties in an HEIF File |
| Prerequisite | Requirements class 1: https://www.opengis.net/spec/GeoHEIF/1.0/req/HEIF |
| Normative statement | Requirement 4: /req/CRS/mcrs |
| Identifier | /req/CRS/mcrs | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Included in | Requirements class 2: https://www.opengis.net/spec/GeoHEIF/1.0/req/CRS | ||||||||||
| A | One (or more) CoordinateReferenceSystemProperty SHALL be defined in ItemPropertyContainerBox in the GeoHEIF file to define one (or more) coordinate reference system(s). | ||||||||||
| B | CoordinateReferenceSystemProperty SHALL follow the following pattern:
aligned(8) class CoordinateReferenceSystemProperty | ||||||||||
| C | crsEncoding indicates the encoding of the crs field and SHALL be one of the values defined in Table 2.
| ||||||||||
| D | crs SHALL include the CRS in the format encoding specified in crsEncoding. | ||||||||||
| E | If the CRS is dynamic, epoch define a point in time and SHALL be a float number following the specification in Annex B.4 in OGC 18-005r8. | ||||||||||
NOTE 1: The value (of the CRS encoding types) is an unsigned 32 bit integer value that is interpreted as a four character code (4CC).
NOTE 2: The Coordinate Reference System Well-Known Text is independent from the encoding of simple feature geometry using Well-Known Text as defined in the OGC Implementation Specification for Geographic information — Simple feature access — Part 1 Standard (OGC 06-103r4) that is not used here.
NOTE 3: CRS axis order shall be as defined by the authority (when URI or CURIE is used) or as specified in the definition string (when WKT or CRS JSON encoding is used).
NOTE 4: It is not a requirement for pixel coordinates to be in the CRS axis order, as the pixel to model affine transformation (Clause 7.4.1) or the pixel to model tie-points (Clause 7.5.1) can express axis order.
NOTE 5: The coordinate epoch is the time the coordinates are valid, which is not necessarily the time of measurement.
Example 1 — Coordinate reference system (URI)
A WGS84 / UTM zone 55S coordinate reference could be represented with:
crsEncoding equal to crsu,
crs equal to http://www.opengis.net/def/crs/EPSG/0/32755 and
no epoch value.
Example 2 — Coordinate reference system (CURIE)
A WGS84 / UTM zone 55S coordinate reference could be represented with:
crsEncoding equal to curi,
crs equal to [EPSG:32755] and
no epoch value.
Example 3 — Coordinate reference system (WKT)
A WGS84 / UTM zone 55S coordinate reference could be represented with:
crsEncoding equal to wkt2,
no epoch value and
crs equal to:
PROJCRS["WGS 84 / UTM zone 55S",
BASEGEOGCRS["WGS 84",
ENSEMBLE["World Geodetic System 1984 ensemble",
MEMBER["World Geodetic System 1984 (Transit)"],
MEMBER["World Geodetic System 1984 (G730)"],
MEMBER["World Geodetic System 1984 (G873)"],
MEMBER["World Geodetic System 1984 (G1150)"],
MEMBER["World Geodetic System 1984 (G1674)"],
MEMBER["World Geodetic System 1984 (G1762)"],
MEMBER["World Geodetic System 1984 (G2139)"],
ELLIPSOID["WGS 84",6378137,298.257223563,
LENGTHUNIT["metre",1]],
ENSEMBLEACCURACY[2.0]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
ID["EPSG",4326]],
CONVERSION["UTM zone 55S",
METHOD["Transverse Mercator",
ID["EPSG",9807]],
PARAMETER["Latitude of natural origin",0,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8801]],
PARAMETER["Longitude of natural origin",147,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8802]],
PARAMETER["Scale factor at natural origin",0.9996,
SCALEUNIT["unity",1],
ID["EPSG",8805]],
PARAMETER["False easting",500000,
LENGTHUNIT["metre",1],
ID["EPSG",8806]],
PARAMETER["False northing",10000000,
LENGTHUNIT["metre",1],
ID["EPSG",8807]]],
CS[Cartesian,2],
AXIS["(E)",east,
ORDER[1],
LENGTHUNIT["metre",1]],
AXIS["(N)",north,
ORDER[2],
LENGTHUNIT["metre",1]],
USAGE[
SCOPE["Navigation and medium accuracy spatial referencing."],
AREA["Between 144°E and 150°E, southern hemisphere between 80°S and equator, onshore and offshore. Australia. Papua New Guinea."],
BBOX[-80,144,0,150]],
ID["EPSG",32755]]
Example 4 — Coordinate reference system (CURIE) with epoch
ITRF2020 at 19-04-2021 could be represented with:
crsEncoding of curi,
with crs of [EPSG:9988]
and epoch of 2021.3.
7.3. Georectified and Georeferenceable options
A georectified image is one that has already undergone a georeferencing process and has been transformed to align with a specific coordinate reference system. The pixel locations in the image correspond directly to real-world coordinates using a linear transformation defined by an affine transformation matrix describing the mapping from pixel coordinates to CRS coordinates.
The georectification parameters have been permanently applied to the image data, so it is not necessary anymore. Georectified images are ready for immediate use in GIS software without further processing. In a GeoHEIF file, a georectified image contains an affine transform.
A georeferenceable image is one that has the potential to be georeferenced but has not yet undergone the full process. The image contains some form of geographic reference information, but it is not fully aligned to a coordinate reference system. Additional metadata is necessary to assist in georeferencing. Georeferenceable images often need to establish tie-points to perform the georeferencing.
7.4. Georectified Image. Pixel to model affine transformation Requirements
Requirements class 3: Requirements Class ‘Pixel to model affine transformation’ | |
|---|---|
| Identifier | https://www.opengis.net/spec/GeoHEIF/1.0/req/affine-transf |
| Target type | Properties in an HEIF File |
| Prerequisite | https://www.opengis.net/spec/GeoHEIF/1.0/req/CRS/mcrs |
| Normative statement | Requirement 5: /req/affine-transf/pixel-to-affine-transformation |
ModelTransformationProperty specifies in a matrix form the conversion between the raster space and the model space.
NOTE 1: It is conceptually equivalent to the ModelTransformationTag in GeoTIFF 1.1 (see OGC 19-008r4, Section 7.3 and OGC 19-008r4, Section 7.3.3), and also includes the functionality provided by the ModelPixelScaleTag in GeoTIFF 1.1; except for the Clause 7.4.1 and some differences described in Annex C.
| Identifier | /req/affine-transf/pixel-to-affine-transformation |
|---|---|
| Included in | Requirements class 3: https://www.opengis.net/spec/GeoHEIF/1.0/req/affine-transf |
| A | Zero or more ModelTransformationProperty SHALL be defined in ItemPropertyContainerBox in the GeoHEIF file to define one or more matrix transformation model. |
| B | The syntax of the ModelTransformationProperty SHALL follow the following pattern:
aligned(8) class ModelTransformationProperty |
NOTE 2: The ModelTransformationProperty coefficients of the conversions from raster coordinates to CRS coordinates are expressed as a matrix.
For the 2D transformation, the pixel coordinates are (i, j) and the CRS coordinates are (x, y) and the conversion between them is expressed as below:
x = m00×i + m01×j + m03
y = m10×i + m11×j + m13
For the 3D transformation, the pixel coordinates are (i, j, k), being k=0, and the CRS coordinates are (x, y, z), and the conversions between them is expressed as below:
x = m00×i + m01×j + m02×k + m03
y = m10×i + m11×j + m10×k + m13
z = m20×i + m21×j + m22×k + m23
In the case that the (i, j, k) pixel coordinates of the upper-left corner are (0, 0, 0), the (x, y, z) CRS coordinates of that corner are (m₀₃, m₁₃, m₂₃).
Note that those assertions are valid regardless of axis flips and permutations.
7.4.1. Axis order
The CRS axis order and directions SHALL be as defined by the authority (when URI or CURIE is used) or as specified in the definition string (when WKT or CRS JSON encoding is used). However, the pixel axes SHOULD correspond to (east, north, up) axis directions in that order regardless of the model space CRS definition.
If the pixel axes are not in the same order as the CRS axes, the permutation shall be contained in the affine transform. For example:
If the pixel and CRS axes are in the same order, then the matrix is diagonal except for the translation column; and
If a (north, east) → (east, north) permutation is applied, then the matrix is anti-diagonal except for the translation column.
Example: for an image covering the whole world at a resolution of 0.25° horizontally and 20 meters vertically, the matrix would be as below if the CRS has (longitude, latitude, height) axis order. The resolutions are on the diagonal, with a negative value for flipping the y axis direction. The last column contains the coordinates in the CRS of the image’s upper-left corner. They are the minimum or maximum CRS coordinate values depending on whether the element on the diagonal for the same row is positive or negative respectively.
(1)
For the same example as above but with a CRS defined with (latitude, longitude, height) axis order, the matrix would be as below. This matrix can be constructed by first constructing a matrix as above (as if no permutation was needed), then simply move the rows without changing any value.
(2)
7.5. Georeferenceable Images. Pixel to model tie points Requirements
The transformation between raster space and model space may be defined with a set of raster-to-model tie-points. This refers to the mathematical process of converting coordinates from a pixel-based raster image (raster space) to a real-world geographic coordinate system (model space), essentially mapping the location of each pixel within an image to its corresponding position on the Earth’s surface.
Requirements class 4: Requirements Class ‘Pixel to model tie-points’ | |
|---|---|
| Identifier | https://www.opengis.net/spec/GeoHEIF/1.0/req/tie-points |
| Target type | Properties in an HEIF File |
| Prerequisite | https://www.opengis.net/spec/GeoHEIF/1.0/req/CRS/mcrs |
| Normative statement | Requirement 6: /req/tie-points/pixel-to-tie-points |
ModelTiepointProperty specifies one or more mappings from pixel space (i.e., column and row indices in the image, that start at upper-left corner) to model space (e.g., longitude and latitude, or easting and northing).
NOTE 1: It is conceptually equivalent to the ModelTiepointTag in GeoTIFF 1.1 OGC 19-008r4, Section 7.3 and OGC 19-008r4, Section 7.3.1 except for the Clause 7.5.1.
| Identifier | /req/tie-points/pixel-to-tie-points |
|---|---|
| Included in | Requirements class 4: https://www.opengis.net/spec/GeoHEIF/1.0/req/tie-points |
| A | Zero or more ModelTiepointSetProperty SHALL be defined in ItemPropertyContainerBox in the GeoHEIF file to define zero or more raster-to-model tie-points sets. |
| B | The syntax of the ModelTiepointSetProperty SHALL follow the following pattern:
aligned(8) class ModelTiepointProperty |
| C | tie_points_count SHALL be at least 1. |
NOTE 2: tie_points_count specifies the number of tie points.
i is a raster (pixel) space column coordinate, with integer values starting on the left edge of the pixels.
j is a raster (pixel) space row coordinate, with integer values starting on the top edge of the pixels.
x is a model space X coordinate (e.g., easting for a projected CRS).
y is a model space Y coordinate (e.g., northing for a projected CRS).
z is a model space height coordinate on a 3D CRS.
If i and j are not aligned with x and y coordinates then mathematics will naturally produce, for example, the anti-diagonal matrix illustrated in Clause 7.4.1 when approximating the model tie points with an affine transformation.
WARNING
To precisely georectify an image, in addition to a set of tie-points, a Digital Surface Model (DSM) (or a Digital Terrain Model (DTM) or Digital Elevation Model (DEM)) and information about the distortions of the sensor needs to be incorporated in order for the mathematical procedure to revert the effects. A Digital Surface Model (DSM) is a 3D computer model that represents the Earth’s surface and its above-ground features, such as buildings, vegetation, and other infrastructure. Aplying only a linear interpolation to the tie-points may result in a high level of uncertainty in the georectified image.
7.5.1. Axis order
The (x, y, [z]) coordinates are in CRS axis order as defined by the authority (when a URI or CURIE is used) or as specified in the definition string (when WKT or CRS JSON encoding is used).
If i and j are not aligned with x and y coordinates then mathematics will naturally produce, for example, the anti-diagonal matrix illustrated in Clause 7.4.1 when approximating the model tie points with an affine transformation.
7.6. Extra dimensions
The first 2 dimensions are defined by the first two dimensions of the CRS. A set of images can be arranged as a datacube that has more dimensions. Each image represents a value per each extra dimension. Extra dimensions could be time, frequency (in a hyperspectral dataset) etc. There is no need to differentiate between regular or irregular axis of numeric or categorical.
| Identifier | https://www.opengis.net/spec/GeoHEIF/1.0/req/extra-dimensions |
|---|---|
| Target type | Properties in an HEIF File |
| Prerequisite | Requirements class 1: https://www.opengis.net/spec/GeoHEIF/1.0/req/HEIF |
| Normative statements | Requirement 7: /req/extra-dimensions/edim Requirement 8: /req/extra-dimensions/edvl |
The following requirements define a property box that enumerates the possible combinations of dimensions that images in the HEIF can be associated to.
| Identifier | /req/extra-dimensions/edim |
|---|---|
| Included in | Requirements class 5: https://www.opengis.net/spec/GeoHEIF/1.0/req/extra-dimensions |
| A | Zero or more ExtraDimensionProperty SHALL be defined in ItemPropertyContainerBox in the GeoHEIF file to define the extra-dimensions of zero or more datacubes. |
| B | The syntax of the ExtraDimensionProperty SHALL follow the following pattern:
aligned(8) class ExtraDimensionProperty |
NOTE 1: extradimensions_count is the number of extra-dimensions in the datacube.
name is the name of the variable corresponding to the extra-dimension i (e.g., atmospheric pressure level).
definition is a URI to the definition of the variable corresponding to the extra-dimension i.
extradimension_type is the type of the extra-dimension i. 0 means regular sampled range, (e.g., “height” between 0m and 1000m); 1 means irregular parameterized values (non-uniformly sampled range), (e.g., “atmospheric pressure level: 0, 10, 25, 50 Pa”); 2 means categorical values (e.g., species name).
minimum and maximum are the minimum and maximum values of a regular sampled range extra-dimension i.
resolution is the distance between two consecutive values of a regular sampled range extra-dimension i.
unit is the units of measure of the variable of a regular or irregular extra-dimension i.
unit_lang is the language (or vocabulary) in which the unit is expressed (defaults to “UCUM” if blank) of a regular or irregular extra-dimension i.
extradimension_value_count for an extra-dimension, it is the number values that this dimension can adopt in the datacube.
value for an extra-dimension, it is a value that this dimension can adopt in the datacube (actually it may represent an interval; the value_definition resource can describe how the interval represented by this value is).
value_definition is a URI to the definition of a value corresponding to the extra-dimension i.
category_name for a categorical extra-dimension, it is a name describing the value of the extra-dimension.
Each image represents a value per each extra dimension. This provides values in each extra dimension that will be associated to some image.
| Identifier | /req/extra-dimensions/edvl |
|---|---|
| Included in | Requirements class 5: https://www.opengis.net/spec/GeoHEIF/1.0/req/extra-dimensions |
| A | Zero or more ExtraDimensionValueProperty SHALL be defined in ItemPropertyContainerBox in the GeoHEIF file to define the values for the extra-dimensions configuring a slice in a datacube. |
| B | The syntax of the ExtraDimensionValueProperty SHALL follow the following pattern:
aligned(8) class ExtraDimensionValueProperty |
NOTE 2: extradimensions_count is the number of extra-dimensions in the datacube.
extradimension_value_index is an index between 0 and extradimension_value_count-1 of the extra-dimension of the ExtraDimensionProperty (edim) associated to the same image item as this ExtraDimensionValueProperty is also associated. When extradimension_type is 0 (“continuous or ordinal uniformly sampled range”) the extradimension_value_index is undefined, but it can be computed as (value-minimum)/resolution.
NOTE 3: If the image has more than one component, all components of the image are associated to the same extra dimensions and to the same values of the extra dimensions.
NOTE 4: This data structure do not provides the names of the dimensions those values are provided. Each image will be associated to the extra dimensions definition and the extra dimensions values. So, the semantics of the extra dimension values can only be discovered when resolving the associations in a particular image by paring each extra dimension value with the corresponding extra dimension name.
The number of valid values of a particular dimension, its interval, and the fact that they are regular or irregular is not explicitly written in the file. There is also information if there are one or more datacubes defined in the file. Datacubes and its structure can only be “inferred” by grouping all images that share:
the same CRS (same spatial 2D dimensions);
the same model to assign two dimensions of the model to image axes (i and j): an affine transformation matrix with an implicit same origin coordinate; and
the same number of other dimensions.
Optionally, the definition of the datacubes can be more strictly defined by requiring:
the same bounding box (BBOX), number of columns (nCol) and number of rows (nRow) (a.k.a. resolution); and
the same CellPropertyTypes.
7.7. Cell Property types
The values contained in each image cell represent the value of a property described by the image (a.k.a. a variable). The property types are described here.
Requirements class 6: Requirements Class ‘Cell Property Type’ | |
|---|---|
| Identifier | https://www.opengis.net/spec/GeoHEIF/1.0/req/cell-property-type |
| Target type | Properties in an HEIF File |
| Prerequisite | Requirements class 1: https://www.opengis.net/spec/GeoHEIF/1.0/req/HEIF |
| Normative statements | Requirement 9: /req/cell-property-type/cell-property-type Requirement 10: /req/cell-property-type/cell-property-category |
| Identifier | /req/cell-property-type/cell-property-type |
|---|---|
| Included in | Requirements class 6: https://www.opengis.net/spec/GeoHEIF/1.0/req/cell-property-type |
| A | Zero or more CellPropertyTypeProperty SHALL be defined in ItemPropertyContainerBox in the GeoHEIF file to define zero or more property types of the values of the cells of the images. |
| B | The syntax of the CellPropertyTypeProperty SHALL follow the following pattern:
aligned(8) class CellPropertyTypeProperty |
NOTE 1: component_count is the number of components in an item type image.
Example: an image item that contents an RGB image has 3 components and with component_count=3.
Example: a datacube composed by 4 image item, R, G, B and infra-red; have 4 CellPropertyCategoriesProperty, each one with component_count=1.
name is word or a combination of words by which the measured or observed property is known
definition is a a URI to the definition of the measured or observed property corresponding to the values of the cells of the image (e.g., QUDT quantity kinds).
unit is the units of measure of the measured or observed property.
unit_lang is the language (or vocabulary) in which the unit is expressed (defaults to “UCUM” if not specified).
measure_is_point defined the way the value represents a measurement of the cell. “measure_is_point=false” means that the measurement represents the whole area of the cell. This is the typical case in photographic imagery. “measure_is_point=true” means that the measurement was done in the center of the cell and it does not represents the whole cell. It is possible to get interpolated values between cells by bilinear or bicubic interpolation methods. This is the typical case in digital elevation models.
measure_is_point does not influence the way the location of a pixel is referenced (e.g., upper-left corner or at its center). Pixel locations in a GeoHEIF file are always referenced at upper-left corner of the pixel, regardless the value of measure_is_point.
component_bit_depth_minus_one provides the bit depth (as component_bit_depth_minus_one + 1) of the data type of the cell values. It has the same meaning as component_bit_depth_minus_one in ISO/IEC 23001-17:2024 (Part 17: Carriage of uncompressed video and images in ISO base media file format).
component_format provides the interpretation of the binary representation of the data type of the cell values. It has the same meaning as component_format in ISO/IEC 23001-17, including the same limitations on bit depth values.
Values that component-format can take:
0: Component value is an unsigned integer coded on component_bit_depth bits.
1: Component value is an IEEE 754 binary float number coded on component_bit_depth bits (e.g., if component_bit_depth is 16, then the component value is coded as IEEE 754 ‘binary16’). For this component format, component_bit_depth values shall be 16, 32, 64, 128 or 256; other values are forbidden.
2: Component value is a complex number coded on component_bit_depth bits, where the first component_bit_depth/2 bits represent the real part and the next component_bit_depth/2 bits represent the imaginary part. Each part is coded as an IEEE 754 binary float of the size component_bit_depth/2. For this component format, component_bit_depth values shall be 32, 64, 128 or 256; other values are forbidden.
3: Component value is a signed integer coded on component_bit_depth bits.
minimum and maximum define the interval of the possible values in the image. It only apply to numerical values. Can be nil_value if unknown.
minimum_real and maximum_real provides the interval of the real part of the values in the image for the case where the format is a complex number. Can be nil_value if unknown.
minimum_imaginary and maximumImaginary provides the interval of the imaginary part of the values in the image for the case where the format is a complex number. Values can be nil_valueReal and nil_valueImaginary if unknown.
NOTE 2: nil_value is a special value for the cells where the value was not obtained or is known invalid. That is, any occurrence of this value in the property indicates is not a valid value and is instead a flag indicating that the pixel value is not available. nil_value provides a way for a writer to indicate that there is a no data for some pixel values. It is not required that the nil_value value appear in any or all components. If this property does not appear, there is no use of nil_value values. However invalid pixels may still be indicated by use of transparency masks or more specific structures such as the SensorBadPixelsMaskBox (see ISO/IEC 230017-17:2024 Section 6.1.7).
Having more than one nilValues is possible because there is more than one reason of nilValue. nil_value_count indicates the number of nilValues.
When the nil_value value is (or uses, in the case of a complex number representation) an IEEE-754 Not-a-Number (NaN) value, the specific bit pattern used for the NaN value (adjusted for endianess where used in the image data) indicates the nil_value value. It should be a quiet NaN value. For IEEE-754 32 bits floating point numbers, quiet NaNs are all values with a bit pattern in the [0x7fc00000 … 0x7fffffff] or [0xffc00000 … 0xffffffff] ranges, inclusive (see 24-040 annex F for more information). Any NaN value with a bit pattern different than the bit pattern declared in nil_value is still considered a missing value, but for a reason different than the reason expressed by this nil_value.
According to component_format can be:
nil_value provides the value of the no-data flag value, in the format specified by component_format as applicable to the property version.
nil_valueReal provides the real part of the no-data flag value for the case where the format is a complex number.
nil_valueImaginary provides the imaginary part of the no-data flag value for the case where the format is a complex number.
nil_value_reason is a text representing that the nilValue represents.
If the values contained in each image cell represents a property described by categories the next requirement applies.
| Identifier | /req/cell-property-type/cell-property-category |
|---|---|
| Included in | Requirements class 6: https://www.opengis.net/spec/GeoHEIF/1.0/req/cell-property-type |
| A | Zero or more CellPropertyCategoriesProperty SHALL be defined in ItemPropertyContainerBox in the GeoHEIF file to define zero or more property categories represented by the values of the cells of the images. |
| B | The syntax of the CellPropertyCategoriesProperty SHALL follow the following pattern:
aligned(8) class CellPropertyCategoriesProperty |
NOTE 3: component_count is the number of components in an item type image.
component_bit_depth_minus_one provides the bit depth (as component_bit_depth_minus_one + 1) of the data type of the cell values. It has the same meaning as component_bit_depth_minus_one in ISO/IEC 23001-17:2024 (Part 17: Carriage of uncompressed video and images in ISO base media file format).
component_format provides the interpretation of the binary representation of the data type of the cell values. It has the same meaning as component_format in ISO/IEC 23001-17, including the same limitations on bit depth values. See possible values in [component-format-values].
Example: an image item that contains an RGB image has 3 components and with component_count=3.
Example: a datacube composed of 4 image items, R, G, B and infra-red and have 4 CellPropertyCategoriesProperty, each one with component_count=1.
category_count is the number of categories in the image.
value is the numerical value written in the cell of the image. Categories are only supported for integer value data types.
name is a short name for the category commonly used in the legend of a map (e.g., forest).
description is a longer description of what the categorical value represents (e.g., “A dense growth of trees, plants, and underbrush covering a large area”).
definition is a a URI to the definition of the measured value.
7.8. Association of geo-properties to images
The Association of Geo-properties to Images requirements class specifies how to associate the needed geoproperties to the images that require georeference information.
Requirements class 7: Requirements Class ‘Image association’ | |
|---|---|
| Identifier | https://www.opengis.net/spec/GeoHEIF/1.0/req/image-association |
| Target type | Associations between properties and image items in an HEIF file |
| Prerequisites | Requirements class 2: https://www.opengis.net/spec/GeoHEIF/1.0/req/CRS Requirements class 3: https://www.opengis.net/spec/GeoHEIF/1.0/req/affine-transf Requirements class 4: https://www.opengis.net/spec/GeoHEIF/1.0/req/tie-points Requirements class 5: https://www.opengis.net/spec/GeoHEIF/1.0/req/extra-dimensions Requirements class 6: https://www.opengis.net/spec/GeoHEIF/1.0/req/cell-property-type |
| Normative statements | Requirement 7-1: /req/image_association/req_mcrs Requirement 7-2: /req/image_association/req_mtxf-tiep Requirement 7-3: /req/image_association/req_edim-edvl Requirement 7-4: /req/image_association/req_pcel-pcat |
| Identifier | /req/image-association/mcrs |
|---|---|
| A | An item containing an image that requires georeference information SHALL be related to ONE CoordinateReferenceSystemProperty in the ItemPropertyAssociationBox. |
NOTE 1: A CoordinateReferenceSystemProperty can be shared and associated with multiple items when the Coordinate Reference System is the same for each item.
| Identifier | /req/image-association/mtxf-tiep |
|---|---|
| A | An item containing an image that requires georeference SHALL be related to ONE ModelTransformationProperty or ONE ModelTiepointProperty in the ItemPropertyAssociationBox |
NOTE 2: A ModelTransformationProperty can be shared and associated with multiple items when the matrix transformation model is the same for each item.
NOTE 3: A ModelTiepointProperty can be shared and associated with multiple items when the raster-to-model tie-points is the same for each item.
| Identifier | /req/image-association/edim-edvl |
|---|---|
| A | An item containing an image that represents a constant value (a.k.a. a slice) on the extra-dimensions SHALL be related to zero or one ExtraDimensionProperty in the ItemPropertyAssociationBox. |
| B | An item containing an image that represents a constant value (a.k.a. a slice) on the extra-dimensions SHALL be related to zero or one ExtraDimensionValueProperty in the ItemPropertyAssociationBox. |
| C | For a particular image, the number of extra-dimensions in the ExtraDimensionProperty SHALL be the same as in ExtraDimensionValueProperty. |
NOTE 4: An ExtraDimensionProperty should share and be associated with multiple image items when the set of extra-dimensions is the same for those image items.
| Identifier | /req/image-association/pcel-pcat |
|---|---|
| A | An item containing an image SHALL be related to zero or one CellPropertyTypeProperty in the ItemPropertyAssociationBox. |
| B | An item containing an image related to a cell property thats requires definitions of categories SHALL be related to zero or one CellPropertyCategoryProperty in the ItemPropertyAssociationBox. |
| C | The number of components (component_count) of the image SHALL be the same as the number of components specified in CellPropertyTypeProperty and CellPropertyCategoryProperty. |
NOTE 5: A CellPropertyTypeProperty can be shared and associated with multiple items when the cell property type is the same for each item (a.k.a. image).
NOTE 6: A CellPropertyCategoryProperty can be shared and associated with multiple items when the cell property type is the same for each item (a.k.a. image) and the same definitions of categories can be applied this cell property.
8. Media Types for any data encoding(s)
8.1. Overview (informative)
This Report does not define Media types. Instead, it leverages existing Media Type definitions and considerations, including existing extension mechanisms. That is, instead of there being an ‘image/geoheif’ media type registration, there is ‘image/heif’ with optional geospatial extension.
8.2. Media types for ISO Base Media File Format media
ISO/IEC 14496-12:2022 (Part 12: ISO base media file format) Annex K provides normative requirements for application of IETF RFC 6381 in ISO Base Media File Format (ISOBMFF) files, including those containing images, image sequences and multimedia tracks. Those requirements apply to files and other media incorporating extensions to ISOBMFF as defined in this specification.
IETF RFC 6381 specifies two parameters, ‘codecs’ and ‘profiles’, that are used with various MIME types or type/subtype combinations to allow for unambiguous specification of the codecs employed by the media formats contained within, or the profile(s) of the overall container format.
8.3. Media types for image files and image sequences
AVIF, ISO/IEC 23008-12:2022 and ISO/IEC 15444-16:2021 contain Media type (MIME type) registrations for various files and other media derived from ISOBMFF, as described in Table 3.
Table 3 — Media types for Image files and image sequences
| media type | media subtype | description | Reference |
|---|---|---|---|
| image | avci | Image file containing one or more image items using AVC (H.264) coding | ISO/IEC 23008-12:2022 Annex F |
| image | avcs | Image file containing image sequences using AVC (H.264) coding | ISO/IEC 23008-12:2022 Annex G |
| image | avif | Image file containing images or image sequences using AV1 coding | AVIF Section 8 |
| image | heic | High efficiency image file conforming to the requirements for the ‘heic’, ‘heix’, ‘heim’ or ‘heis’ brands | ISO/IEC 23008-12:2022 Annex C |
| image | heic-sequence | High efficiency image file containing one or more HEVC coded image sequences | ISO/IEC 23008-12:2022 Annex D |
| image | heif | High efficiency image file containing one or more image items using any coding format | ISO/IEC 23008-12:2022 Annex C |
| image | heif-sequence | High efficiency image file containing one or more image sequences using any coding format | ISO/IEC 23008-12:2022 Annex D |
| image | hej2k | Image file containing one or more image items using JPEG-2000 (Part 1 or Part 15) coding | ISO/IEC 15444-16:2021 Section 6.7 |
| image | j2is | Image file containing image sequences using JPEG-2000 (Part 1 or Part 15) coding | ISO/IEC 15444-16:2021 Annex 7.8 |
8.4. GeoHEIF extensions
As required by ISO/IEC 14496-12:2022 Section K.4, the ‘profiles’ parameter, if used, shall list exactly the major brand, followed by the compatible brands, as listed in the FileTypeBox (’ftyp’) or SegmentTypeBox (’styp’).
Note: This Report requires the ‘ogeo’ compatible brand.
Where the ‘itemtypes’ parameter is used, it may contain an item description such as ‘mtxf’ or ‘tiep’.
8.5. Examples (informative)
Content-Type: image/hej2k
An image file where the primary item is a JPEG-2000 coded image. It may or may not conform to this OGC specification.
Content-Type: image/heif; profiles=mif1,ogeo
An image file conforming to MIAF and the requirements in this OGC Report. The encoding is not specified.
Content-Type: image/heic; itemtypes=hvc1.A1.80.L93+hvcC; profiles=heic,geo1,ogeo
An image file where the primary item is a HEVC Main profile image at the Main tier, level 3.1, with conformance to this OGC specification and to NGA.STND.0076_1.0_GIMI.
Bibliography
[1] Roger Lott: OGC 18-005r8, Topic 2 — Referencing by coordinates (Including corrigendum 1 and corrigendum2). Open Geospatial Consortium (2023). http://www.opengis.net/doc/AS/topic-2/6.0.
[2] Roger Lott: OGC 18-010r11, Geographic information — Well-known text representation of coordinate reference systems. Open Geospatial Consortium (2023). http://www.opengis.net/doc/is/crs-wkt/2.1.11.
[3] Peter Baumann: OGC 07-011r2, Topic 6.1 — Schema for Coverage Geometry and Functions – Part 1: Fundamentals. Open Geospatial Consortium (2024). http://www.opengis.net/doc/AS/Topic-6.1/2.0.
[4] John Herring: OGC 06-103r4, OpenGIS Implementation Specification for Geographic information — Simple feature access — Part 1: Common architecture. Open Geospatial Consortium (2011). http://www.opengis.net/doc/is/sfa/1.2.1.
[5] Peter Baumann, Eric Hirschorn, Joan Masó: OGC 09-146r6, OGC Coverage Implementation Schema. Open Geospatial Consortium (2017). http://www.opengis.net/doc/IS/cis/1.1.0.
[6] Emmanuel Devys, Ted Habermann, Chuck Heazel, Roger Lott, Even Rouault: OGC 19-008r4, OGC GeoTIFF Standard. Open Geospatial Consortium (2019). http://www.opengis.net/doc/IS/GeoTIFF/1.1.0.
[7] Michael Leedahl: OGC 23-028, OGC Testbed 19 Extraterrestrial GeoTIFF Engineering Report. Open Geospatial Consortium (2024). http://www.opengis.net/doc/PER/T19-D002.
[8] Arliss Whiteside, Jim Greenwood: OGC 06-121r9, OGC Web Service Common Implementation Specification. Open Geospatial Consortium (2010). https://portal.ogc.org/files/?artifact_id=38867.
[9] Lucio Colaiacomo, Joan Masó, Emmanuel Devys, Eric Hirschorn: OGC 08-085r8, OGC® GML in JPEG 2000 (GMLJP2) Encoding Standard. Open Geospatial Consortium (2018). http://www.opengis.net/doc/IS/GMLJP2/2.1.0.
[10] R. Gellens, D. Singer, P. Frojdh: IETF RFC 6381, The ‘Codecs’ and ‘Profiles’ Parameters for “Bucket” Media Types. RFC Publisher (2011). https://www.rfc-editor.org/info/rfc6381.
[11] ISO/IEC: ISO/IEC 15444-16:2021, Information technology — JPEG 2000 image coding system — Part 16: Encapsulation of JPEG 2000 images into ISO/IEC 23008-12. International Organization for Standardization, International Electrotechnical Commission, Geneva (2021). https://www.iso.org/standard/80620.html.
[12] ISO: ISO 19115:2003, Geographic information — Metadata. International Organization for Standardization, Geneva (2003). https://www.iso.org/standard/26020.html.
[13] ISO: ISO 19123:2005, Geographic information — Schema for coverage geometry and functions. International Organization for Standardization, Geneva (2005). https://www.iso.org/standard/40121.html.
[14] ISO/IEC: ISO/IEC 23001-17:2024, Information technology — MPEG systems technologies — Part 17: Carriage of uncompressed video and images in ISO base media file format. International Organization for Standardization, International Electrotechnical Commission, Geneva (2024). https://www.iso.org/standard/82528.html.
[15] OGC OWS-9 OWS Innovations GMLJP2 for National Imagery Transmission Format (NITF) Engineering Report
[16] AV1 Image File Format (AVIF) v1.1.0
[17] OGC: OGC Testbed 12 Annex B: Architecture (2015).
[18] GEOINT Imagery Media for ISR (GIMI) Profile of ISOBMFF & HEIF
Annex A
(informative)
Conformance Class Abstract Test Suite (Normative)
NOTE: This part may be completed by a new Standards Working Group (SWG) in the OGC.
Annex B
(informative)
Compact URI (CURIE) representation
Compact URIs (CURIEs) are an abbreviation for strings that are intended to represent URIs. Their purpose is to support the definition of scoped names that map to URIs.
The URI of any definition registered in OGC-NA controlled registers may be represented in shortened form through use of CURIEs. Consistent with OGC policy, the CURIE shall be a safe CURIE. Safe CURIEs are specified in square brackets. For example, the safe CURIE [EPSG:4326] may be used in an API request.
CURIEs representing a shortened form of the URI of a registered Coordinate Reference System (CRS) may be used as an alternative to the full URI, where [{authority}:{identifier}] is equivalent to http://www.opengis.net/def/crs/{authority}/0/{identifier}.
For example, [EPSG:4326] may be used to represent http://www.opengis.net/def/crs/EPSG/0/4326
When a CURIE is used to represent a CRS, the following shall apply:
The version segment of the URI is assumed to be equal to 0;
The definition-type segment is assumed to be equal to crs; and
The definition segment is assumed to be equal to def.
Therefore “EPSG” as a prefix will expand to http://www.opengis.net/def/crs/EPSG/0/.
CURIEs are case sensitive.
For more information on CURIEs, see the W3C technical recommendation on CURIEs: https://www.w3.org/TR/2010/NOTE-curie-20101216/
Annex C
(informative)
Differences in the model affine transformation between GeoHEIF and GeoTIFF
The GeoHEIF affine transformation differs from the GeoTIFF specification in the following ways.
The matrix in a GeoTIFF file is always of matrix order 4×4, while the matrix in a GeoHEIF file is of matrix order 2×3 in the two-dimensional case or 3×4 in the three-dimensional case.
The last row of the matrix in a GeoTIFF file shall be explicitly written as [0 0 0 1], while the last row of the square matrix in a GeoHEIF file is omitted. The latter is implicitly [0 0 1] in the two-dimensional case and [0 0 0 1] in the three-dimensional case.
The conversion in a GeoHEIF file always maps the upper-left corner of pixels. There is no property equivalent to the GeoTIFF’s GTRasterTypeGeoKey property.
The conversion in a GeoHEIF file maps to CRS axes in the order they are defined by the CRS, while the conversion in a GeoTIFF file maps to a different CRS with axis order modified by heuristic rules.
NOTE: If the last row was not [0 0 1] or [0 0 0 1], then the transform would no longer be affine. This is sometime called perpective transform, and can be useful for images taken with an oblique angle. A future version of the GeoHEIF specification may allow that.
Annex D
(informative)
GeoHEIF Structural Encoding Description
D.1. Introduction
This Annex provides informative background on how GeoHEIF is encoded in various file structures.
D.2. ISO Base Media File Format and HEIF File Format structure
D.2.1. Background
The ISO Base Media File Format (ISOBMFF) is normatively described in ISO/IEC 14496-12:2022. The basic structure is a sequence of “boxes”, where each box structure starts with the same header structure, including a box identifier, then content according to the requirements of that box.
The box identifier is shown as unsigned int(32) boxtype in the box definition (see ISO/IEC 14496-12:2022 Section 4.2) and derived Box and FullBox instances will then provide the specific value as a four character code (“4CC”). For example, the MediaDataBox structure is given as:
aligned (8) class MediaDataBox extends Box('mdat') {
bit(8) data[];
}Listing D.1
In that example, mdat is the box identifier, and is the boxtype value that is encoded in the file structure as an unsigned 32 bit integer (i.e., 0×6d646174, corresponding the ASCII encoding of mdat). Informally, this is an “mdat box”, and “has 4CC of mdat”.
The High Efficiency Image File Format (HEIF) is normatively described in ISO/IEC 23008-12:2022. It builds on and profiles ISOBMFF to provide support for images and image sequences. For images, an indicative structure is shown below.
Figure D.1 — Indicative HEIF file structure
As shown in this example, some boxes can be nested. Typically, the body of the outer box is just a sequence of inner boxes. This is the case for the MetaBox (meta) in the figure above.
Note that while the example shows a single item, a HEIF file may contain many images, along with supporting metadata (e.g., EXIF or XMP, or security markings), linked together in meaningful ways. For example, one image may be derived from a combination of other images, or an image may be the transparency (alpha) layer for several other images.
Further, ISOBMFF allows multiple multimedia tracks as well as images to be contained in the same file.
D.2.2. FileTypeBox and brands
The FileTypeBox (ftyp) identifies the file structure as ISOBMFF, and what functionality is required to be able to interpret the file.
The body of the FileTypeBox contains an array of compatible brands, which are four character codes (4CC) encoded in the same way as the box identifiers. A typical brand for an image file is mif1.
GeoHEIF files use the ogeo brand to mark the file as geospatial — either georeferenced or georeferenceable.
D.2.3. Item data
The encoded data in ISOBMFF can be contained in a range of locations. The usual location is in one or more MediaDataBox (mdat) instances in the file. Within the mdat, the bytes are potentially un-ordered arrays.
Other locations that may be used include the ItemDataBox (idat) nested within the MetaBox (meta), an IdentifiedMediaDataBox (imda) or in an external file. These are less common and may have less support within reader software.
D.2.4. Item information in HEIF
ISOBMFF has a range of potential encodings ranging from AV1 to uncompressed data in accordance with ISO/IEC 23001-17:2024. To allow reader applications to determine what information is present in the file, along with where the data is located and how to interpret that data, there is supporting structural data.
For timed data (e.g., video tracks, audio tracks, and associated metadata and subtitles), this is provided in the MovieBox (moov), discussed later in this Appendix.
For image data, the MetaBox (meta) provides the required information. As shown in the figure above, the nested box includes:
the ItemInfoBox, which identifies the various items that are present,
the ItemLocationBox, which identifies the location of the encoded data (often by byte offsets into the file), and
the ItemPropertiesBox, which provides descriptive and transformative properties.
Item properties generally describe how to interpret the encoded data to reconstruct the required image. Transformative properties change the resulting image, and include operations such as mirroring, rotation and scaling. Descriptive properties provide information that is either required or optional for reconstruction. If a property is required (such as the codec configuration), it is marked as essential.
In the figure above, the structure of the ItemPropertiesBox is broken out showing the ItemPropertyContainerBox (ipco) and ItemPropertyAssociationBox (ipma). The item properties are contained in the ItemPropertyContainerBox, concatenated one after another. The item properties are associated with the image item by an entry in the ItemPropertyAssociationBox, which provides the property indexes for each property that apply to an item, and whether the property is essential for the consumer to understand (i.e., the true part in the associations array).
NOTE 1: Property indexes are 1-based.
NOTE 2: Properties in the ItemPropertyContainerBox do not have to be used by any item.
The way the association works is optimized for re-use of properties where there is more than one item in the file. For example, a grid image type works by linking to multiple items, which can share the same decoder configuration and image spatial extent (ispe — the pixel space width and height) properties.
D.2.5. GeoHEIF Properties
GeoHEIF item properties are used in the same way as other item properties. That is, they are included in the ItemPropertyContainerBox and associated with zero or more items using the ItemPropertyAssociationBox.
GeoHEIF properties are not required to be marked essential, since the image can be reconstructed correctly without needing to understand those properties. Clearly the geospatial aspect of the image would not be included in the resulting image, but it would still be viewable.
Annex E
(informative)
GeoTIFF Cross Reference
E.1. Overview
This annex provides guidance on how to convert from GeoTIFF to GeoHEIF.
E.2. GeoTIFF
GeoTIFF 1.1 is normatively described in OGC 19-008r4. From that document:
GeoTIFF defines a set of TIFF tags provided to describe all “Cartographic” information associated with TIFF imagery that originates from satellite imaging systems, scanned aerial photography, scanned maps, digital elevation models, or as a result of geographic analyses. The goal is to provide a consistent mechanism for referencing a raster image to a known model space or earth-based coordinate reference system and for describing those coordinate reference systems.
— GeoTIFF, Section 1
A GeoTIFF file is a TIFF 6.0 file and inherits the file structure as described in the corresponding portion of the TIFF specification. In addition, all GeoTIFF specific information is encoded in reserved TIFF tags.
— GeoTIFF, Section 7.1
A GeoTIFF file stores projection parameters in a set of “Keys” which are virtually identical in function to a TIFF tag, but have one more level of abstraction above TIFF. Like a tag, a Key has an ID number ranging from 0 to 65535, but unlike TIFF tags, all key ID’s are available for use in GeoTIFF parameter definitions.
The Keys in GeoTIFF (also called “GeoKeys”) are all referenced from the GeoKeyDirectoryTag tag. The first four keys form the GeoKey Directory Header. The keys which make up this header are: KeyDirectoryVersion, KeyRevision, MinorRevision, and NumberOfKeys.
The GeoKey Directory Header is followed by <NumberOfKeys> Key Entries. Each Key Entry consists of four values.
“KeyID” gives the key-ID value of the Key (identical in function to TIFF tag ID, but completely independent of TIFF tag-space).
“TIFFTagLocation” indicates which TIFF tag contains the value(s) of the Key: if TIFFTagLocation is 0, then the value is SHORT, and is contained in the “ValueOffset” entry. Otherwise, the type (format) of the value is implied by the TIFF-Type of the tag containing the value.
“Count” indicates the number of values in this key.
“ValueOffset” ValueOffset indicates the index- offset into the TagArray indicated by TIFFTagLocation, if it is nonzero. If TIFFTagLocation=0, then ValueOffset contains the actual (SHORT) value of the Key, and Count=1 is implied. Note that the offset is not a byte-offset, but rather an index based on the natural data type of the specified tag array.
— GeoTIFF, Section 7.1.2
E.3. Mapping from GeoTIFF to GeoHEIF
E.3.1. Mapping process
The mapping from GeoTIFF to GeoHEIF can be considered in three stages.
Parsing the GeoTIFF file to extract the GeoKey Directory and contained items.
Conceptual mapping from the items in the GeoTIFF model to properties in the GeoHEIF model.
Encoding of the value in GeoHEIF properties and building the ISO Base Media File Format file.
The process for the first stage is provided in OGC 19-008r4.
The process for the third stage is described in the body of this document along with ISO/IEC 14496-12:2022 and ISO/IEC 23008-12:2022.
This section provides guidance on the second stage.
E.3.2. Mapping GTRasterTypeGeoKey
GTRasterTypeGeoKey defines whether the raster (pixel) value is conceptually a point (e.g., the post height for a digital elevation model), or an area (e.g., an aggregate value collected over a small, finite, geographic area). This is a frequent cause of confusion in GeoTIFF, where pixel coordinates values may be shifted by half a pixel width in each direction (row and column) from the expected value. This can be either up or down, depending on how the producer and consumer interpreted the value and associated GeoKeys.
GeoHEIF does not have a direct equivalent to GTRasterTypeGeoKey. In GeoHEIF, the model coordinates correspond to the top left corner of the pixel. It may be necessary to translate the values (e.g., by modification of the ModelTransformationProperty) when the source data uses a GTRasterTypeGeoKey value of PixelIsPoint (2).
NOTE: The nature of the sampling (conceptually single value vs averaging) may be recorded in the image or component metadata. GeoHEIF does not mandate a metadata encoding.
E.3.3. Mapping GTModelTypeGeoKey
GTModelTypeGeoKey defines the model type as an enumerated value (e.g., geographic, geocentric, projected, or user-defined). The main use of this is to identify which key provides the coordinate reference system. For example, if the GTModelTypeGeoKey value is 1, the model type is projected, and the coordinate reference system is identified by a mandatory ProjectedCRSGeoKey value.
GeoHEIF does not have a direct equivalent to the GTModelTypeGeoKey. Instead, the GeoHEIF CoordinateReferenceSystemBox or CoordinateReferenceSystemProperty completely identifies the coordinate reference system, including the type of coordinate reference system.
E.3.4. Mapping ModelTiepointTag
GeoTIFF ModelTiepointTag provides pairs of rasters to model tie-points. The tag can contain an arbitrary number of 6-tuple entries, where the first three entries in each tuple are denoted (I,J,K) and the second three entries are denoted (X,Y,Z).
The (I,J,K) entries specify the point at location (I,J) in pixel space with pixel value K. The (X,Y,Z) entries specify a vector in model space. The K entry is almost always 0, and the Z entry will be 0 for a two dimensional coordinate reference system.
ModelTiepointProperty provides a very similar way to specify tie points in GeoHEIF. The key differences are that the pixel coordinates are always integer values in GeoHEIF, and that the GeoHEIF encoding respects the coordinate reference system ordering, while GeoTIFF overrides this to always be in longitude / latitude or easting / northing order.
Depending on the accuracy requirement, any GeoTIFF non-integer values pixel coordinates may be rounded to the closest integer, or the raster to model tie may be adjusted to reflect the integer point.
The difference in coordinate reference system order between GeoTIFF and GeoHEIF may be handled by selection of an appropriate coordinate reference system, or by swapping the values in the tie point list.
E.3.5. Mapping ModelPixelScaleTag
GeoTIFF uses the ModelPixelScaleTag in conjunction with ModelTiepointTag as a way to provide simple transformations from pixel space to model space. A positive X value in the ModelPixelScaleTag indicates that model space X coordinates increase as raster space I indices increase. This is the standard horizontal relationship between raster space and model space. A positive Y value in the ModelPixelScaleTag indicates that model space Y coordinates decrease as raster space J indices increase. This is the standard vertical relationship between raster space and model space.
GeoHEIF does not have a direct equivalent to the GeoTIFF ModelPixelScaleTag. Instead, GeoHEIF uses a more general affine transformation encoded as a ModelTransformationProperty or ModelTransformationBox.
Given a single ModelTiepointTag value (I,J,K,X,Y,Z), and a ModelPixelScaleTag of (), the transformation matrix is given by:
(E.1)
where:
where not zero.
NOTE: The GeoHEIF encoding of the transformation matrix in ModelTransformationProperty only provides the required terms, as discussed in the next section.
The GeoHEIF encoding respects the coordinate reference system ordering, while GeoTIFF overrides this to always be in longitude / latitude or easting / northing order. This difference between GeoTIFF and GeoHEIF may be handled by selection of an appropriate coordinate reference system, or by swapping the rows in the transformation matrix.
E.3.6. Mapping ModelTransformationTag
The GeoTIFF ModeTransformationTag is equivalent to the GeoHEIF ModelTransformationProperty or ModelTransformationBox.
The GeoTIFF ModelTransformationTag always provides the full transformation matrix, and has 16 elements in row major order (i.e., the four values in the first row, followed by the four values in the second row, and so on).
For a given transformation:
(E.2)
The GeoHEIF encoding does not provide the final row, since it is constant in the special case of affine transform (it could be non-constant in a perspective transform). In addition, the GeoHEIF encoding uses a flag bit in the box header to specify whether the encoding is for a two dimensional or three dimensional transformations.
The GeoHEIF encoding respects the coordinate reference system ordering, while GeoTIFF overrides this to always be in longitude / latitude or easting / northing order. This difference between GeoTIFF and GeoHEIF may be handled by selection of an appropriate coordinate reference system, or by swapping the rows in the transformation matrix.
E.3.7. Mapping ProjectedCRSGeoKey
GeoTIFF uses the ProjectedCRSGeoKey to represent the model coordinate reference system for the projected case. A common example is UTM.
In GeoTIFF, the keys are integer values and are implicitly EPSG codes.
GeoHEIF can represent this in a range of ways in the CoordinateReferenceSystemBox or CoordinateReferenceSystemProperty. A simple way is to use a CURIE.
Given an GeoTIFF ProjectedCRSGeoKey value of 32755, corresponding to UTM Zone 55S, an equivalent GeoHEIF representation could be a crsEncoding value of curi and a crs value of [EPSG:32755]. In this case, there is no epoch value, and that would be omitted.
This could also be represented a crsEncoding value of crsu and a crs value of http://www.opengis.net/def/crs/EPSG/0/32755. It could alternatively be represented using WKT2.
The GeoHEIF encoding respects the coordinate reference system ordering, while GeoTIFF overrides this to always be in easting/northing order. This difference between GeoTIFF and GeoHEIF may be handled by selection of an appropriate coordinate reference system, or by swapping the rows in the transformation matrix.
E.3.8. Mapping GeodeticCRSGeoKey
GeoTIFF uses the GeodeticCRSGeoKey to represent the model coordinate reference system for the geodetic case. A common example is WGS-84 latitude/longitude.
In GeoTIFF, the keys are integer values and are implicitly EPSG codes.
GeoHEIF can represent this in a range of ways in the CoordinateReferenceSystemBox or CoordinateReferenceSystemProperty. A simple way is to use a CURIE.
Given an GeoTIFF GeodeticCRSGeoKey value of 4326, corresponding to WGS-84 latitude/longitude, an equivalent GeoHEIF representation could be a crsEncoding value of curi and a crs value of [EPSG:4326]. In this case, there is no epoch value, and that would be omitted.
This could also be represented using a CRS URI or WKT2.
The GeoHEIF encoding respects the coordinate reference system ordering, while GeoTIFF overrides this to always be in longitude/latitude order. This difference between GeoTIFF and GeoHEIF may be handled by selection of an appropriate coordinate reference system, or by swapping the rows in the transformation matrix.
E.3.9. Mapping VerticalGeoKey
GeoTIFF uses the VerticalGeoKey to represent the height reference, either using an EPSG vertical CRS, or a 3D geographic CRS.
There is no direct equivalent to the vertical CRS usage in GeoHEIF. Instead, the combined vertical and horizontal CRS can be represented in the CoordinateReferenceSystemBox or CoordinateReferenceSystemProperty. Depending on the complexity of the combination, a WKT2 representation may be required.
Where the VerticalGeoKey value is a 3D geographic CRS, this can be represented in CoordinateReferenceSystemBox or CoordinateReferenceSystemProperty, most simply as a CURIE.
E.3.10. Mapping Citation GeoKeys
GeoTIFF uses Citation GeoKeys (GeodeticCitationGeoKey, ProjectedCitationGeoKey and VerticalCitationGeoKey) to describe model CRS in free-form ASCII text.
There is no equivalent to this in GeoHEIF. Instead, CRS values are always described in a way that is unambiguous. Where descriptive text is desired, this can be included in the WKT2 form.
E.3.11. Mapping User defined model CRS
GeoTIFF has a large number of GeoKeys that can be used to describe an arbitrary model CRS. This is rarely used, and there is no general form for this.
GeoHEIF does not have equivalent properties for each of those GeoKeys. Instead, a user-defined CRS can be defined in WKT2 form and included in the CoordinateReferenceSystemBox or CoordinateReferenceSystemProperty.
Each conversion will be unique, and construction will require detailed analysis of OGC 19-008r4 Section 7.5 and OGC 18-010r11 for the specific situation.
Annex F
(informative)
Future work
The specification defined in this Report only covers still imagery. In the future another reports can extend support to use cases based on Image Sequences and Motion Imagery (video, streaming).
This Report proposes a binary encoding to describe dimensions and properties of the images. There is another way to describe this using a JSON encoding in a manner similar to what is proposed in the OGC API — Features and OGC API — Coverages Standards that can be included as an alternative. In the binary encoding defined for describing cell properties, the addition of the offset and scale factor in the description of the continuous properties could allow for a more compact binary encoding. For example, a temperature is typically a floating number but using a scale factor can be encoded as an integer.
While a tiling mechanism was considered out of the scope in Testbed 20, requirements for making HEIF a Cloud Optimized format could be considered as another OGC standard called COHEIF (Cloud Optimized GeoHEIF).
Some geospatial metadata was considered for inclusion in this Report but not a way to embed a complete metadata documentation such as ISO 19115 metadata.
The EngineeringCRS (proposed in OGC 23-028) can be considered to be included in this Standard as a new encoding for mcrs item property as a way to define sensor centered CRS.
Annex G
(informative)
Revision History
Table G.1 — Revision log
| Date | Release | Editor | Primary clauses modified | Description |
|---|---|---|---|---|
| 2024-09-12 | 0.1 | Núria Julià and Joan Masó | all | initial version |
| 2024-12-30 | 0.9 | Núria Julià and Joan Masó | all | final version |