License Agreement

Permission is hereby granted by the Open Geospatial Consortium, ("Licensor"), free of charge and subject to the terms set forth below, to any person obtaining a copy of this Intellectual Property and any associated documentation, to deal in the Intellectual Property without restriction (except as set forth below), including without limitation the rights to implement, use, copy, modify, merge, publish, distribute, and/or sublicense copies of the Intellectual Property, and to permit persons to whom the Intellectual Property is furnished to do so, provided that all copyright notices on the intellectual property are retained intact and that each person to whom the Intellectual Property is furnished agrees to the terms of this Agreement.

If you modify the Intellectual Property, all copies of the modified Intellectual Property must include, in addition to the above copyright notice, a notice that the Intellectual Property includes modifications that have not been approved or adopted by LICENSOR.

THIS LICENSE IS A COPYRIGHT LICENSE ONLY, AND DOES NOT CONVEY ANY RIGHTS UNDER ANY PATENTS THAT MAY BE IN FORCE ANYWHERE IN THE WORLD.

THE INTELLECTUAL PROPERTY IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE DO NOT WARRANT THAT THE FUNCTIONS CONTAINED IN THE INTELLECTUAL PROPERTY WILL MEET YOUR REQUIREMENTS OR THAT THE OPERATION OF THE INTELLECTUAL PROPERTY WILL BE UNINTERRUPTED OR ERROR FREE. ANY USE OF THE INTELLECTUAL PROPERTY SHALL BE MADE ENTIRELY AT THE USER’S OWN RISK. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ANY CONTRIBUTOR OF INTELLECTUAL PROPERTY RIGHTS TO THE INTELLECTUAL PROPERTY BE LIABLE FOR ANY CLAIM, OR ANY DIRECT, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM ANY ALLEGED INFRINGEMENT OR ANY LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR UNDER ANY OTHER LEGAL THEORY, ARISING OUT OF OR IN CONNECTION WITH THE IMPLEMENTATION, USE, COMMERCIALIZATION OR PERFORMANCE OF THIS INTELLECTUAL PROPERTY.

This license is effective until terminated. You may terminate it at any time by destroying the Intellectual Property together with all copies in any form. The license will also terminate if you fail to comply with any term or condition of this Agreement. Except as provided in the following sentence, no such termination of this license shall require the termination of any third party end-user sublicense to the Intellectual Property which is in force as of the date of notice of such termination. In addition, should the Intellectual Property, or the operation of the Intellectual Property, infringe, or in LICENSOR’s sole opinion be likely to infringe, any patent, copyright, trademark or other right of a third party, you agree that LICENSOR, in its sole discretion, may terminate this license without any compensation or liability to you, your licensees or any other party. You agree upon termination of any kind to destroy or cause to be destroyed the Intellectual Property together with all copies in any form, whether held by you or by any third party.

Except as contained in this notice, the name of LICENSOR or of any other holder of a copyright in all or part of the Intellectual Property shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Intellectual Property without prior written authorization of LICENSOR or such copyright holder. LICENSOR is and shall at all times be the sole entity that may authorize you or any third party to use certification marks, trademarks or other special designations to indicate compliance with any LICENSOR standards or specifications. This Agreement is governed by the laws of the Commonwealth of Massachusetts. The application to this Agreement of the United Nations Convention on Contracts for the International Sale of Goods is hereby expressly excluded. In the event any provision of this Agreement shall be deemed unenforceable, void or invalid, such provision shall be modified so as to make it valid and enforceable, and as so modified the entire Agreement shall remain in full force and effect. No decision, action or inaction by LICENSOR shall be construed to be a waiver of any rights or remedies available to it.


 

i. Abstract

Coverages represent space/time-varying phenomena, such as satellite imagery, digital elevation models, or digital aerial imagery. OGC Abstract Topic 6 [OGC 07-011] – which is identical to ISO 19123 – defines an abstract model of coverages. Coverage instances may be encoded using the GML Application Schema – Coverages – JPEG2000 Coverage Encoding Extension version 1.0 [OGC 12-108] which is based on the GML Application Schema – Coverages (GMLCOV) version 1.0 [OGC 09-146r2] which in turn is based on the Geography Markup Language (GML) version 3.2 [07-036], an XML grammar written in XML Schema for the description of application schemas as well as the transport and storage of geographic information.

This extension to the Web Coverage Service (WCS) 2.0 Interface Standard – Core (WCS) version 2.0 [OC 09-110r4] specifies the usage of the JPEG2000 coverage encoding and JPIP streaming capabilities with WCS. The approach is based on the authoritative GML Application Schema – Coverages – JPEG2000 Coverage Encoding Extension version 1.0 [OGC 12-108].

ii. Keywords

Ogcdoc, ogc documents, wcs, jpeg2000, jpip, extension

iii. Preface

Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. The Open Geospatial Consortium shall not be held responsible for identifying any or all such patent rights.

Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the standard set forth in this document, and to provide supporting documentation.

iv. Submitting organizations

The following organizations submitted this Document to the Open Geospatial Consortium (OGC):

v. Submitters

All questions regarding this document should be directed to the editor or the contributors:

Name Organization
Dimitri Sarafinof IGN, France
Stefan Strobel Strobel Geoinformatics

1. Scope

This OGC® Web Coverage Service 2.0 Candidate Interface Standard – JPEG2000/JPIP Coverage Encoding Extension – henceforth abbreviated as “JPEG2000-Coverages” specifies the usage of JPEG2000 coverage encoding retrieval though a JPIP URL with WCS.

2. Conformance

This document establishes the following requirements and conformance class:

Standardization target of all conformance classes are concrete coverage instance documents, as generated by some service and/or consumed by some client.

a concrete coverage instance can be a GMLCOV instance document with a reference to a specific file (for example though a JPIP URL).

URIs given in this document for each requirement or conformance test URIs are relative paths to be appended to the root http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/.

Annex A lists the conformance tests which shall be exercised on any software artifact claiming to implement jpeg2000-coverage and/or jpip-access conformance classes.

3. Normative references

This JPEG2000/JPIP-CoveragesBest Practice consists of this document and an associated XML Schema. The complete Best Practice is identified by the OGC URI:

http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0,

the document has an OGC URI:

http://www.opengis.net/doc/ISx/GMLCOV_jpeg2000-coverages/1.0.

The complete WCS standard is available for download from http://www.opengeospatial.org/standards/wcs; additionally, the XML Schema is posted online at http://bp.schemas.opengis.net/14-110r2/gmlcov/jpeg2000/1.0 as part of the OGC schema repository. In the event of a discrepancy between bundled and schema repository versions of the XML Schema files, the schema repository shall be considered normative.

The following normative documents contain provisions that, through reference in this text, constitute provisions of this candidate standard. For dated references, subsequent amendments to, or revisions of, any of these publications do not apply. For undated references, the latest edition of the normative document referred to applies.

[1] OGC 12-108, OGC® GML Application Schema - Coverages – JPEG2000 Coverage Encoding Extension, version 1.0

Conformance classes used:

  • jpeg2000-coverage
[2] OGC 09-110r4, OGC® Web Coverage Service 2.0 Interface Standard – Core, version 2.0

Conformance classes used:

  • core
[3] ISO/IEC 15444-1, Information technology — JPEG2000 Image Coding System. Part 1: Core coding system
[4] ISO/IEC 15444-2, Information technology — JPEG2000 Image Coding System: Part 2: Extensions
[5] IETF RFC3745 MIME Type Registrations for JPEG 2000 (ISO/IEC 15444)

4. Terms and Definitions

This document uses the terms defined in Sub-clause 5.3 of [OGC 06-121r8], 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 terms and definitions given in the above references apply.

5. Overview and conventions

5.1 Overview (informal)

JPEG 2000[1] (JP2) is an image compression standard and coding system. It was created by the Joint Photographic Experts Group committee in 2000 with the intention of superseding their original discrete cosine transform-based JPEG standard (created in 1992) with a newly designed, wavelet-based method. Please find further details in the OGC® GML Application Schema - Coverages – JPEG2000 Coverage Encoding Extension [OGC 12-108].

5.2 Namespace prefix conventions

The following namespaces are used in this document. The prefix abbreviations used constitute conventions used here, but are not normative. The namespaces to which the prefixes refer are normative, however.

Table : Namespace mappings
Prefix Namespace URI Description
xsd http://www.w3.org/2001/XMLSchema XML Schema namespace
gml http://www.opengis.net/gml/3.2 GML 3.2.1
gmlcov http://www.opengis.net/gmlcov/1.0 GML Application Schema – Coverages 1.0
wcs http://www.opengis.net/wcs/2.0 WCS 2.0
jpeg2000 http://www.opengis.net/gmlcov/jpeg2000/1.0 JPEG2000-Coverages 1.0

5.3 Multiple representations

Where representations of the same information are given in this OGC Best Practice and the associated XML schema document and there are differences in the representations, the XML schema shall take precedence.

6. JPEG2000 coverage requirements class

Requirements class jpeg2000-accessestablishes how JPEG2000 encoded coverages can be requested from a WCS including parameters defining JPEG2000 features like compression, tiling, etc. Its identifying URL is given by http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/req/jpeg2000-access.

6.1 GetCapabilities

The support of JPEG2000 coverage encoding shall be advertised in ows:Profile and a wcs:formatSupported elements.

Requirement 1
/req/jpeg2000-coverage/gmlcov-extension-identifier

A WCS implementing this extension shall include the following URI in a ows:Profile element of the ows:ServiceIdentification in a GetCapabilities response:
http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage.
Dependency: http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

Requirement 2
/req/jpeg2000-coverage/service-extension-identifier

A WCS implementing this extension shall include the following URI in a ows:Profile element of the ows:ServiceIdentification in a GetCapabilities response:
http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-access.

Requirement 3
/req/jpeg2000-coverage/format-supported

A WCS implementing this extension shall include the following MIME type identifier in a wcs:formatSupported element in the wcs:ServiceMetadata element in a GetCapabilities response:
image/jp2 and/or image/jpx
according to compliance to ISO 15444-1 or ISO 15444-2
Dependency: http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

6.2 DescribeCoverage

Requirement 4
/req/jpeg2000-coverage/native-format

A coverage served via WCS and native format JPEG2000 shall use the following MIME type identifier in the wcs:nativeFormat element in the wcs:ServiceParameters element in a DescribeCoverage response:
image/jp2 or image/jpx
according to compliance of JPEG2000 files available on the server to ISO 15444-1 or ISO 15444-2
Dependency: http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

6.3 GetCoverage

6.3.1 GetCoverage request

Requirement 5
/req/jpeg2000-coverage/format-requested

In a GetCoverage request requesting a coverage in JPEG2000 encoding the format parameter value shall be the following MIME type identifier:
image/jp2 or image/jpx
Dependency: http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

The following additional parameters are defined for requesting JPEG2000 encoded coverages via GetCoverage requests.

It is always possible for a given coverage instance to determine its current parameter values, i.e., the parameter values used at creation. Thus a JPEG2000 encoded coverage is self-describing.

Requirement 6
/req/jpeg2000-coverage/additional-parameters

The structure of a GetCoverage request requesting a coverage in JPEG2000 encoding shall be extended as defined in Table 2 and the respective XML Schema being part of this standard.

In case of using KVP protocol binding, it is recommended for server implementations to parse the format parameter first in order to have the right context for further parameters.

Table : GetCoverage additional parameters for JPEG2000 encoding
Name Definition Data Type Multiplicity
profile JPEG2000 profile used String, one of: “PROFILE0”, “PROFILE1”, “PROFILE2” zero or one (optional)
compression JPEG2000 compression rates and quality layers. Only the smallest compression rate defines the size of the data. The other rates define quality layers available. String with coma separated list of compression rates “10,20,50”
“-”shall be used for lossless compression
zero or one (optional)
tiling Indicates if tiling is requested. If tiling is requested, then both tileheight and tileheight shall be provided.
No tiling implies one tile which size is the coverage size.
Boolean zero or one (optional)
tileheight Tile height in pixels; allowed only together with tiling being "true" and tilewidth being present
No tile parameter implies tile size being the maximum allowed by the profile (if specified).
Integer greater than zero zero or one (conditional to tiling=“true”)
tilewidth Tile width in pixels; allowed only together with tiling being "true" and tileheight being present Integer greater than zero zero or one (conditional to tiling=“true”)
precinct Indicates if precinct is requested. If precint is requested, then precinctsize shall be provided. Boolean zero or one (optional)
precinctsize Precinct dimensions (must be powers of 2). Multiple records may be supplied, in which case the first record refers to the highest resolution level and subsequent records to lower resolution levels. The last specified record is used for any remaining lower resolution levels. Inside each record, vertical coordinates appear first. String with comma separated list of records i.e {256,256},{128,128},{64,64} zero or one (conditional to precinct=“true”)
georeference Specifies how the georeference is provided.
It can follow GeoJP2 specification or GMLJP2 OGC Standard.
GMLJP2 requires format=“image/jpx”
String, one of: “GEO”, “GML”, “GEO_GML” zero or one

depending of the profile used, restrictions may apply on others parameters (tiles size …).

6.3.2 GetCoverage response

A JPEG2000 encoded coverage follows the OGC® GML Application Schema - Coverages – JPEG2000 Coverage Encoding Extension [OGC 12-108] and thus the JPEG2000 format Specifications ([3] and [4]).

Requirement 7
/req/jpeg2000-coverage/format-returned

The response to a successful GetCoverage request containing a format parameter with value image/jp2 or image/jpx shall consist of a coverage encoded as specified in the OGC® GML Application Schema - Coverages – JPEG2000 Coverage Encoding Extension [OGC 12‑108].
Dependency: http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

A JPEG2000 encoded coverage encodes the JPEG2000 features as requested in a GetCoverage request.

Requirement 8
/req/jeg2000-coverage/profile

The response to a successful GetCoverage request containing a profile parameter shall consist of a JPEG2000 encoded coverage according to JPEG2000 format Specifications ([3] and [4]).

Requirement 9
/req/jpeg2000-coverage/compression

The response to a successful GetCoverage request containing a compression parameter shall consist of a JPEG2000 encoded coverage using the specified compression rates.

Requirement 10
/req/jpeg2000-coverage/tiling

The response to a successful GetCoverage request containing a tiling and a tileheight and a tilewidth parameter shall consist of a JPEG2000 encoded coverage with internal tiling using the specified height and width.

Requirement 11
/req/jpeg2000-coverage/georeference

The response to a successful GetCoverage request containing a georeference parameter shall consist of a JPEG2000 encoded coverage with georeference information included.

A server not implementing the requested feature is always free to respond with an exception.

6.3.3 GetCoverage exceptions

Requirement 12
/req/jpeg2000-coverage/exceptions

When a WCS server encounters an error described in column “meaning of exception code” in Table 3 then it shall return the corresponding exception report message with the contents of the locator parameter value as specified in the right column of Table 3.
Dependency: http://www.opengis.net/spec/WCS/2.0/conf/core

Table : Exception codes for JPEG2000
exceptionCode value HTTP code Meaning of code locator value
ProfileNotSupported 404 Server does not support the requested profile. Value of profile parameter.
ProfileInvalid 404 Invalid profile requested. Value of profile parameter.
CompressionNotSupported 404 Server does not support the requested compression. Value of compression parameter.
CompressionInvalid 404 Invalid compression requested. Value of compression parameter.
TilingNotSupported 404 Server does not support tiling.
TilingInvalid 404 Either tileheight, tilewidth, or both are missing or one or both are not a positive integer and thus invalid. Value of tileheight and tilewidth parameter.
GeoreferenceNotSupported 404 Server does not support the requested georeference. Value of georeference parameter.
GeoreferenceInvalid 404 Invalid georeference requested. Value of georeference parameter.

6.4 Examples

Following GetCoverage request will return coverage with id Coverage1 in JPEG2000 with GeoJP2 georeference.

Get/KVP encoding

http://www.myserver.com/wcs?service=WCS &version=2.0.1 &request=GetCoverage&coverageId=Coverage1&format= image/jp2 &profile=PROFILE1&compression=10,20,50&tiling=true&tileheight=1024&tilewidth=1024&precinct=yes&precinctSize={256,256},{128,128},{64,64}&georeferenced=GEO

XML/POST encoding


<?xml version=“1.0” encoding=“UTF-8”?>
<GetCoverage xmlns="http://www.opengis.net/wcs/2.0" service="WCS" version="2.0.1"
xmlns:jpeg2000="http://www.opengis.net/gmlcov/jpeg2000/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://www.opengis.net/wcs/2.0 http://schemas.opengis.net/wcs/2.0/wcsGetCoverage.xsd http://www.opengis.net/gmlcov/jpeg2000/1.0 gmlcovJPEG2000.xsd">
       <Extension>
             <jpeg2000:parameters>
                    <jpeg2000:profile>PROFILE1</jpeg2000:profile>
                    <jpeg2000:compression>10,20,50</jpeg2000:compression>
                    <jpeg2000:tiling>true</jpeg2000:tiling>
                    <jpeg2000:tileheight>1024</jpeg2000:tileheight>
                    <jpeg2000:tilewidth>1024</jpeg2000:tilewidth>
                    <jpeg2000:precinct>true</jpeg2000:precinct>
                    <jpeg2000:precinctsize>{256,256},{128,128},{64,64}</jpeg2000:precinctsize>
                    <jpeg2000:georeference>GEO</jpeg2000:georeference>
             </jpeg2000:parameters>
       </Extension>
       <CoverageId>Coverage1</CoverageId>
       <format>image/jp2</format>
       <mediaType>multipart/mixed</mediaType>
</GetCoverage>


Following example to request a coverage through a JPIP url within a multipart file:

Get/KVP encoding

http://www.myserver.com/wcs?service=WCS &version=2.0.1 &request=GetCoverage&coverageId=Coverage1&format= text/xml;urn:ogc:def:wcs:2.0:jpip-response& mediaType= multipart/mixed&profile=PROFILE1&compression=-,10,20,50&precinct=yes&precinctSize={256,256},{128,128},{64,64}&georeferenced=GEO

XML/POST encoding


<?xml version=“1.0” encoding=“UTF-8”?>
<GetCoverage xmlns="http://www.opengis.net/wcs/2.0" service="WCS" version="2.0.1"
xmlns:jpeg2000="http://www.opengis.net/gmlcov/jpeg2000/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://www.opengis.net/wcs/2.0 http://schemas.opengis.net/wcs/2.0/wcsGetCoverage.xsd http://www.opengis.net/gmlcov/jpeg2000/1.0 gmlcovJPEG2000.xsd">
       <Extension>
             <jpeg2000:parameters>
                    <jpeg2000:profile>PROFILE1</jpeg2000:profile>
                    <jpeg2000:compression>10,20,50</jpeg2000:compression>
                    <jpeg2000:tiling>false</jpeg2000:tiling>
                    <jpeg2000:precinct>true</jpeg2000:precinct>
                    <jpeg2000:precinctsize>{256,256},{128,128},{64,64}</jpeg2000:precinctsize>
                    <jpeg2000:georeference>GEO</jpeg2000:georeference>
             </jpeg2000:parameters>
       </Extension>
       <CoverageId>Coverage1</CoverageId>
       <format>text/xml;urn:ogc:def:wcs:2.0:jpip-response</format>
       <mediaType>multipart/mixed</mediaType>
</GetCoverage>

7. JPIP access requirements class

Requirements class jpip-access establishes how JPEG200 encoded coverages can be requested from a service and retrieved through a JPIP URL, including parameters defining JPEG200 features like compression, tiling, etc. Its identifying URL is given by http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/req/jpip-access.

7.1 GetCapabilities

The support of JPEG2000 coverage encoding shall be advertised in ows:Profile and a wcs:formatSupported elements.

Requirement 13
/req/jpip-access/gmlcov-extension-identifier

A WCS implementing this extension shall include the following URI in a ows:Profile element of the ows:ServiceIdentification in a GetCapabilities response:
http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage.
Dependency: http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

Requirement 14
/req/jpip-access/service-extension-identifier

A WCS implementing this extension shall include the following URI in a ows:Profile element of the ows:ServiceIdentification in a GetCapabilities response:
http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpip-access.

Requirement 15
/req/jpip-access/format-supported

A WCS implementing this extension shall include the following MIME type identifier in a wcs:formatSupported element in the wcs:ServiceMetadata element in a GetCapabilities response:
text/xml;urn:ogc:def:wcs:2.0:jpip-response
Dependency: none

7.2 DescribeCoverage

Requirement 16
/req/jpip-access/native-format

A coverage served via WCS and native format JPEG2000 shall use the following MIME type identifier in the wcs:nativeFormat element in the wcs:ServiceParameters element in a DescribeCoverage response:
image/jp2 or image/jpx
Dependency: http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

JPIP being a protocol and not a format, the native format is reported as a JPEG2000.

7.3 GetCoverage

7.3.1 GetCoverage request

A JPEG2000 coverage that has to be streamed through a JPIP URL can only be provided with a multipart/mixed document with a reference to this URL.

Requirement 17
/req/jpip-access/format-requested

In a GetCoverage request requesting a JPEG2000 coverage through a JPIP URL, the format parameter value shall be the following MIME type identifier:
text/xml;urn:ogc:def:wcs:2.0:jpip-response
Dependency: none

Requirement 18
/req/jpip-access/mediatype-requested

In a GetCoverage request requesting a JPEG2000 coverage through a JPIP URL, the mediatype parameter value shall be the following value:
multipart/mixed
Dependency: http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

The following additional parameters are defined for requesting JPEG2000 encoded coverages via GetCoverage requests.

It is always possible for a given coverage instance to determine its current parameter values, i.e., the parameter values used at creation. Thus a JPEG2000 encoded coverage is self-describing.

Requirement 19
/req/jpip-access/additional-parameters

The structure of a GetCoverage request requesting a coverage in JPEG2000 encoding shall be extended as defined in Table 2 and the respective XML Schema being part of this standard.

In case of using KVP protocol binding, it is recommended for server implementations to parse the format parameter first in order to have the right context for further parameters.

Requirement 20
/req/jpeg2000-coverage/additional-parameters-constraints

The parameters values of a GetCoverage request requesting a coverage in JPEG2000 encoding shall be compliant to restrictions defined by ISO 15444 Standard, depending on profile choice.

7.3.2 GetCoverage response

The JPIP accessed coverage follows the OGC® GML Application Schema - Coverages – JPEG2000 Coverage Encoding Extension [OGC 12-108] and thus the JPEG2000 format Specifications ([3] and [4]).

A GMLCOV JPEG2000 coverage is not different from a GMLCOV coverage with JPIP access; instead of providing a multipart document with the GML file and the JPEG2000 file, only the GML file is provided to the client.

The JPIP URL provide to the link to stream the JPEG2000 file. It means the "<gml:File>/<gml:fileReference>" element provides a JPIP URL (like http://myserver.com/coverages/coverage1.jp2) instead of just the file name (coverage1.jp2).

Requirement 21
/req/jpip-access/document-returned

The response to a successful GetCoverage request containing a format parameter with value text/xml;urn:ogc:def:wcs:2.0:jpip-responseand amediatype parameter with value multipart/mixed shall be a document compliant to multipart conformance class from GMLCOV 1.0.
Dependency: http://www.opengis.net/spec/GMLCOV/1.0/conf/multipart

Requirement 22
/req/jpip-access/range-set

Within the mulipart document, the range set of the coverage shall be provided by reference (<gml:File>/<gml:fileReference>) containing the JPIP URL.
The element <gml:fileStructure> shall have value image/jpx or image/jpx.
The element <gml:mimeType> shall have value image/jpx or image/jpx.
Dependency: http://www.opengis.net/spec/GMLCOV/1.0/conf/multipart

A JPEG2000 encoded coverage retrieved through a JPIP URL encodes the JPEG2000 features as requested in a GetCoverage request.

Requirement 23
/req/jpip-access/parameters

The JPEG2000 file retrieved from the JPIP URL in a response to a successful GetCoverage request shall statisfy requirements Requirement 7, Requirement 8, Requirement 9, Requirement 10 and Requirement 11.

A server not implementing the requested feature is always free to respond with an exception.

7.3.3 GetCoverage exceptions

Requirement 24
/req/jpip-access/exceptions

When a WCS server encounters an error described in column “meaning of exception code” in Table 3 – Exception codes for JPEG2000 then it shall return the corresponding exception report message with the contents of the locator parameter value as specified in the right column of Table 3.
Dependency: http://www.opengis.net/spec/WCS/2.0/conf/core


Annex A: Conformance Class Abstract Test Suite (Normative)

This Annex specifies an Abstract Test Suite which shall be passed in completeness by any implementation claiming conformance with this JPEG2000/JPIP coverage encoding extension.

Test identifiers below are relative to
http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/

A.1 Conformance class: jpeg2000-coverage

The OGC URI identifier of this conformance class is:
http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-access.

A.1.1 Prerequisites

Make sure that at least one coverage with JPEG2000 as native format is available from server under test.

A.1.2 Include GMLCOV extension identifier
Test id: /req/jpeg2000-coverage/gmlcov-extension-identifier
Test Purpose:

/req/jpeg2000-coverage/gmlcov-extension-identifier:
A WCS implementing this extension shall include the following URI in a ows:Profile element of the ows:ServiceIdentification in a GetCapabilities response:
http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage.
Dependency: http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

Test method:

Send a GetCapabilities request to the server under test and verify that the response contains a Profile element with said URI.

Test passes if constraint evaluates to true.

 

A.1.3 Include WCS extension identifier
Test id: /req/jpeg2000-coverage/service-extension-identifier
Test Purpose:

/req/jpeg2000-coverage/service-extension-identifier:
A WCS implementing this extension shall include the following URI in a ows:Profile element of the ows:ServiceIdentification in a GetCapabilities response:
http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-access.

Test method:

Send a GetCapabilities request to the server under test and verify that the response contains a Profile element with said URI.

Test passes if constraint evaluates to true.

 

A.1.4 Include format supported
Test id: /req/jpeg2000-coverage/format-supported
Test Purpose:

/req/jpeg2000-coverage/format-supported:
A WCS implementing this extension shall include the following MIME type identifier in a wcs:formatSupported element in the wcs:ServiceMetadata element in a GetCapabilities response:
image/jp2 and/or image/jpx
according to compliance to ISO 15444-1 or ISO 15444-2
Dependency: http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

Test method:

Send a GetCapabilities request to the server under test and verify that the response contains a wcs:formatSupported element in the wcs:ServiceMetadata element with the value "image/jp2" and/or "image/jpx ".

Test passes if constraint evaluates to true.

 

A.1.5 Native format
Test id: /req/jpeg2000-coverage/native-format
Test Purpose:

/req/jpeg2000-coverage/native-format:
A coverage served via WCS and native format JPEG2000 shall use the following MIME type identifier in the wcs:nativeFormat element in the wcs:ServiceParameters element in a DescribeCoverage response:
image/jp2 or image/jpx
according to compliance of JPEG2000 files available on the server to ISO 15444-1 or ISO 15444-2
Dependency: http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

Test method:

Send DescribeCoverage requests to the server under test for each coverage known to have JPEG2000 as native format and verify that the responses contain a wcs:nativeFormat element in the wcs:ServiceParameters element with the value "image/jp2" or "image/jpx".

Test passes if constraint evaluates to true.

 

A.1.6 Format parameter
Test id: /req/jpeg2000-coverage/format-requested
Test Purpose:

/req/jpeg2000-coverage/format-requested:
In a GetCoverage request requesting a coverage in JPEG2000 encoding the format parameter value shall be the following MIME type identifier:
image/jp2 or image/jpx
Dependency: http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

Test method:

Send GetCoverage requests to the server under test for each coverage known to be able to be encoded in JPEG2000 (which are at least the ones known to have JPEG2000 as native format) with the format parameter set to "image/jp2" or "image/jpx" and verify that the responses are properly encoded in JPEG2000.

Test passes if constraint evaluates to true.

 

A.1.7 Additional parameters
Test id: /req/jpeg2000-coverage/additional-parameters
Test Purpose:

/req/jpeg2000-coverage/additional-parameters:
The structure of a GetCoverage request requesting a coverage in JPEG2000 encoding shall be extended as defined in Table 2 and the respective XML Schema being part of this standard.

Test method:

Send GetCoverage requests to the server under test for a coverage known to be available using JPEG2000 encoding for each parameter defined in Table 2 and each possible value for String and Boolean parameters and at least 3 different values for Integer parameters. Each request shall include one optional parameter respecting dependencies (e.g. tileheight needs tiling set to true).

Test passes if for each request the response either indicates (by inspection) that the parameter has been recognized and executed properly or is a valid exception as defined in Error! Reference source not found..

 

A.1.8 Format returned
Test id: /req/jpeg2000-coverage/format-returned
Test Purpose:

/req/jpeg2000-coverage/format-returned:
The response to a successful GetCoverage request containing a format parameter with value image/jp2 or image/jpx shall consist of a coverage encoded as specified in the OGC® GML Application Schema - Coverages – JPEG2000 Coverage Encoding Extension [OGC 12‑108].
Dependency: http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

Test method:

Send GetCoverage requests to the server under test for each coverage known to be able to be encoded in JPEG2000 (which are at least the ones known to have JPEG200 as native format) with the format parameter set to "image/jp2" or "image/jpx" and verify that the responses are properly encoded in JPEG2000. Exercise tests for at least each of the following situations:

mediaType parameter present with value "multipart/related"

  • No subsetting parameter
  • Trimming in one dimension
  • Trimming in two dimensions

mediaType parameter not present

Test passes if for each request the response indicates (by inspection) that the parameter(s) has(have) been recognized and executed properly.

 

A.1.9 Parameter for profile
Test id: /req/jpeg2000-coverage/profile
Test Purpose:

/req/jeg2000-coverage/profile:
The response to a successful GetCoverage request containing a profile parameter shall consist of a JPEG2000 encoded coverage according to JPEG2000 format Specifications ([3] and [4]).

Test method:

Send GetCoverage requests to the server under test for each coverage known to be able to be encoded in JPEG2000 (which are at least the ones known to have JPEG2000 as native format) with the format parameter set to "image/jp2" or "image/jpx" and the "profile" parameter with all allowed values and verify that the responses are properly encoded in JPEG2000.

Test passes if for each request the response either indicates (by inspection) that the parameters have been recognized and executed properly or is the valid exception " ProfileNotSupported" as defined in Table 3.

 

A.1.10 Parameter for compression
Test id: /req/jpeg2000-coverage/compression
Test Purpose:

/req/jpeg2000-coverage/compression:
The response to a successful GetCoverage request containing a compression parameter shall consist of a JPEG2000 encoded coverage using the specified compression rates.

Test method:

Send GetCoverage requests to the server under test for each coverage known to be able to be encoded in JPEG2000 (which are at least the ones known to have JPEG2000 as native format) with the format parameter set to "image/jp2" or "image/jpx" and the "compression" parameter present for followings values of the "compression" parameter (“-”,“10”, “20”, “50”, “-,10,20,50”) and verify that the responses are properly encoded in JPEG2000.

Test passes if for each request the response either indicates (by inspection) that the parameters have been recognized and executed properly or is the valid exception "CompressionNotSupported" as defined in Table 3.

 

A.1.11 Parameter for tiling
Test id: /req/jpeg2000-coverage/tiling
Test Purpose:

/req/jpeg2000-coverage/tiling:
The response to a successful GetCoverage request containing a tiling and a tileheight and a tilewidth parameter shall consist of a JPEG2000 encoded coverage with internal tiling using the specified height and width.

Test method:

Send GetCoverage requests to the server under test for each coverage known to be able to be encoded in JPEG2000 (which are at least the ones known to have JPEG2000 as native format) with the format parameter set to "image/jp2" or "image/jpx“, the”tiling" parameter set to "true“, and the”tileheight" and "tilewidth" parameters set to at least 3 different valid values and verify that the responses are properly encoded in JPEG2000.

Test passes if for each request the response either indicates (by inspection) that the parameters have been recognized and executed properly or is the valid exception "TilingNotSupported" as defined in Table 3.

 

A.1.12 Parameter for georeference
Test id: /req/jpeg2000-coverage/georeference
Test Purpose:

/req/jpeg2000-coverage/georeference:
The response to a successful GetCoverage request containing a georeference parameter shall consist of a JPEG2000 encoded coverage with georeference information included.

Test method:

Send GetCoverage requests to the server under test for each coverage known to be able to be encoded in JPEG2000 (which are at least the ones known to have JPEG2000 as native format) with the format parameter set to "image/jp2" or "image/jpx“, the”georeference" parameter set to all possible values and verify that the responses are properly encoded in JPEG2000/GMLJP2.

Test passes if for each request the response either indicates (by inspection) that the parameters have been recognized and executed properly or is the valid exception " GeoreferenceNotSupported" as defined in Table 3.

 

A.1.13 Exceptions
Test id: /req/jpeg2000-coverage/exceptions
Test Purpose:

/req/jpeg2000-coverage/exceptions:
When a WCS server encounters an error described in column “meaning of exception code” in Table 3 then it shall return the corresponding exception report message with the contents of the locator parameter value as specified in the right column of Table 3.
Dependency: http://www.opengis.net/spec/WCS/2.0/conf/core

Test method:

Send GetCoverage requests to the server under test for a coverage known to be available using JPEG2000 encoding for each parameter defined in Table 2 including exactly one optional and using an invalid value.

Test passes if for each request the response is a valid exception as defined in Table 3 using the relevant exceptionCode.

 

A.2 Conformance Test Class: jpip-access

The OGC URI identifier of this conformance class is:
http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpip-access.

A.2.1 Prerequisites

Make sure that at least one coverage with JPEG2000 as native format is available from server under test.

 

A.2.2 Include GMLCOV extension identifier
Test id: /req/jpip-access/gmlcov-extension-identifier
Test Purpose:

/req/jpip-access/gmlcov-extension-identifier:
A WCS implementing this extension shall include the following URI in a ows:Profile element of the ows:ServiceIdentification in a GetCapabilities response:
http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage.
Dependency: http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

Test method:

Send a GetCapabilities request to the server under test and verify that the response contains a Profile element with said URI.

Test passes if constraint evaluates to true.

 

A.2.3 Include Service extension identifier
Test id: /req/jpip-access/service-extension-identifier
Test Purpose:

/req/jpip-access/service-extension-identifier:
A WCS implementing this extension shall include the following URI in a ows:Profile element of the ows:ServiceIdentification in a GetCapabilities response:
http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpip-access.

Test method:

Send a GetCapabilities request to the server under test and verify that the response contains a Profile element with said URI.

Test passes if constraint evaluates to true.

 

A.2.4 Include format supported
Test id: /req/jpeg2000-coverage/format-supported
Test Purpose:

/req/jpeg2000-coverage/format-supported:
A WCS implementing this extension shall include the following MIME type identifier in a wcs:formatSupported element in the wcs:ServiceMetadata element in a GetCapabilities response:
image/jp2 and/or image/jpx
according to compliance to ISO 15444-1 or ISO 15444-2
Dependency: http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

Test method:

Send a GetCapabilities request to the server under test and verify that the response contains a wcs:formatSupported element in the wcs:ServiceMetadata element with the value "image/jp2" and/or "image/jpx ".

Test passes if constraint evaluates to true.

 

A.2.5 Native format
Test id: /req/jpeg2000-coverage/native-format
Test Purpose:

/req/jpeg2000-coverage/native-format:
A coverage served via WCS and native format JPEG2000 shall use the following MIME type identifier in the wcs:nativeFormat element in the wcs:ServiceParameters element in a DescribeCoverage response:
image/jp2 or image/jpx
according to compliance of JPEG2000 files available on the server to ISO 15444-1 or ISO 15444-2
Dependency: http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

Test method:

Send DescribeCoverage requests to the server under test for each coverage known to have JPEG2000 as native format and verify that the responses contain a wcs:nativeFormat element in the wcs:ServiceParameters element with the value "image/jp2" or "image/jpx".

Test passes if constraint evaluates to true.

 

A.2.6 Format parameter
Test id: /req/jpeg2000-coverage/format-requested
Test Purpose:

/req/jpeg2000-coverage/format-requested:
In a GetCoverage request requesting a coverage in JPEG2000 encoding the format parameter value shall be the following MIME type identifier:
image/jp2 or image/jpx
Dependency: http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

Test method:

Send GetCoverage requests to the server under test for each coverage known to be able to be encoded in JPEG2000 (which are at least the ones known to have JPEG2000 as native format) with the format parameter set to "image/jp2" or "image/jpx" and verify that the responses are properly encoded in JPEG2000.

Test passes if constraint evaluates to true.

 

A.2.7 Additional parameters
Test id: /req/jpeg2000-coverage/additional-parameters
Test Purpose:

/req/jpeg2000-coverage/additional-parameters:
The structure of a GetCoverage request requesting a coverage in JPEG2000 encoding shall be extended as defined in Table 2 and the respective XML Schema being part of this standard.

Test method:

Send GetCoverage requests to the server under test for a coverage known to be available using JPEG2000 encoding for each parameter defined in Table 2 and each possible value for String and Boolean parameters and at least 3 different values for Integer parameters. Each request shall include one optional parameter respecting dependencies (e.g. tileheight needs tiling set to true).

Test passes if for each request the response either indicates (by inspection) that the parameter has been recognized and executed properly or is a valid exception as defined in Table 3.

 

A.2.8 Format returned
Test id: /req/jpeg2000-coverage/format-returned
Test Purpose:

/req/jpeg2000-coverage/format-returned:
The response to a successful GetCoverage request containing a format parameter with value image/jp2 or image/jpx shall consist of a coverage encoded as specified in the OGC® GML Application Schema - Coverages – JPEG2000 Coverage Encoding Extension [OGC 12‑108].
Dependency: http://www.opengis.net/spec/GMLCOV_jpeg2000-coverages/1.0/conf/jpeg2000-coverage

Test method:

Send GetCoverage requests to the server under test for each coverage known to be able to be encoded in JPEG2000 (which are at least the ones known to have JPEG200 as native format) with the format parameter set to "image/jp2" or "image/jpx" and verify that the responses are properly encoded in JPEG2000. Exercise tests for at least each of the following situations:

mediaType parameter present with value "multipart/related"

  • No subsetting parameter
  • Trimming in one dimension
  • Trimming in two dimensions

mediaType parameter not present

Test passes if for each request the response indicates (by inspection) that the parameter(s) has(have) been recognized and executed properly.

 

A.2.9 Parameter for profile
Test id: /req/jpeg2000-coverage/profile
Test Purpose:

/req/jeg2000-coverage/profile:
The response to a successful GetCoverage request containing a profile parameter shall consist of a JPEG2000 encoded coverage according to JPEG2000 format Specifications ([3] and [4]).

Test method:

Send GetCoverage requests to the server under test for each coverage known to be able to be encoded in JPEG2000 (which are at least the ones known to have JPEG2000 as native format) with the format parameter set to "image/jp2" or "image/jpx" and the "profile" parameter with all allowed values and verify that the responses are properly encoded in JPEG2000.

Test passes if for each request the response either indicates (by inspection) that the parameters have been recognized and executed properly or is the valid exception " ProfileNotSupported" as defined in Table 3.

 

A.2.10 Parameter for compression
Test id: /req/jpeg2000-coverage/compression
Test Purpose:

/req/jpeg2000-coverage/compression:
The response to a successful GetCoverage request containing a compression parameter shall consist of a JPEG2000 encoded coverage using the specified compression rates.

Test method:

Send GetCoverage requests to the server under test for each coverage known to be able to be encoded in JPEG2000 (which are at least the ones known to have JPEG2000 as native format) with the format parameter set to "image/jp2" or "image/jpx" and the "compression" parameter present for followings values of the "compression" parameter (“-”,“10”, “20”, “50”, “-,10,20,50”) and verify that the responses are properly encoded in JPEG2000.

Test passes if for each request the response either indicates (by inspection) that the parameters have been recognized and executed properly or is the valid exception "CompressionNotSupported" as defined in Table 3.

 

A.2.11 Parameter for tiling
Test id: /req/jpeg2000-coverage/tiling
Test Purpose:

/req/jpeg2000-coverage/tiling:
The response to a successful GetCoverage request containing a tiling and a tileheight and a tilewidth parameter shall consist of a JPEG2000 encoded coverage with internal tiling using the specified height and width.

Test method:

Send GetCoverage requests to the server under test for each coverage known to be able to be encoded in JPEG2000 (which are at least the ones known to have JPEG2000 as native format) with the format parameter set to "image/jp2" or "image/jpx“, the”tiling" parameter set to "true“, and the”tileheight" and "tilewidth" parameters set to at least 3 different valid values and verify that the responses are properly encoded in JPEG2000.

Test passes if for each request the response either indicates (by inspection) that the parameters have been recognized and executed properly or is the valid exception "TilingNotSupported" as defined in Table 3.

 

A.2.12 Parameter for georeference
Test id: /req/jpeg2000-coverage/georeference
Test Purpose:

/req/jpeg2000-coverage/georeference:
The response to a successful GetCoverage request containing a georeference parameter shall consist of a JPEG2000 encoded coverage with georeference information included.

Test method:

Send GetCoverage requests to the server under test for each coverage known to be able to be encoded in JPEG2000 (which are at least the ones known to have JPEG2000 as native format) with the format parameter set to "image/jp2" or "image/jpx“, the”georeference" parameter set to all possible values and verify that the responses are properly encoded in JPEG2000/GMLJP2.

Test passes if for each request the response either indicates (by inspection) that the parameters have been recognized and executed properly or is the valid exception " GeoreferenceNotSupported" as defined in Table 3.

 

A.2.13 Exceptions
Test id: /req/jpeg2000-coverage/exceptions
Test Purpose:

/req/jpeg2000-coverage/exceptions:
When a WCS server encounters an error described in column “meaning of exception code” in Table 3 then it shall return the corresponding exception report message with the contents of the locator parameter value as specified in the right column of Table 3.
Dependency: http://www.opengis.net/spec/WCS/2.0/conf/core

Test method:

Send GetCoverage requests to the server under test for a coverage known to be available using JPEG2000 encoding for each parameter defined in Table 2 including exactly one optional and using an invalid value.

Test passes if for each request the response is a valid exception as defined in Table 3 using the relevant exceptionCode.

– end of ATS –


Annex B: Revision history

Date Release Editor Primary clauses modified Description
2014-06-23 0.0.1 Dimitri Sarafinof All First draft based on discussions in the WCS.SWG.
2014-10-22 0.1.0 Dimitri Sarafinof All Feedback from OGC (Calgary TC) and DGIWG (Madrid TP)
2014-11-12 0.2.0 Dimitri Sarafinof All OGC document number and cleaning for pending document
2015-04-08 0.3.0 Dimitri Sarafinof All Alignment with OGC 12-108, examples added
2016-05-25 1.0 Scott Simmons All Prepare for publication



[1] http://en.wikipedia.org/wiki/JPEG_2000