GML in JPEG2000
Here is the formal specification for GML in JPEG2000.
Coverage information within a JPEG 2000 image makes the associated JPEG 2000 file into a
coverage or geographic image. Coverage information includes the following:
- Description of the coverage geometry. In most cases this will be a gml:Grid or
gml:RectifiedGrid, but could be any other GML aggregation geometry type (e.g.
MultiPoint). - Description of the value side (or range) of the coverage. This corresponds to the
radiometry in image terms. Note that a GML-JPEG 2000 geographic “image” could
include Digital Elevation Models, Bathymetry data etc. Description of the range of the
coverage may employ units of measure. - Description of the mapping of the geometry to the values stored in the JPEG
codestream.
GMLJP2 is also intended to handle a variety of other imaging use cases including the following:
- Multiple geo-referenced images of the same type. GML describes the geometry and the radiometry of the constituent images. Examples include a stereo photographic pair, a triangulation block of images, or image mosaics.
- Ortho-rectified images with or without associated digital elevation models.
- Digital Elevation Models that incorporate terrain-based constraints.
- A specific GML application schema is provided for expressing annotations. Annotations provide an association between geometric “regions” (0d, 1d, 2d etc.) in an image and annotation text, imagery, video and feature references.
- Geographic features (e.g. features obtained from an image by image interpretation) can be
packaged inside the JPEG 2000 image. Such features may be directly associated with a
particular image in the JPEG 2000 file or may be independent of the image altogether.
The following is an example coverage description. It states that the image is a Temperature coverage on a rectified grid with the
temperature expressed in degrees centigrade:
<?xml version="1.0" encoding="UTF-8"?>
<exp1:AverageTemp dimension="2" gml:id="AT0001">
<gml:rectifiedGridDomain>
<gml:RectifiedGrid dimension="2">
<gml:limits>
<gml:GridEnvelope>
<gml:low>1 1</gml:low>
<gml:high>4 4</gml:high>
</gml:GridEnvelope>
</gml:limits>
<gml:axisName>x</gml:axisName>
<gml:axisName>y</gml:axisName>
<gml:origin>
<gml:Point gml:id="P0001" srsName="gmljp2://xml/crs.gml#crs1123">
<gml:coordinates>1.2 3.4</gml:coordinates>
</gml:Point>
</gml:origin>
<gml:offsetVector srsName="gmljp2://xml/crs.gml#crs1123">1 2</gml:offsetVector>
<gml:offsetVector srsName= “gmljp2://xml/crs.gml#crs1123">4 5</gml:offsetVector>
</gml:RectifiedGrid>
</gml:rectifiedGridDomain>
<gml:rangeSet>
<gml:File>
<gml:rangeParameters>
<exp1:Temperature uom="gmljp2://xml/uom.gml#degC">template</exp1:Temperature>
</gml:rangeParameters>
<gml:fileName>gmljp2://codestream/0</gml:fileName>
<gml:fileStructure>Record Interleaved</gml:fileStructure>
</gml:File>
</gml:rangeSet>
</exp1:AverageTemp>

