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

The OGC Tile Matrix Set standard defines the rules and requirements for a tile matrix set as a way to index space based on a set of regular grids defining a domain (tile matrix) for a limited list of scales in a Coordinate Reference System (CRS) as defined in [OGC 08-015r2] Abstract Specification Topic 2: Spatial Referencing by Coordinates. Each tile matrix is divided into regular tiles. In a tile matrix set, a tile can be univocally identified by a tile column a tile row and a tile matrix identifier. This document presents a data structure defining the properties of the tile matrix set in both UML diagrams and in tabular form. This document also presents a data structure to define a subset of a tile matrix set called tile matrix set limits. XML and JSON encodings are suggested both for tile matrix sets and tile matrix set limits. Finally, the document offers practical examples of tile matrix sets both for common global projections and for specific regions.

Keywords

The following are keywords to be used by search engines and document catalogues.

ogcdoc, OGC document, tiles, maps, tile matrix set

Preface

In 2007 OGC approved and released the Web Map Tile Service standard [OGC 07-057r7] (WMTS). This OGC standard provides a definition of a “tile matrix set.” Over time, other OGC standards dealing with tiles in other ways needed to use the same definition. Unfortunately, these OGC standards could not use the tile matrix set definition directly because the definition was formally linked to the tile service. This document frees the concept of a tile matrix set from the WMTS standard so that other standards can reference the concept directly. This standard also adds an informative list of commonly used tile matrix sets. The submitters believe that other tile matrix concepts will emerge in the future. This document is anticipated to impact future revisions of other OGC standards such as GeoPackage.

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.

Security Considerations

The correct definition of a tile matrix set is crucial to be able to correctly geo-reference a tile. The application of the wrong tile matrix set could result in an incorrect geo-referencing of the tiles and the features represented in those tiles. In an emergency situation, such poor referencing could result sending first responders to the wrong location.

In a normal service interaction, the client requests the TileMatrixSet once and requests one or more tiles afterwards. The client needs to ensure that the TileMatrixSet definition has not been tampered with and corresponds to the correct TileMatrixSet. In practice this means that the client and server must to use a mechanism to ensure that the service is really who it claims to be and that the message that travels from the server to the client has not been altered.

If a server points to a definition of a TileMatrixSet that is hosted elsewhere, in addition to the precautions stated in before, the client must ensure that the service providing the definition of the TileMatrixSet is a trusted service. In addition, the synchronization of the tiles and the tile matrix set definition need to be ensured, guaranteeing that the tile matrix set definition has not been updated afterwards without the tile service knowing it.

Submitting organizations

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

  •   UAB-CREAF
  •   Image Matters LLC
  •   Natural Resources Canada NRCan

Submitters

All questions regarding this submission should be directed to the editor or the submitters:

Name

Affiliation

Joan Masó

UAB-CREAF

Jeff Yutzler

Image Matters LLC

Peter Rushforth

Canada Centre for Mapping and Earth Observation, Natural Resources Canada

1.    Scope

This document specifies the concepts of a tile matrix set and tile matrix set limits and their implementation in 2D space. This standard also provides both a XML and a JSON encoding. The Tile Matrix Set concept, initially developed in OGC Web Map Tile Service (WMTS) 1.0, is now provided as an independent standard that can be referenced by other standards such as WMTS 2.0 and GeoPackage, or the Natural Resources Canada (NRCan)-promoted specification Map Markup Language (MapML). In addition, this standard ensures that the tile matrix set concept can be used by grid based tiles as well as for vector tiles. This document also contains an informative Annex D with a library of proposed tile matrix set definitions for Mercator, Transverse Mercator, Polar Stereographic, Lambert Azimuthal Equal Area, and Lambert Conformal Conic. Global identifiers for the Tile Matrix Sets in the Annex D will be agreed with the OGC Naming Authority.

2.    Conformance

This standard defines tile matrix set, tile matrix set limits and tile matrix set link.

Requirements for the following standardization target types are considered.

  1. TileMatrixSet2D: This abstract class defines a data model for tile matrix sets in 2D [http://www.opengis.net/spec/tilematrixset/1.0/req/tilematrixset2d]. This abstract class has a single conformance class: [http://www.opengis.net/spec/tilematrixset/1.0/conf/tilematrixset2d]. The target is a service or an encoding needing to define TileMatrixSet (e.g., a future version of WMTS service metadata).
  2. TileMatrixSetLimits2D: This abstract class defines a data model for tile matrix sets limits in 2D [http://www.opengis.net/spec/tilematrixset/1.0/req/tilematrixsetlimits2d]. This abstract class has a single conformance class: [http://www.opengis.net/spec/tilematrixset/1.0/conf/tilematrixsetlimits2d]. The target is a service, a client, or an encoding needing to define TileMatrixSetLimits (e.g., a future version of WMTS service metadata).
  3. TileMatrixSetLink2D: This abstract class defines a data model for tile matrix links in 2D [http://www.opengis.net/spec/tilematrixset/1.0/req/tilematrixsetlink2d]. This abstract class has a single conformance class: [http://www.opengis.net/spec/tilematrixset/1.0/conf/tilematrixsetlink2d]. The target is a service, a client, or an encoding needing to declare conformity to a TileMatrixSet or/and a TileMatrixSetLimits (e.g., a future version of WMTS service metadata).
  4. XMLTileMatrixSet2D: This class defines a encoding in XML for tile matrix sets in 2D [http://www.opengis.net/spec/tilematrixset/1.0/req/xml-tilematrixset2d]. This class has a single conformance class: [http://www.opengis.net/spec/tilematrixset/1.0/conf/xml-tilematrixset2d]. The target is a service, a client, or an encoding needing to define a TileMatrixSet in XML (e.g., a future version of WMTS service metadata).
  5. XMLTileMatrixSetLimits2D: This class defines a encoding in XML for tile matrix sets limits in 2D [http://www.opengis.net/spec/tilematrixset/1.0/req/xml-tilematrixsetlimits2d]. This class has a single conformance class: [http://www.opengis.net/spec/tilematrixset/1.0/conf/xml-tilematrixsetlimits2d]. The target is a service, a client, or an encoding needing to define a TileMatrixSetLimits in XML (e.g., a future version of WMTS service metadata).
  6. XMLTileMatrixSetLink2D: This class defines a encoding in XML for tile matrix links in 2D [http://www.opengis.net/spec/tilematrixset/1.0/req/xml-tilematrixsetlink2d]. This class has a single conformance class: [http://www.opengis.net/spec/tilematrixset/1.0/conf/xml-tilematrixsetlink2d]. The target is a service, a client or an encoding needing to declare conformity to a TileMatrixSet or/and a TileMatrixSetLimits using an XML encoding (e.g., a future version of WMTS service metadata).
  7. JSONTileMatrixSet2D: This class defines a encoding in JSON for tile matrix sets in 2D [http://www.opengis.net/spec/tilematrixset/1.0/req/json-tilematrixset2d]. This class has a single conformance class: [http://www.opengis.net/spec/tilematrixset/1.0/conf/json-tilematrixset2d]. The target is a service, a client, or an encoding needing to define a TileMatrixSet in JSON (e.g., a future version of a WMTS OpenAPI).
  8. JSONTileMatrixSetLimits2D: This class defines a encoding in JSON for tile matrix sets limits in 2D [http://www.opengis.net/spec/tilematrixset/1.0/req/json-tilematrixsetlimits2d]. This class has a single conformance class: [http://www.opengis.net/spec/tilematrixset/1.0/conf/json-tilematrixsetlimits2d]. The target is a service, a client ,or an encoding needing to define a TileMatrixSet in JSON (e.g., a future version of a WMTS OpenAPI).
  9. JSONTileMatrixSetLink2D: This class defines a encoding in JSON for tile matrix links in 2D [http://www.opengis.net/spec/tilematrixset/1.0/req/json-tilematrixsetlink2d]. This class has a single conformance class: [http://www.opengis.net/spec/tilematrixset/1.0/conf/json-tilematrixsetlink2d]. The target is a service, a client, or an encoding needing to declare conformity to a TileMatrixSet or/and a TileMatrixSetLimits using a JSON encoding (e.g., a future version of a WMTS OpenAPI).
  10. JSONLDTileMatrixSet2D: This class defines a encoding in JSON-LD for tile matrix sets in 2D [http://www.opengis.net/spec/tilematrixset/1.0/req/jsonld-tilematrixset2d]. This class has a single conformance class: [http://www.opengis.net/spec/tilematrixset/1.0/conf/jsonld-tilematrixset2d] The target is a service, a client, or an encoding needing to define a TileMatrixSet in JSON that needs to connect to the semantic web (e.g., a future version of a WMTS OpenAPI).
  11. JSONLDTileMatrixSetLimits2D: This class defines a encoding in JSON-LD for tile matrix sets limits in 2D [http://www.opengis.net/spec/tilematrixset/1.0/req/jsonld-tilematrixsetlimits2d]. This class has a single conformance class: [http://www.opengis.net/spec/tilematrixset/1.0/conf/jsonld-tilematrixsetlimits2d] The target is a service, a client, or an encoding needing to define a TileMatrixSet in JSON that needs to connect to the semantic web (e.g., a future version of a WMTS OpenAPI).
  12. JSONLDTileMatrixSetLink2D: This class defines a encoding in JSON-LD for tile matrix links in 2D [http://www.opengis.net/spec/tilematrixset/1.0/req/jsonld-tilematrixsetlink2d]. This class has a single conformance class: [http://www.opengis.net/spec/tilematrixset/1.0/conf/jsonld-tilematrixsetlink2d] The target is a service, a client, or an encoding needing to declare conformity to a TileMatrixSet or/and a TileMatrixSetLimits using a JSON encoding that needs to connect to the semantic web (e.g., a future version of a WMTS OpenAPI).

Conformance with this standard shall be verified 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[1].

All requirements-classes and conformance-classes described in this document are owned by the standard(s) identified.

3.    References

The following normative documents contain provisions that, through references in this text, constitute provisions of this document. 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: OGC 06-121r9 Web Service Common Implementation Specification, version 2.0, 2010. https//portal.ogc.org/files/38867

[2]  OGC: OGC 08-005r2 Abstract Specification Topic 2: Spatial referencing by coordinates, 2010. https://portal.ogc.org/files/39049

[3]  OGC: OGC 09-146r6 Coverage Implementation Schema (“CIS”) Version 1.1, 2017. https://docs.ogc.org/is/09-146r6/09-146r6.html

[4]  IETF: IETF RFC 7159, The JavaScript Object Notation (JSON) Data Interchange Format, 2014. https://www.ietf.org/rfc/rfc7159.txt

[5]  W3C: W3C JSON-LD 1.0, A JSON-based Serialization for Linked Data, 2014. http://www.w3.org/TR/json-ld/

4.    Terms and Definitions

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:

4.1           

coordinate reference system

coordinate system that is related to the real world by a datum [ISO 19111]

4.2           

coordinate system

set of mathematical rules for specifying how coordinates are to be assigned to points [ISO 19111]

4.3           

domain

well-defined set [ISO/TS 19103:2005]

NOTE: A mathematical function may be defined on this set, i.e. in a function f:A–>B, A is the domain of the function f.

4.4           

grid

network composed of two or more sets of curves in which the members of each set intersect the members of the other sets in an algorithmic way [ISO 19123:2005]

NOTE: The curves partition a space into grid cells.

NOTE2: A grid can be used to define a tessellation of the space.

4.5           

range set

set of all values a function f can take as its arguments vary over its domain [OGC 07-036]

4.6           

raster tile

a tile that contains information in a gridded form. Commonly the values of the grid represent colors of each cell in the grid for immediate pictorial representation on rendering devices, but can also be coverage subsets.

4.7           

regular grid

grid whose grid lines have a constant distance along each grid axis [OGC 09-146r6]

NOTE2: A regular grid can be used to define a regular tessellation of the space.

4.8           

tessellation

partitioning of a space into a set of conterminous subspaces having the same dimension as the space being partitioned [ISO 19123]

NOTE: A tessellation composed of congruent regular polygons or polyhedra is a regular tessellation. One composed of regular, but non-congruent polygons or polyhedra is a semi-regular tessellation. Otherwise the tessellation is irregular.

4.9           

tile

a small rectangular representation of geographic data, often part of a set of such elements, covering a tiling scheme and sharing similar information content and graphical styling. A tile can be uniquely defined in a tile matrix by one integer index in each dimension. Tiles are mainly used for fast transfer (particularly in the web) and easy display at the resolution of a rendering device. Tiles can be grid based pictorial representations, coverage subsets, or feature based representations (e.g., vector tiles).

4.10        

tile matrix

a grid tiling scheme that defines how space is partitioned into a set of conterminous tiles at a fixed scale.

NOTE A tile matrix constitutes a tessellation of the space that resembles a matrix in a 2D space characterized by a matrix width (columns) and a matrix height (rows).

4.11        

tile matrix set

a tiling scheme composed by collection of tile matrices defined at different scales covering approximately the same area and has a common coordinate reference system.

4.12        

tiling scheme

a scheme that defines how space is partitioned into individual tiled units. A tiling scheme defines the spatial reference system, the geometric properties of a tile, which space a uniquely identified tile occupies, and reversely, which unique identifier corresponds to a space satisfying the geometric properties to be a tile.

NOTE: A tiling scheme is not restricted to a coordinate reference system or a tile matrix set and allows for other spatial reference systems such as DGGS and other organizations including irregular ones.

4.13        

tile set

a series of actual tiles contain data and following a common tiling scheme.

4.14        

vector tile

a tile that contains vector information that has been simplified at the tile scale resolution and clipped by the tile boundaries.

4.15        

well-known scale set

a well-known combination of a coordinate reference system and a set of scales that a tile matrix set declares support for

5.    Conventions

This section provides details and examples for any conventions used in the document. 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 in this specification are denoted by the URI

http://www.opengis.net/spec/TileMatrixSet/1.0

All requirements and conformance tests that appear in this document are denoted by partial URIs which are relative to this base.

6.    Tile Matrix Set concept

As stated in [OGC 08-015r2] Abstract Specification Topic 2: Spatial Referencing by Coordinates, a coordinate system is a set of mathematical rules for specifying how coordinates are to be assigned to points in space. A CRS is a coordinate system that is related to the real world by a reference datum. An example of mathematical rules is the application of a sphere or an ellipsoid centered in the datum and the use of a projection to transform the sphere or the ellipsoid into a planar representation of the world. Usually, the resulting planar coordinates are expressed as real numbers that express distances to the origin of the projection. This section introduces a tiling scheme called Tile Matrix Set that is defined on top of a CRS.

6.1    Tile Matrix

A Tile Matrix is a tiling scheme defined as a grid coverage. For the [OGC 09-146r6] CIS GeneralGridCoverage, the domain set of a grid describes the direct positions in multi-dimensional coordinate space, depending on the type of grid. In a grid-regular, simple equidistant grids are established. When a regular grid coverage is used to represent the world, the space becomes discrete in each dimension of the grid domain range; e.g., it is divided into regular intervals that can be assigned to integer numbers that enumerate and identify tiles. This grid of tiles domain range can be defined by:

a)     The extreme corner (called top left corner in a two-dimensional space) of the bounding box of regular grid coverage (e.g., the CRS coordinates of the top left corner of the top left extreme where the integer coordinates are 0);

b)    A tile size in CRS units for in each dimension of the CRS; and

c)     The size of the tile matrix in tile units (i.e., number of tiles) that closes the bounding box of the tiled space. Frequently the sizes of the two first dimensions are called matrix width and matrix height.

6.1.1    Tile matrix in a two-dimensional space.

Tiles are originally designed to be rendered in rendering devices that have the space quantized in pixels characterized by a size.

The tile size in CRS units of the first two dimensions and the size of the rendering device pixels are related. The relation is a function of the following two parameters:

a)     A scale (expressed as a scale denominator) and

b)    A groupingof rendering pixels in a tile forming the tile. 256x256 or 512x512 are common grouping values. Frequently the sizes of the two first dimensions are called tile width and tile height.

NOTE: Normally tile width and tile height are equal but this constraint is not imposed by this standard.

The scale denominator is defined here with respect to a “standardized rendering pixel size” of 0.28 mm × 0.28 mm (millimeters). The definition is the same as used in Web Map Service WMS 1.3.0 [OGC 06-042] and in Symbology Encoding (SE) Implementation Specification 1.1.0 [OGC 05-077r4] and later adopted by WMTS 1.0 [OGC 07-057r7]. Frequently, the true pixel size is unknown and 0.28 mm has the actual size of a common display from 2005. This value is still being used as reference even if current display devices are built with pixel sizes much smaller.

NOTE: Since the 1980s, the Microsoft Windows operating system has set their default standard display pixels per inch (PPI) to 96. This value results in an approximated 0.264 mm per pixel. The similarity of this value with the actual 0.28 mm adopted in this standard can create some confusion.

Normally the matrix width is constant and in this circumstance, having a single scale factor using a single standardized rendering pixel size for the two dimensions, results in pixels that have the same size in the first two dimensions. This is commonly known as square pixels.

NOTE: The geometry above is different from WMS, which does allow non-square pixels (although many implementations fail to support non-square pixels properly).

In raster tiles, a second regular grid that is coincident with the original regular grid coverage domain range but denser (with smaller cell size but an exact submultiple of that size) is defined. Each grid cell of this new higher resolution grid is called a grid cell. The gridded space is defined by the same top left corner as the original tile matrix. The grid cells are defined by equally dividing the original tiles into grid cellsusing thenumber of rendering pixels in a tile. In common tiled 2D visualization clients, a part of the grid cells is made coincident with the device pixels and this part of the grid is rendered in the device: the second grid is known as the extrapolated device grid. In other words, a tile is divided in a number of pixels in each dimension of the CRS in a way that creates pixels of the exact same size of the grid of a rendering device.

NOTE: In raster tiles, it is common that the range set represents colors of the cells and is stored in PNG or JPEG files of exactly one tile. Nevertheless, nothing prevents to store other kinds of values in other formats, such as TIFF files.

Vector tiles also make use of the extrapolated device grid where vector tiles can be rendered for visualization purposes.

NOTE: Vector tiles expressed in pure vector formats, such as GeoJSON, do not need an extrapolated device grid. Other vector tiles formats (e.g., MBTiles) define an internal coincident grid denser than the extrapolated device gridandexpress the vector coordinates using indices in this denser grid.

For the case of a two-dimensional space, given the top left point of the tile matrix in CRS coordinates (tileMatrixMinX, tileMatrixMaxY), the width and height of the tile matrix in tile units (matrixWidth, matrixHeight), the rendering pixels in a tilevalues (tileWidth, tileHeight), the coefficient to convert the coordinate reference system (CRS) units into meters (metersPerUnit), and the scale (1:scaleDenominator), the bottom right corner of the bounding box of a tile matrix (tileMatrixMaxX, tileMatrixMinY) can be calculated as follows:

pixelSpan = scaleDenominator×0.28 10-3 / metersPerUnit(crs);

tileSpanX = tileWidth×pixelSpan;

tileSpanY = tileHeight×pixelSpan;

tileMatrixMaxX = tileMatrixMinX + tileSpanX×matrixWidth;

tileMatrixMinY = tileMatrixMaxY - tileSpanY×matrixHeight;

The tile space therefore looks like this:

Tile Space
Figure : Tile Space

Each tile in a tile matrix is identified by its tileCol and tileRow indices that have their 0,0 origin in the tile next to the top left corner of the tile matrix and that increases towards the right and towards the bottom respectively, as shown in Figure 1. Annex F in this document includes pseudocode that illustrates the process for obtaining the tile indices that cover a bounding box rectangle and also the computation to get the CRS coordinates that bound a tile.

NOTE: A tile matrix can be implemented as a set of image files (e.g., PNG or JPEG) in a file folder, each file representing a single tile

NOTE2: Section 6 of the TIFF specification v6 defines 2D tiles in the same way that has been done in this standard. All tiles in a tile matrix can be stored in a single TIFF file. The TIFF file includes only one set conterminous tiles sharing a common single scale.

6.2    Tile Matrix Set

Depending on the range of scales needed to be represented in the screen of a client, a single tile matrix is impractical and might force the software to spend too much time simplifying/generalizing the dataset prior to rendering.

Commonly, several tile matrices are progressively defined covering the expected ranges of scales needed for the application. A Tile Matrix Set is a tiling scheme composed of a collection of tile matrices, optimized for a particular scale and identified by a tile matrix identifier. Each Tile Matrix Set has an optional approximated bounding box, but each tile matrix has an exact bounding box that is deduced indirectly from other parameters. Tile matrix bounding boxes at each scale will usually vary slightly due to their cell alignment.

Tile Matrix Set representation
Figure : Tile Matrix Set representation

A Tile Matrix has a unique alphanumeric identifier in the Tile Matrix Set. Some tile-based implementations prefer to use a zoom level number which has the advantage of suggesting some order in the list of tile matrices. This standard does not use the zoom level concept but, to ease adoption of this standard in implementations that prefer numeric zoom levels, many Tile Matrix Sets defined in Annex D use numbers as Tile Matrix identifiers. If this is not the case, the index order in the list of tile matrices defined in a Tile Matrix Set could still be used as a zoom levelorderinginternally.

In some other standards, the tile matrix set concept is called an image pyramid, like in clause 11.6 of the OGC KML 2.2 [OGC 07-147r2] standard. JPEG2000 (ISO/IEC 15444-1) and JPIP (ISO/IEC 15444-9) also use a similar division of the space called resolution levels. Nevertheless, in those cases the pyramid is self-defined starting from the more detailed tile matrix (that uses square tiles), and constructing tiles of the next scales by successively aggregating 4 tiles of the previous scale, and so on (see Figure 2), and interpolating each 4 contiguous values of the previous scale into one in the next scale. That approach involves a more rigid structure which has scales related by powers of two and tiles that perfectly overlap tiles on the inferior scale denominators. Tile Matrix Sets presented in this document are more flexible, but KML superoverlays or JPEG2000-based implementations can use this standard with some extra rules to describe their tile matrix sets. This document describes some tile matrix sets with scale sets related by powers of two in the Annex D.

Each of the WMTS procedure-oriented architectural style operations and resource-oriented architectural style resources are described in more detail in subsequent clauses in this standard.

NOTE: Clients and servers have to be careful when comparing floating numbers with tolerance (double precision, 16-digit numbers, have to be used).

6.3    Well-known scale sets

When overlaying and presenting tiles encoded in different tile matrix sets that do not have common sets of scale denominators and the same CRS in an integrated client, rescaling or re-projecting tiles to the common scale of the view might require re-sampling calculations that result in visual quality degradation. To prevent this situation, a common coordinate reference system and a common set of scales shared by as many layers and services as possible is desirable. Thus, the concept of well-known scale set (WKSS) is introduced.

Note that a WKSS only defines a small subset of what is needed to completely define a Tile Matrix Set. A WKSS is an optional feature that does not replace the need to define the Tile Matrix Set and its Tile Matrices. The original purpose of WKSS might not be necessary if services share and reference common Tile Matrix Sets definitions such as the ones in Annex D.

A WKSS is a commonly used combination of a CRS and a set of scales. A tile matrix set can declare support for a WKSS set by referencing that WKSS. A client application can confirm that tiles in one tile matrix set are compatible with tiles in another tile matrix set merely by verifying that they declare a common WKSS. The informative Annex C provides several WKSSs and others could be incorporated in the future.

A tile matrix set conforms to a particular WKSS when it uses the same CRS and defines all scale denominators ranging from the largest scale denominator in the WKSS to some low scale denominator (in other words, it is not necessary to define all the lower scale denominators to conform to a WKSS).

6.4    Tile based coordinates in a tile matrix set

A tile in a tile-based coordinate can be referred by its tile position in the tile matrix dimensions and the tile matrix identifier in tile matrix set. In a two-dimensional space, a tile is identified by these 3 discrete index names: tile row, tile column and tile matrix identifier.

In raster tiles, a grid cell in the extrapolated device grid domain set can be identified by a set of floating point coordinates in the CRS and by one of two ways that does not present rounding issues, as follows.

·      By the tile indices the grid cell is contained by (referred by its tile position in the tile matrix dimensions and the Tile Matrix identifier in the Tile Matrix Set) and the cell indices inside the tile (i,j,…). In a two-dimensional space, a tile is identified by 5 discrete indices that are named: tile row, tile column, tile matrix identifier, i and j. This is how GetFeatureInfo works in WMTS. This set of coordinates is called “tile coordinates.”

·      By the position of the cell in grid defined by the extrapolated device grid domain set (that starts at the top left corner of the tiled space) of the tile matrix and the identifier of the Tile Matrix in Tile Matrix Set. In a two-dimensional space, a grid cell is identified by 3 discrete indices that are named: i¢, j¢ and tile matrix identifier. Note that i¢ and j¢ can be very big integer numbers and, for very detailed scale, tile matrices might require integer 64-bit notation if stored as binary numbers. This set of indices is called “tilematrix coordinates.”

Tile coordinates (a) and Tile matrix coordinates (b) to identify grid cells
Figure : Tile coordinates (a) and Tile matrix coordinates (b) to identify grid cells

 

6.5    Tile matrix set limits

If the tile matrix set for a dataset covering a bounding box defines the extreme corner adjusted to the actual content of this dataset, and later the bounding box needs to be extended, then the extreme corner of each TileMatrix will change, which will change the tile indices of any previous tile invalidating any previously cached tile. To overcome this problem, a dataset can optionally use a more generic TileMatrixSet that covers a bigger (or even global) area. In fact, that TileMatrixSet that defines an area that might be covered by the dataset in a future could easily be shared for many datasets and become a common TileMatrixSet.

To inform the client about the valid range of tile indices, the TileMatrixSetLimits concept is introduced. TileMatrixSetLimits informs the minimum and a maximum limits of these indices for each TileMatrix that contains actual data. The area outside these limits is considered empty space.

TileMatrix Limits
Figure : TileMatrix Limits

6.6    Variable matrixWidth tile matrix

Until now, it has been assumed that matrixWidth is constant in for all tile rows. This is common usage for projections that do not distort the Earth too much. But when using Equirectangular Plate Carrée projection (see Annex D.2) the distortion increases for tiles closer to the poles. In the extreme, the upper row of the upper tile (the one representing the North Pole) contains a list of repeated values that represents almost the same position in the space. The same can be said for the lower row of the lower tile (the one representing the South Pole). When the tiles are represented in a flat projection, this is an effect that cannot be avoided, but when the data are presented in a virtual globe, the distortion results in redundant information in the poles that need to be eliminated by the client during the rendering. It would be better if the distortion is compensated by the server side instead.

The solution consists of reducing the number of tiles (matrixWidth) in the high latitude rows and generating those tiles with a compressed scale in the i dimension (see Figure 5). To allow that, the tile model must be extended to specify coalescence coefficients (c) that reduce the number of tiles in the width direction by aggregating c horizontal tiles but keeping the tileWidth (and tileHeight). The coalescence coefficient will not be applied next to the Equator but will be used in medium and high latitudes (the higher the latitude the bigger the coefficient).

Even if tiles can coalesce, this does not change the indexing or the tile matrix set that will be the same as if no coalescence has been applied. For example, if the c coefficient is 4, the tileRow of the first tile will be 0, the tileRow of the second tile will be 4, the tileRow of the third tile will be 8 and so on. In other words, and for the same example, tileRow 0, 1, 2 and 3 points to the same tile.

NOTE: This decision is necessary to still be able to be able to define a rectangle in the space based on tile indices as we do in tile matrix limits section.

TileMatrix with variable matrix width
Figure : TileMatrix with variable matrix width

7.    TileMatrixSet2D model

7.1    TileMatrixSet2D requirements class

Requirements class tilematrixset2D establishes how to describe a TileMatrixSet for a two-dimensional tile space. It is expected that tile matrix sets are defined once and that servers or encodings using or distributing tiles will declare the usage of a tile matrix set by linking to that tile matrix set. The identifying URI for this class is http://www.opengis.net/spec/tilematrixset/1.0/req/tilematrixset2d.

Req 1        req/tilematrixset2d/model:
A tile matrix set 2D shall be defined following the UML model as shown in Figure 1 and the model description in Table 1 and Table 2.
Dependency: http://www.opengis.net/spec/owscommon/2.0/req

 

TileMatrixSet UML model
Figure : TileMatrixSet UML model

Table 1 defines the structure of the TileMatrixSet.

Table : Parts of TileMatrixSet data structure
Names Definition Data type and values Multiplicity and use

identifier

Identifier

Tile matrix set identifier g

ows:CodeType, as adaptation of MD_Identifier class ISO 19115

One (mandatory)

title a

Title

Title of this tile matrix set, normally used for display to a human

LanguageString data structure, see Figure 15 in OWS Common [OGC 06-121r9]

Zero or more (optional) Include when available and useful

Include one for each language represented f

abstract  a

Abstract

Brief narrative description of this tile matrix set, normally available for display to a human

LanguageString data structure, see Figure 15 in OWS Common [OGC 06-121r9]

Zero or more (optional) Include when available and useful

Include one for each language represented

keywordsa

Keywords

Unordered list of one or more commonly used or formalized word(s) or phrase(s) used to describe this dataset

MD_Keywords class in ISO 19115

Zero or more (optional)

One for each keyword authority used

bounding‌Box

Bounding‌Box

Minimum bounding rectangle surrounding the tile matrix set, in the supported CRS b

BoundingBox data structure, see subclause 10.2 of OWS Common [OGC 06-121r9]

Zero or one (optional)

Deprecated

supported‌CRS

Supported‌CRS

Reference to one coordinate reference system (CRS)

URI type

One (mandatory)

wellKnown‌ScaleSet

WellKnown‌ScaleSet

Reference to a well-known scale sete

URI type

Zero or one (optional) c

tileMatrix

TileMatrix

Describes a scale level and its tile matrix

TileMatrix data structure, see Table Table 2

One or more (mandatory) d

a     The multilingual scoping rules in subclause 10.7.3 of OWS Common [OGC 06-121r9] SHALL apply.

b     Informative. boundingBox SHOULD NOT be used to calculate the position of the tiles in the CRS space; please use topLeftCorner of the corresponding TileMatrix instead. If data is not available for all tiled space, TileMatrixSetLimits will declare what the tiles have data (see section 7.2).

c     When a tile matrix set conforms to a well-known scale set it can reference it by its URI. If used, the well-known scale set SHALL be consistent with the supportedCRS and with the scaleDenominators of the tileMatrix parameters.

d     Commonly more than one. Each tileMatrix of a tileMatrixSet SHALL have a unique (different) scaleDenominator.

e     Some possible values are defined the in Annex C.

f     If no Title is specified, a client may display the Identifier value instead.

g     TileMatrixSet identifies SHALL be unique (different) for each TileMatrixSet of a server.

 

Table : Parts of TileMatrix data structure
Names Definition Data type and values Multiplicity and use

identifier

Identifier

Tile matrix identifier c

ows:CodeType, as adaptation of MD_Identifier class ISO 19115

One (mandatory)

title a

Title

Title of this style, normally used for display to a human

LanguageString data structure, see Figure 15 in OWS Common [OGC 06-121r9]

Zero or more (optional) Include when available and useful

Include one for each language represented d

abstract  a

Abstract

Brief narrative description of this style, normally available for display to a human

LanguageString data structure, see Figure 15 in OWS Common [OGC 06-121r9]

Zero or more (optional) Include when available and useful

Include one for each language represented

keywordsc

Keywords

Unordered list of one or more commonly used or formalized word(s) or phrase(s) used to describe this dataset

MD_Keywords class in ISO 19115

Zero or more (optional)

One for each keyword authority used

scale‌Denominator

Scale‌Denominator

Scale denominator level of this tile matrix g

Double type

One (mandatory)

topLeft‌Corner

TopLeft‌Corner

Position in CRS coordinates of the top-left corner of this tile matrix

Ordered sequence of double values b

One (mandatory)

tileWidth

TileWidth

Width of each tile of this tile matrix in pixels

Positive integer type

One (mandatory)

tileHeight

TileHeight

Height of each tile of this tile matrix in pixels

Positive integer type

One (mandatory)

matrix‌Width

Matrix‌Width

Width of the matrix (number of tiles in width)

Positive integer type

One (mandatory)

matrix‌Height

Matrix‌Height

Height of the matrix (number of tiles in height)

Positive integer type

One (mandatory)

a    The multilingual scoping rules in subclause 10.7.3 of OWS Common [OGC 06-121r9] SHALL apply.

b    CRS will be inherited from the supportedCRS parameter of the parent TileMatrixSet. The order of these axes shall be as specified by the supportedCRS. These are the precise coordinates of the top left corner of top left pixel of the 0,0 tile. See Figure 1.

c    This TileMatrix identifiers SHALL be unique (different) within the context of the parent TileMatrixSet. Many applications use a correlative numeric value as an identifier. Other alternatives are a rounded scale denominator or a rounded pixel size. It is recommended to avoid repeating the TileMatrixSet identifier as part of the TileMatrix identifier.

d    If no Title is specified, client may display the Identifier value instead.

e    In XML schemas ows:PositionType data type is used. See OWS 2.0 schemas (owsCommon.xsd).

g    The pixel size of the tile can be obtained from the scaleDenominator by multiplying the later by 0.28 10-3 / metersPerUnit. If the CRS uses meters as units of measure for the horizontal dimensions, then metersPerUnit=1; if it has degrees, then metersPerUnit=2pa/360 (a is the Earth maximum radius of the ellipsoid).

 

NOTE 1: It may be desirable to define a tile matrix set with some general-scale tile matrices in one CRS (e.g., CRS:84) and with detailed-scale tile matrices in a different CRS (e.g., LCC projection). However, this standard does not allow mixing CRSs. Each tile matrix set declares a single CRS.

NOTE 2: The width (matrixWidth) and height (matrixHeith) in tiles of each tile matrix is explicitly given, so the range of relevant tile indexes does not have to be calculated by the client application.

NOTE 3: The bounding box of a tile matrix is not supplied explicitly because it can be calculated from topLeftCorner, tileWidth, tileHeight and scaleDenominator.

7.2    TileMatrixSetLimits2D requirements class

Requirements class tilematrixsetlimits2D establishes how to describe a TileMatrixSetLimits for a two-dimensional tile space. It is expected that tile matrix sets are defined in a general way (globally, if possible). Data structured in tiles could only be available in a region of in a subset of scales. This data structure allows for the declaration of a limited coverage of a tile matrix set. The identifying URI for this class is http://www.opengis.net/spec/tilematrixset/1.0/req/tilematrixsetlimits2d.

Req 2        req/tilematrixsetlimits2d/model:
A tile matrix set limits 2D shall be defined following the UML model as shown in Figure 7 and model description in Table 3 and Table 4.
Dependency: http://www.opengis.net/spec/owscommon/2.0/req

TileMatrixSetLimits UML model
Figure : TileMatrixSetLimits UML model

 

Table : Parts of TileMatrixSetLimits data structure
Names Definition Data type and values Multiplicity and use

tileMatrix‌Limits

Tile‌Matrix‌Limits

Indices limits for this tileMatrix

TileMatrixLimits data structure, see Table Table 4

one or more (mandatory) a

a       Multiplicity SHALL be the equal of inferior to multiplicity of tileMatrix of this tileMatrixSet. Each tileMatrix identifier shall be mentioned only once in this TileMatrixSetLimits. If a tileMatrix identifier is not mentioned, it should be interpreted as a tileMatrix that is not available.

 

Table : Parts of TileMatrixLimits data structure

Names

Definition

Data type and values

Multiplicity and use

tileMatrix

TileMatrix

Reference to a tileMatrix identifier

ows:CodeType, as adaptation of MD_Identifier class ISO 19115 a

One (mandatory)

minTile‌Row

MinTile‌Row

Minimum tile row index valid for this layer.

Non negative integer type b

One (mandatory)

maxTile‌Row

MaxTile‌Row

Maximim tile row index valid for this layer.

Non negative integer type c

One (mandatory)

minTile‌Col

MinTile‌Col

Minimum tile column index valid for this layer.

Non negative integer type d

One (mandatory)

maxTile‌Col

MaxTile‌Col

Maximim tile column index valid for this layer.

Non negative integer type e

One (mandatory)

a    SHALL be an identifier to a tileMatrix section of this tileMatrixSet.

b    From 0 to maxTileRow.

c    From minTileRow to matrixWidth-1 of the tileMatrix section of this tileMatrixSet.

d    From 0 to maxTileCol.

e    From minTileCol to tileHeight-1 of the tileMatrix section of this tileMatrixSet.

 

7.3    TileMatrixSetLink2D requirements class

Requirements class tilematrixsetlink2D establishes how to describe a TileMatrixSetLink for a two-dimensional tile space. This data structure allows for a dataset declaring the use of a tile matrix set defined elsewhere and, if needed, a limited coverage for this tile matrix set. Each tiled dataset in a dataset collection should declare the use of a tile matrix set using this data structure. The identifying URI for this class is http://www.opengis.net/spec/tilematrixset/1.0/req/tilematrixsetlink2d.

Req 3        req/tilematrixsetlink2d/identifier:
A tiled resource or dataset shall declare support to a tile matrix set 2D by link to a tile matrix set definition by citing a tile matrix set identifier defined in the same document instance or an active (resolvable) link to a TileMatrixSet definition in an external document.

NOTE: To determine if two resources or datasets use the same TileMatrixSet, compare their TileMatrixSet identifier. Alternatively, compare TileMatrixSet definitions for an equivalency (a simple calculation can be performed to verify whether or not two given tile matrices are aligned).

 

Req 4        req/tilematrixsetlink2d/model:
When a tiled resource or dataset has tiles available only for a region or regions of the complete tiled space, the resourceor datasetshall declare partial support to a tile matrix set 2D using one or moretile matrix set limits data structures. This will result in the following  UML model shown in Figure 7 and model description in Table 5.
Dependency: req/tilematrixsetlimits

Linking to the TileMatrixSet URIs defined in the Annex D in an OGC schema repository or in an OGC registry are valid options for TileMatrixSet URIs. If the same TileMatrixSet is externally available in more than one format, it is recommended that the format selected is more close to the original document format.

 

TileMatrixSetLink UML model
Figure : TileMatrixSetLink UML model

 

Table : Parts of TileMatrixSetLink data structure
Names Definition Data type and values Multiplicity and use

tileMatrix‌Set

Tile‌Matrix‌Set

Reference to a tileMatrixSet

URI type

Values SHALL be a tileMatrixSet identifier in service metadata document

One (mandatory)

tileMatrix‌Set‌Limits

Tile‌Matrix‌Set‌Limits

Index limits for this tileMatrixSet

TileMatrixSetLimits data structure, see Table 4

Zero or more (optional) Should be include when the boundary of the data is a fragment of the boundary of the tileMatrixSet a,b

a       The absence of this parameter means that tile row and tile column indices are only limited by 0 and the corresponding matrixWidth and matrixHeight for each tileMatrix of the tileMatrixSet definition.

b      Multiplicity more than one allows definition of more than one rectangular areas where there are tiles with data available.

 

7.4    VariableMatrixWidth requirements class

This extension provides the necessary support for variable matrix width tile matrix sets.

Req 5        req/variablematrixwidth/model:
When a tiled resource or dataset has variable width tiles, the resourceor datasetshall define the variable matrix width in a tile matrix set 2D using a variablematrixwidth data structure. This will result in the following UML model shown in Figure 9 and model description in Table 6.

VariableMatrixWidth UML model
Figure : VariableMatrixWidth UML model

In order to make the description of the model more compact, only the tile rows that have coalesced (i.e., coalescence factor larger than 1) will be encoded.

Table : Parts of VariableMatrixWidth data structure
Names Definition Data type and values Multiplicity and use

coalesce

Coalesce

Coalescence factor

Positive integer type a

One (mandatory)

minTile‌Row

MinTile‌Row

Minimum tile row index valid for this layer

Non negative integer type b

One (mandatory)

maxTile‌Row

MaxTile‌Row

Maximum tile row index valid for this layer

Non negative integer type c

One (mandatory)

a    Shall be more than 1. Rows with Coalescence factor of 1 shall not be described here.

b    From 0 to maxTileRow.

c    From minTileRow to matrixWidth-1 of the tileMatrix section of this tileMatrixSet.

 

Req 6        req/variablematrixwidth/coalescence1:
Only the tile rows will with coalesces factor different of one shall be encoded. It a tile row is not mentioned in the variablematrixwidth description a coalesce factor of 1 shall be considered for that row.

8.    XML encoding

8.1    XMLTileMatrixSet2D requirements class

The identifying URI for this class is http://www.opengis.net/spec/tilematrixset/1.0/req/xml-tilematrixset2d.

Req 7        req/xml-tilematrixset2d/model:
A TileMatrixSet2D encoded in XML shall implement the class TileMatrixSet2D
Dependency: req/tilematrixset2d.

Req 8        req/xml-tilematrixset2d/schema:
A TileMatrixSet2D encoded in XML shall validate using the XML schema for a tile matrix set 2D.

Req 9        req/json-tilematrixset2d/media-type:
A TileMatrixSet2D encoded in an independent JSON document shall use the media type application/json.

NOTE: A TileMatrixSet2D description can be embedded in other file formats, such as a Service Metadata document of a WMTS service. In this case, the media type of the containing document prevails.

Annex E provides XML examples for common TileMatrixSet2D.

8.2    XMLTileMatrixSetLimits2D requirements class

The identifying URI for this class is http://www.opengis.net/spec/tilematrixset/1.0/req/xml-tilematrixsetlimits2d.

Req 10     req/xml-tilematrixsetlimits2d/model:
A TileMatrixSetLimits2d encoded in XML shall implement the class TileMatrixSetLimits2D
Dependency: req/tilematrixsetlimits2d.

Req 11     req/ xml-tilematrixsetlimits2d/schema:
A TileMatrixSetLimits2D encoded in XML shall validate using the XML schemas for a tile matrix set limits 2D.

NOTE: A TileMatrixSetLimits2D description is normally used as embedded in other XML documents. That is the reason an associated media type is not provided.

Annex F provides XML examples for common TileMatrixSetLimits2D.

8.3    XML TileMatrixSetLink2D

The identifying URI for this class is http://www.opengis.net/spec/tilematrixset/1.0/req/xml-tilematrixsetlink2d.

Req 12     req/xml-tilematrixsetlimits2d/model:
A TileMatrixSetLink2D encoded in XML shall implement the class TileMatrixSetLink2D
Dependency: req/tilematrixsetlink2d
Dependency: req/xml-tilematrixsetlimits2d.

Req 13     req/xml-tilematrixsetlink2d/schema:
A TileMatrixSetLink2D encoded in XML shall validate using the XML schema for a tile matrix set link 2D.

NOTE: A TileMatrixSetLink2D description is normally used as embedded in other XML documents. That is the reason an associated media type is not provided.

Annex F provides XML examples for common TileMatrixSetLink2D.

8.4    XML VariableMatrixWitdh

The identifying URI for this class is http://www.opengis.net/spec/tilematrixset/1.0/req/xml-variablematrixwidth.

Req 14     req/xml-variablematrixwidth/model:
A VariableMatrixWidth encoded in XML shall implement the class VariableMatrixWidth
Dependency: req/variablematrixwidth
Dependency: req/xml-tilematrixset2d.

Req 15     req/xml-tilematrixsetlink2d/schema:
A VariableMatrixWidth encoded in XML shall validate using the XML schema for a variable matris width.

Annex H provides JSON examples for common VariableMatrixWidth

9.    JSON encoding

9.1    JSONTileMatrixSet2D

 

The identifying URI for this class is http://www.opengis.net/spec/tilematrixset/1.0/req/json-tilematrixset2d.

Req 16     req/json-tilematrixset2d/model:
A TileMatrixSet2D encoded in JSON shall implement the class TileMatrixSet2D
Dependency: req/tilematrixset2d.

Req 17     req/json-tilematrixset2d/ietf:
A TileMatrixSet2D encoded in JSON shall conform to IETF RFC7159

Req 18     req/json-tilematrixset2d/schema:
A TileMatrixSet2D encoded in JSON shall validate using the JSON schema for a tile matrix set 2D.

Req 19     req/json-tilematrixset2d/media-type:
A TileMatrixSet2D encoded in an independent JSON document shall use the media type application/json.

NOTE: A TileMatrixSet2D description can be embedded in other file formats, such as a Service Metadata document of a WMTS service. In this case, the media type of the containing document prevails.

Annex E provides JSON examples for common TileMatrixSet2D.

9.2    JSON encoding of a TileMatrixSetLimits

The identifying URI for this class is http://www.opengis.net/spec/tilematrixset/1.0/req/json-tilematrixsetlimits2d.

Req 20     req/json-tilematrixsetlimits2d/model:
A TileMatrixSetLimits2D encoded in JSON shall implement the class TileMatrixSetLimits2D
Dependency: req/tilematrixsetlimits2d.

Req 21     req/json-tilematrixsetlimits2d/ietf:
A TileMatrixSetLimits2D encoded in JSON shall conform to IETF RFC7159

Req 22     req/json-tilematrixsetlimits2d/schema:
A TileMatrixSetLimits2D encoded in JSON shall validate using the JSON schema for a tile matrix set limits 2D.

NOTE: A TileMatrixSetLimits2D description can be embedded in other file formats, such as a Service Metadata document of a WMTS service. In this case, the media type of the containing document prevails.

Annex F provides JSON examples for common TileMatrixSet2DLimits.

9.3    JSON encoding of a TileMatrixSetLink

The identifying URI for this class is http://www.opengis.net/spec/tilematrixset/1.0/req/json-tilematrixsetlink2d.

Req 23     req/json-tilematrixsetlink2d/model:
A TileMatrixSetLimits2D encoded in JSON shall implement the class TileMatrixSetLink2D
Dependency: req/tilematrixsetlink2d
Dependency: req/json-tilematrixsetlimits2d.

Req 24     req/json-tilematrixsetlink2d/ietf:
A TileMatrixSetLink2D encoded in JSON shall conform to IETF RFC7159

Req 25     req/json-tilematrixsetlink2d/schema:
A TileMatrixSetLink2D encoded in JSON shall validate using the JSON schema for a tile matrix set link 2D.

NOTE: A TileMatrixSetLink2D description can be embedded in other file formats, such as a Service Metadata document of a WMTS service. In this case, the media type of the containing document prevails.

Annex F provides JSON examples for common TileMatrixSet2DLink.

9.4    JSON VariableMatrixWitdh

The identifying URI for this class is http://www.opengis.net/spec/tilematrixset/1.0/req/json-variablematrixwidth.

Req 26     req/json-variablematrixwidth/model:
A VariableMatrixWidth encoded in JSON shall implement the class VariableMatrixWidth
Dependency: req/variablematrixwidth
Dependency: req/json-tilematrixset2d.

Req 27     req/json-variablematrixwidth/ietf:
A VariableMatrixWidth encoded in JSON shall conform to IETF RFC7159

Req 28     req/json-variablematrixwidth/schema:
A VariableMatrixWidth encoded in JSON shall validate using the JSON schema for a variable matrix width.

Annex H provides JSON examples for common VariableMatrixWidth.

10.    JSON-LD encoding

This section establishes how to connect the JSON encoding to linked data by providing a mapping between the JSON encoding and the RDF triples model using JSON-LD. In practice, this means that a JSON file with some additional content defined in the JSON-LD syntax (http://www.w3.org/TR/json-ld) can be converted into RDF notation automatically using the JSON-LD API (http://www.w3.org/TR/json-ld-api). One implementation of this API is provided in the JSON-LD Playground (http://json-ld.org/playground/).

10.1    JSON-LDTileMatrixSet2D

 

The identifying URI for this class is http://www.opengis.net/spec/tilematrixset/1.0/req/jsonld-tilematrixset2d.

Req 29     req/jsonld-tilematrixset2d/model:
A TileMatrixSet2D encoded in JSON-LD shall implement the class TileMatrixSet2D
Dependency: req/tilematrixset2d.

Req 30     req/jsonld-tilematrixset2d/w3c:
A TileMatrixSet2D encoded in JSON-LD shall conform to W3C JSON-LD syntax version 1.

Req 31     req/jsonld-tilematrixset2d/context:
A TileMatrixSet2D encoded in JSON-LD shall include references to the JSON-LD @context for a tile matrix set 2D.

Req 32     req/jsonld-tilematrixset2d/media-type:
A TileMatrixSet2D encoded in an independent JSON-LD document shall use the media type application/jsonld.

NOTE: A TileMatrixSet2D description can be embedded in other file formats, such as a Service Metadata document of a WMTS service. In this case, the media type of the containing document prevails.

Annex G provides JSON-LD examples for common TileMatrixSet2D

10.2    JSON-LD encoding of a TileMatrixSetLimits

The identifying URI for this class is http://www.opengis.net/spec/tilematrixset/1.0/req/jsonld-tilematrixsetlimits2d.

Req 33     req/jsonld-tilematrixsetlimits2d/model:
A TileMatrixSetLimits2D encoded in JSON-LD shall implement the class TileMatrixSetLimits2D
Dependency: req/tilematrixsetlimits2d.

Req 34     req/jsonld-tilematrixsetlimits2d/w3c:
A TileMatrixSetLimits2D encoded in JSON-LD shall conform to W3C JSON-LD syntax version 1.

Req 35     req/jsonld-tilematrixsetlimits2d/context:
A TileMatrixSetLimits2D encoded in JSON-LD shall include references to the @conted for a tile matrix set limits 2D.

NOTE: A TileMatrixSetLimits2D description can be embedded in other file formats, such as a Service Metadata document of a WMTS service. In this case, the media type of the containing document prevails.

10.3    JSON-LD encoding of a TileMatrixSetLink

The identifying URI for this class is http://www.opengis.net/spec/tilematrixset/1.0/req/jsonld-tilematrixsetlink2d.

Req 36     req/jsonld-tilematrixsetlink2d/model:
A TileMatrixSetLimits2D encoded in JSON-LD shall implement the class TileMatrixSetLink2D
Dependency: req/tilematrixsetlink2d
Dependency: req/json-tilematrixsetlimits2d.

Req 37     req/jsonld-tilematrixsetlink2d/w3c:
A TileMatrixSetLink2D encoded in JSON-LD shall conform to W3C JSON-LD syntax version 1.

Req 38     req/jsonld-tilematrixsetlink2d/context:
A TileMatrixSetLink2D encoded in JSON-LD shall include references to the @context for a tile matrix set link 2D.

NOTE: A TileMatrixSetLink2D description can be embedded in other file formats, such as a Service Metadata document of a WMTS service. In this case, the media type of the containing document prevails.

10.4    JSON-LD encoding of a VariableMatrixWidth

The identifying URI for this class is http://www.opengis.net/spec/tilematrixset/1.0/req/jsonld-variablematrixwidth.

Req 39     req/jsonld-variablematrixwidth/model:
A VariableMatrixWidth encoded in JSON-LD shall implement the class VariableMatrixWidth
Dependency: req/tilematrixsetlink2d
Dependency: req/json-tilematrixsetlimits2d.

Req 40     req/jsonld-variablematrixwidth/w3c:
A VariableMatrixWidth encoded in JSON-LD shall conform to W3C JSON-LD syntax version 1.

Req 41     req/jsonld-variablematrixwidth/context:
A VariableMatrixWidth encoded in JSON-LD shall include references to the @context for a variable matrix width.


 

Annex A: Conformance Class Abstract Test Suite (Normative)

A TileMatrixSet implementation of this standard must satisfy the following system characteristics to be conformant with this specification.

A.1 Conformance class: TileMatrixSet2D

The OGC URI identifier of this conformance class is:

http://www.opengis.net/spec/tilematrixset/1.0/conf/tilematrixset2d

Tests identifiers below are relative to http://www.opengis.net/spec/tilematrixset/1.0

A.1.1      Model

Test id:

conf/tilematrixset2d/model

Test Purpose:

Req 1 req/tilematrixset2d/model:
A tile matrix set 2D shall be defined following the UML model as shown in Figure 1 and the model description in Table 1 and Table 2.
Dependency: http://www.opengis.net/spec/owscommon/2.0/req

Test method:

Validate the requirements of the model

Test passes if TileMatrixSet2D instances point to the TileMatrixSet2D data type definition and follow the data model specified in Table 1 and Table 2 and its dependencies.

 

A.2      Conformance class: TileMatrixSetLimits2D

The OGC URI identifier of this conformance class is:

http://www.opengis.net/spec/tilematrixset/1.0/conf/tilematrixsetlimits2d

A.2.1      Model

Test id:

tilematrixsetlimits2d/model

Test Purpose:

Req 2 req/tilematrixsetlimits2d/model:
A tile matrix set limits 2D shall be defined following the UML model as shown in Figure 7 and model description in Table 3 and Table 4.
Dependency: http://www.opengis.net/spec/owscommon/2.0/req

Test method:

Validate the requirements of the model

Test passes if TileMatrixSetLimits2D instances point to the TileMatrixSetLimits2D data type definition and follow the data model specified in Table 3 and Table 4 and its dependencies.

A.3      Conformance class: TileMatrixSetLink2D

The OGC URI identifier of this conformance class is:

http://www.opengis.net/spec/tilematrixset/1.0/conf/tilematrixsetlink2d

A.3.1      Model

Test id:

tilematrixsetlink2d/identifier

Test Purpose:

Req 3 req/tilematrixsetlink2d/identifier:
A tiled resource or dataset shall declare support to a tile matrix set 2D by link to a tile matrix set definition by citing a tile matrix set identifier defined in the same document instance or an active (resolvable) link to a TileMatrixSet definition in an external document.

Test method:

Validate the requirements of the model

Test passes if all TileMatrixSetLink2D elements in the instance cite a tile matrix set by mentioning at least one TileMatrixSet identifier or by using a URI that can be resolved into a TileMatrixSet2D.

A.3.2      Identifier

Test id:

tilematrixsetlink2d/model

Test Purpose:

Req 4 req/tilematrixsetlink2d/model:
When a tiled resource or dataset has tiles available only for a region or regions of the complete tiled space, the resource or dataset shall declare partial support to a tile matrix set 2D using one or more tile matrix set limits data structures. This will result in the following  UML model shown in Figure 7 and model description in Table 5.
Dependency: req/tilematrixsetlimits

Test method:

Validate the requirements of the model

Test passes if TileMatrixSetLink2D instances point to the TileMatrixSetLink2D data type definition and follow the data model specified in Table 5 and its dependencies.

A.4      Conformance class: VariableMatrixWidth

The OGC URI identifier of this conformance class is:

http://www.opengis.net/spec/tilematrixset/1.0/conf/variablematrixwidth

A.4.1      Model

Test id:

variablematrixwidth/model

Test Purpose:

Req 5 req/variablematrixwidth/model:
When a tiled resource or dataset has variable width tiles, the resource or dataset shall define the variable matrix width in a tile matrix set 2D using a variablematrixwidth data structure. This will result in the following UML model shown in Figure 9 and model description in Table 6.

Test method:

Validate the requirements of the model

Test passes if VariableMatrixWidth instances point to the VariableMatrixWidth data type definition and follow the data model specified in Table 6 and its dependencies.

A.4.2      Identifier

Test id:

variablematrixwidth/coalescence1

Test Purpose:

Req 6 req/variablematrixwidth/coalescence1:
Only the tile rows will with coalesces factor different of one shall be encoded. It a tile row is not mentioned in the variablematrixwidth description a coalesce factor of 1 shall be considered for that row.

Test method:

Validate the requirements of the model

Test passes if all VariableMatrixWidth elements in the instance has a coalescence factor bigger than 1.

A.5      Conformance class: XML Encoding for TileMatrixSet2D

The OGC URI identifier of this conformance class is:

http://www.opengis.net/spec/tilematrixset/1.0/conf/xml-tilematrixset2d

A.5.1      Model

Test id:

xml-tilematrixset2d/model

Test Purpose:

Req 7 req/xml-tilematrixset2d/model:
A TileMatrixSet2D encoded in XML shall implement the class TileMatrixSet2D
Dependency: req/tilematrixset2d.

Test method:

Validate the requirements of the model

Test passes if TileMatrixSet2D instances use a TileMatrixSet2D XML data type definition that follows the data model specified in Table 1 and Table 2 and its dependencies.

A.5.2      Schema

Test id:

xml-tilematrixset2d/schema

Test Purpose:

Req 8 req/xml-tilematrixset2d/schema:
A TileMatrixSet2D encoded in XML shall validate using the XML schema for a tile matrix set 2D.

Test method:

Validate the requirements of the model

Test passes if TileMatrixSet2D XML instances pass validation against the tile matrix set 2D XML Schemas.

A.5.3      Media type

Test id:

xml-tilematrixset2d/media-type

Test Purpose:

Req 9 req/json-tilematrixset2d/media-type:
A TileMatrixSet2D encoded in an independent JSON document shall use the media type application/json.

Test method:

Validate the requirements of the media type

Test passes if the independent instances of TileMatrixSet2D are exposed as application/xml MIME type.

A.6      Conformance class: XML Encoding for TileMatrixSetLimits2D

The OGC URI identifier of this conformance class is:

http://www.opengis.net/spec/tilematrixset/1.0/conf/xml-tilematrixsetlimits2d

A.6.1      Model

Test id:

xml-tilematrixsetlimits2d/model

Test Purpose:

Req 10 req/xml-tilematrixsetlimits2d/model:
A TileMatrixSetLimits2d encoded in XML shall implement the class TileMatrixSetLimits2D
Dependency: req/tilematrixsetlimits2d.

Test method:

Validate the requirements of the model

Test passes if TileMatrixSetLimits2D instances point to the TileMatrixSetLimits2D data type definition and follow the data model specified in Table 3 and Table 4 and its dependencies.

A.6.2      Schema

Test id:

xml-tilematrixsetlimits2d/schema

Test Purpose:

Req 11 req/ xml-tilematrixsetlimits2d/schema:
A TileMatrixSetLimits2D encoded in XML shall validate using the XML schemas for a tile matrix set limits 2D.

Test method:

Validate the requirements of the schema

Test passes if TileMatrixSetLimits2D XML instances pass validation against the tile matrix set limits 2D XML Schemas.

 

A.7      Conformance class: XML Encoding for TileMatrixSetLink2D

The OGC URI identifier of this conformance class is:

http://www.opengis.net/spec/tilematrixset/1.0/conf/xml-tilematrixsetlink2d

A.7.1      Model

Test id:

xml-tilematrixsetlink2d/model

Test Purpose:

Req 12 req/xml-tilematrixsetlimits2d/model:
A TileMatrixSetLink2D encoded in XML shall implement the class TileMatrixSetLink2D
Dependency: req/tilematrixsetlink2d
Dependency: req/xml-tilematrixsetlimits2d.

Test method:

Validate the requirements of the model

Test passes if TileMatrixSetLink2D instances use a TileMatrixSetLink2D XML data type definition that follows the data model specified in Table 5 and its dependencies.

A.7.2      Schema

Test id:

xml-tilematrixsetlink2d/schema

Test Purpose:

Req 13 req/xml-tilematrixsetlink2d/schema:
A TileMatrixSetLink2D encoded in XML shall validate using the XML schema for a tile matrix set link 2D.

Test method:

Validate the requirements of the model

Test passes if TileMatrixSetLink2D XML instances pass validation against the tile matrix set link 2D XML Schemas.

A.8      Conformance class: XML Encoding for VariableMatrixWidth

The OGC URI identifier of this conformance class is:

http://www.opengis.net/spec/tilematrixset/1.0/conf/xml-variablematrixwidth

A.8.1      Model

Test id:

xml-variablematrixwidth/model

Test Purpose:

Req 12 req/xml-tilematrixsetlimits2d/model:
A TileMatrixSetLink2D encoded in XML shall implement the class TileMatrixSetLink2D
Dependency: req/tilematrixsetlink2d
Dependency: req/xml-tilematrixsetlimits2d.

Test method:

Validate the requirements of the model

Test passes if VariableMatrixWidth instances use a VariableMatrixWidth XML data type definition that follows the data model specified in Table 6 and its dependencies.

A.8.2      Schema

Test id:

xml-variablematrixwidth/schema

Test Purpose:

Req 13 req/xml-tilematrixsetlink2d/schema:
A TileMatrixSetLink2D encoded in XML shall validate using the XML schema for a tile matrix set link 2D.

Test method:

Validate the requirements of the model

Test passes if VariableMatrixWidth XML instances pass validation against the variable matrix width XML Schemas.

A.9      Conformance class: JSON Encoding for TileMatrixSet2D

The OGC URI identifier of this conformance class is:

http://www.opengis.net/spec/tilematrixset/1.0/conf/json-tilematrixset2d

A.9.1      Model

Test id:

json-tilematrixset2d/model

Test Purpose:

Req 16 req/xml-tilematrixset2d/model:
A TileMatrixSet2D encoded in XML shall implement the class TileMatrixSet2D
Dependency: req/tilematrixset2d.

Test method:

Validate the requirements of the model

Test passes if TileMatrixSet2D instances follow the data model specified in Table 1 and Table 2 and its dependencies.

A.9.2      IETF

Test id:

json-tilematrixset2d/ietf

Test Purpose:

Req 17 req/json-tilematrixset2d/ietf:
A TileMatrixSet2D encoded in JSON shall conform to IETF RFC7159

Test method:

Validate the requirements of the IETF

Test passes if TileMatrixSet2D JSON instances pass format validation against the IETF rules.

A.9.3      Schema

Test id:

json-tilematrixset2d/schema

Test Purpose:

Req 18 req/json-tilematrixset2d/schema:
A TileMatrixSet2D encoded in JSON shall validate using the JSON schema for a tile matrix set 2D.

Test method:

Validate the requirements of the model

Test passes if TileMatrixSet2D JSON instances pass validation against the tile matrix set 2D JSON Schemas.

A.9.4      Media type

Test id:

json-tilematrixset2d/media-type

Test Purpose:

Req 19 req/json-tilematrixset2d/media-type:
A TileMatrixSet2D encoded in an independent JSON document shall use the media type application/json.

Test method:

Validate the requirements of the media type

Test passes if the independent instances of TileMatrixSet2D are exposed as application/json media type.

A.10   Conformance class: JSON Encoding for TileMatrixSetLimits2D

The OGC URI identifier of this conformance class is:

http://www.opengis.net/spec/tilematrixset/1.0/conf/json-tilematrixsetlimits2d

A.10.1   Model

Test id:

json-tilematrixsetlimits2d/model

Test Purpose:

Req 20 req/json-tilematrixsetlimits2d/model:
A TileMatrixSetLimits2D encoded in JSON shall implement the class TileMatrixSetLimits2D
Dependency: req/tilematrixsetlimits2d.

Test method:

Validate the requirements of the model

Test passes if TileMatrixSetLimits2D instances follow the data model specified in Table 3 and Table 4 and its dependencies.

A.10.2   IETF

Test id:

json-tilematrixsetlimits2d/ietf

Test Purpose:

Req 21 req/json-tilematrixsetlimits2d/ietf:
A TileMatrixSetLimits2D encoded in JSON shall conform to IETF RFC7159

Test method:

Validate the requirements of the IETF

Test passes if TileMatrixSetLimits2D JSON instances pass format validation against the IETF rules.

A.10.3   Schema

Test id:

json-tilematrixsetlimits2d/schema

Test Purpose:

Req 22 req/json-tilematrixsetlimits2d/schema:
A TileMatrixSetLimits2D encoded in JSON shall validate using the JSON schema for a tile matrix set limits 2D.

Test method:

Validate the requirements of the schema

Test passes if TileMatrixSetLimits2D JSON instances pass validation against the tile matrix set limits 2D JSON Schemas.

A.11   Conformance class: JSON Encoding for TileMatrixSetLink2D

The OGC URI identifier of this conformance class is:

http://www.opengis.net/spec/tilematrixset/1.0/conf/json-tilematrixsetlink2d

A.11.1   Model

Test id:

json-tilematrixsetlink2d/model

Test Purpose:

Req 23 req/json-tilematrixsetlink2d/model:
A TileMatrixSetLimits2D encoded in JSON shall implement the class TileMatrixSetLink2D
Dependency: req/tilematrixsetlink2d
Dependency: req/json-tilematrixsetlimits2d.

Test method:

Validate the requirements of the model

Test passes if TileMatrixSetLink2D instances follow the data model specified in Table 5 and its dependencies.

A.11.2   IETF

Test id:

json-tilematrixsetlink2d/ietf

Test Purpose:

Req 24 req/json-tilematrixsetlink2d/ietf:
A TileMatrixSetLink2D encoded in JSON shall conform to IETF RFC7159

Test method:

Validate the requirements of the IETF rules

Test passes if TileMatrixSetLink2D JSON instances pass format validation against the IETF rules.

A.11.3   Schema

Test id:

json-tilematrixsetlink2d/schema

Test Purpose:

Req 25 req/json-tilematrixsetlink2d/schema:
A TileMatrixSetLink2D encoded in JSON shall validate using the JSON schema for a tile matrix set link 2D.

Test method:

Validate the requirements of the schema

Test passes if TileMatrixSetLink2D JSON instances pass validation against the tile matrix set link 2D JSON Schemas.

A.12   Conformance class: JSON Encoding for VariableMatrixWidth

The OGC URI identifier of this conformance class is:

http://www.opengis.net/spec/tilematrixset/1.0/conf/json-variablematrixwidth

A.12.1   Model

Test id:

json-variablematrixwidth/model

Test Purpose:

Req 26 req/json-variablematrixwidth/model:
A VariableMatrixWidth encoded in JSON shall implement the class VariableMatrixWidth
Dependency: req/variablematrixwidth
Dependency: req/json-tilematrixset2d.

Test method:

Validate the requirements of the model

Test passes if VariableMatrixWidth instances follow the data model specified in Table 6 and its dependencies.

A.12.2   IETF

Test id:

json-variablematrixwidth/ietf

Test Purpose:

Req 27 req/json-variablematrixwidth/ietf:
A VariableMatrixWidth encoded in JSON shall conform to IETF RFC7159

Test method:

Validate the requirements of the IETF rules

Test passes if VariableMatrixWidth JSON instances pass format validation against the IETF rules.

A.12.3   Schema

Test id:

json-variablematrixwidth/schema

Test Purpose:

Req 28 req/json-variablematrixwidth/schema:
A VariableMatrixWidth encoded in JSON shall validate using the JSON schema for a variable matrix width.

Test method:

Validate the requirements of the schema

Test passes if VariableMatrixWidth JSON instances pass validation against the variable matrix width JSON Schemas.

A.13   Conformance class: JSON-LD Encoding for TileMatrixSet2D

The OGC URI identifier of this conformance class is:

http://www.opengis.net/spec/tilematrixset/1.0/conf/jsonld-tilematrixset2d

A.13.1   Model

Test id:

jsonld-tilematrixset2d/model

Test Purpose:

Req 29 req/jsonld-tilematrixset2d/model:
A TileMatrixSet2D encoded in JSON-LD shall implement the class TileMatrixSet2D
Dependency: req/tilematrixset2d.

Test method:

Validate the requirements of the model

Test passes if TileMatrixSet2D JSON-LD encoded instances follow the data model specified in Table 1 and Table 2 and its dependencies.

A.13.2   W3C

Test id:

jsonld-tilematrixset2d/w3c

Test Purpose:

Req 30 req/jsonld-tilematrixset2d/w3c:
A TileMatrixSet2D encoded in JSON-LD shall conform to W3C JSON-LD syntax version 1.

Test method:

Validate the requirements of the W3C

Test passes if TileMatrixSet2D JSON-LD instances pass format validation against the W3C rules.

A.13.3   Context

Test id:

jsonld-tilematrixset2d/context

Test Purpose:

Req 31 req/jsonld-tilematrixset2d/context:
A TileMatrixSet2D encoded in JSON-LD shall include references to the JSON-LD @context for a tile matrix set 2D.

Test method:

Validate the requirements of the @context

Test passes if the relevant references to @context documents for tile matrix set 2D are included.

A.13.4   Media type

Test id:

jsonld-tilematrixset2d/media-type

Test Purpose:

Req 32 req/jsonld-tilematrixset2d/media-type:
A TileMatrixSet2D encoded in an independent JSON-LD document shall use the media type application/jsonld.

Test method:

Validate the requirements of the media type

Test passes if the independent instances of TileMatrixSet2D are exposed as application/jsonld media type.

A.14   Conformance class: JSON-LD Encoding for TileMatrixSetLimits2D

The OGC URI identifier of this conformance class is:

http://www.opengis.net/spec/tilematrixset/1.0/conf/jsonld-tilematrixsetlimits2d

A.14.1   Model

Test id:

jsonld-tilematrixsetlimits2d/model

Test Purpose:

Req 33 req/jsonld-tilematrixsetlimits2d/model:
A TileMatrixSetLimits2D encoded in JSON-LD shall implement the class TileMatrixSetLimits2D
Dependency: req/tilematrixsetlimits2d.

Test method:

Validate the requirements of the model

Test passes if TileMatrixSetLimits2D JSON-LD instances follow the data model specified in Table 3 and Table 4 and its dependencies.

A.14.2   W3C

Test id:

jsonld-tilematrixsetlimits2d/w3c

Test Purpose:

Req 34 req/jsonld-tilematrixsetlimits2d/w3c:
A TileMatrixSetLimits2D encoded in JSON-LD shall conform to W3C JSON-LD syntax version 1.

Test method:

Validate the requirements of the W3C

Test passes if TileMatrixSetLimits2D JSON-LD instances pass format validation against the W3C rules.

A.14.3   Context

Test id:

jsonld-tilematrixsetlimits2d/context

Test Purpose:

Req 35 req/jsonld-tilematrixsetlimits2d/context:
A TileMatrixSetLimits2D encoded in JSON-LD shall include references to the @conted for a tile matrix set limits 2D.

Test method:

Validate the requirements of the @context

Test passes if the relevant references to @context documents for tile matrix set limits 2D are included

A.15   Conformance class: JSON-LD Encoding for TileMatrixSetLink2D

The OGC URI identifier of this conformance class is:

http://www.opengis.net/spec/tilematrixset/1.0/conf/jsonld-tilematrixsetlink2d

A.15.1   Model

Test id:

jsonld-tilematrixsetlink2d/model

Test Purpose:

Req 36 req/jsonld-tilematrixsetlink2d/model:
A TileMatrixSetLimits2D encoded in JSON-LD shall implement the class TileMatrixSetLink2D
Dependency: req/tilematrixsetlink2d
Dependency: req/json-tilematrixsetlimits2d.

Test method:

Validate the requirements of the model

Test passes if TileMatrixSetLink2D JSON-LD instances follow the data model specified in Table 5 and its dependencies.

A.15.2   W3C

Test id:

jsonld-tilematrixsetlink2d/w3c

Test Purpose:

Req 37 req/jsonld-tilematrixsetlink2d/w3c:
A TileMatrixSetLink2D encoded in JSON-LD shall conform to W3C JSON-LD syntax version 1.

Test method:

Validate the requirements of the W3C rules

Test passes if TileMatrixSet2D JSON-LD instances pass format validation against the W3C rules.

A.15.3   Context

Test id:

jsonld-tilematrixsetlink2d/context

Test Purpose:

Req 38 req/jsonld-tilematrixsetlink2d/context:
A TileMatrixSetLink2D encoded in JSON-LD shall include references to the @context for a tile matrix set link 2D.

Test method:

Validate the requirements of the @context

Test passes if the relevant references to @context documents for tile matrix set links 2D are included.

A.16   Conformance class: JSON-LD Encoding for VariableMatrixWidth

The OGC URI identifier of this conformance class is:

http://www.opengis.net/spec/tilematrixset/1.0/conf/jsonld-variablematrixwidth

A.16.1   Model

Test id:

jsonld-variablematrixwidth/model

Test Purpose:

Req 39 req/jsonld-variablematrixwidth/model:
A VariableMatrixWidth encoded in JSON-LD shall implement the class VariableMatrixWidth
Dependency: req/tilematrixsetlink2d
Dependency: req/json-tilematrixsetlimits2d.

Test method:

Validate the requirements of the model

Test passes if TileMatrixSetLink2D JSON-LD instances follow the data model specified in Table 5 and its dependencies.

A.16.2   W3C

Test id:

jsonld-variablematrixwidth/w3c

Test Purpose:

Req 40 req/jsonld-variablematrixwidth/w3c:
A VariableMatrixWidth encoded in JSON-LD shall conform to W3C JSON-LD syntax version 1.

Test method:

Validate the requirements of the W3C rules

Test passes if TileMatrixSet2D JSON-LD instances pass format validation against the W3C rules.

A.16.3   Context

Test id:

jsonld-variablematrixwidth/context

Test Purpose:

Req 41 req/jsonld-variablematrixwidth/context:
A VariableMatrixWidth encoded in JSON-LD shall include references to the @context for a variable matrix width.

Test method:

Validate the requirements of the @context

Test passes if the relevant references to @context documents for variable matrix with are included.


 

Annex B: Schema Documents (Normative)

In addition to this document, this standard includes several normative Schema Documents. These Schema Documents are posted online at the URL http://schemas.opengis.net/tms/1.0.

B.1      XML Schema

The main XML Schema Document is situated in the xml subfolder and it is named:

xml/tms.xsd

It includes the schemas necessary to XML validate the class XMLTileMatrixSet2D. The xml/examples subfolder is provided with the complete set of XML instances that are also provided in the Annex E of this document. In addition, the file named:

xml/examples/LayerWithTMSLink.xsd

contains the schemas necessary to XML-validate the class XMLTileMatrixSetLimits2D and XMLTileMatrixSetLink2D. The XML example LayerWithTMSLink.xml illustrates how to use this function.

B.2      JSON Schema

The main JSON Schema Document is situated in the json subfolder and it is named:

json/tms-schema.json

It includes the schemas necessary to JSON-validate the class JSONTileMatrixSet2D. The json/examples subfolder is provided with the complete set of JSON Documents that are also provided in Annex E of this document. In addition, the file named:

json/examples/LayerWithTMSLink-schema.json

contains the schemas necessary to JSON-validate the class JSONTileMatrixSetLimits2D and JSONTileMatrixSetLink2D. The JSON example LayerWithTMSLink.json illustrates how to use this function.

B.3      JSON-LD and Turtle

The JSON-LD @context documents are situated in the rdf subfolder and it is named:

rdf/tms-context.json

rdf/tms-boundingbox-context.json

rdf/tms-tilematrix-context.json

rdf/tms-variablematrixwidth-context.json

This @context documents can be used to transform any JSON document into a RDF document using a JSON-LD engine. They support the class JSONLDTileMatrixSet2D. The json/examples subfolder provides an example of JSON documents that includes the @context documents to become a JSON-LD file. It also contains the result of its automatic transformation to RDF turtle:

rdf/examples/ WorldCRS84QuadVariableWidth.json

rdf/examples/ WorldCRS84QuadVariableWidth.n3


 

 

Annex C: Well-known scale sets (Informative)

The following well-known scale sets (WKSS) are defined in this standard. To be conformant to a WKSS, the dataset of resource should be available from the first or second largest scale denominator on the following tables and all intermediate scale denominators down to the most detailed scale resolution of that dataset. In other words, it is not required to support the largest scale denominator and the smallest scale denominators in order to be conformant to a WKSS. Cell sizes (pixel size in terrain units) are calculated assuming 0.28 mm pixel size and the WGS84 equatorial Earth diameter.

The WKSS concept was introduced in WMTS to improve interoperability, but experience has demonstrated that the use of Common TileMatrixSet2D (Annex D) is even better. The use of WKSS is no longer encouraged by this standard.

C.1      GlobalCRS84Scale (http://www.opengis.net/def/wkss/OGC/1.0/GlobalCRS84Scale)

This WKSS has been defined for global cartographic products. Rounded scales have been chosen for intuitive cartographic representation of vector data. The scale denominator is only accurate near the Equator.

Table C.7: Definition of Well-known scale set GlobalCRS84Scale
CRS Scale Denominator Pixel Size (degrees)

http://www.opengis.net/def/crs/OGC/1.3/CRS84

500 106

1.25764139776733

250 106

0.628820698883665

100 106

0.251528279553466

50 106

0.125764139776733

25 106

6.28820698883665 10-2

10 106

2.51528279553466 10-2

5 106

1.25764139776733 10-2

2.5 106

6.28820698883665 10-3

1 106

2.51528279553466 10-3

500 103

1.25764139776733 10-3

250 103

6.28820698883665 10-4

100 103

2.51528279553466 10-4

50 103

1.25764139776733 10-4

25 103

6.28820698883665 10-5

10 103

2.51528279553466 10-5

5 103

1.25764139776733 10-5

2.5 103

6.28820698883665 10-6

1 103

2.51528279553466 10-6

500

1.25764139776733 10-6

250

6.28820698883665 10-7

100

2.51528279553466 10-7

C.2      GlobalCRS84Pixel (http://www.opengis.net/def/wkss/OGC/1.0/GlobalCRS84Pixel)

This WKSS has been defined for global cartographic products. Rounded pixel sizes have been chosen for intuitive cartographic representation of raster data. Some values have been chosen to coincide with original pixel size of commonly used global products like STRM (1" and 3“), GTOPO (30”) or ETOPO (2’ and 5’). The scale denominator and approximated pixel size in meters are only accurate near the Equator.

Table C.2: Definition of Well-known scale set GlobalCRS84Pixel
CRS

Scale Denominator Pixel Size (degrees) Approx. Pixel Size (m)

http://www.opengis.net/def/crs/OGC/1.3/CRS84

795139219.9519541

2

240000

397569609.9759771

1

120000

198784804.9879885

0.5 (30')

60000

132523203.3253257

0.333333333333333 (20')

40000

66261601.66266284

0.166666666666667 (10')

20000

33130800.83133142

8.333333333333333 10-2 (5')

10000

13252320.33253257

3.333333333333333 10-2 (2')

4000

6626160.166266284

1.666666666666667 10-2 (1')

2000

3313080.083133142

8.333333333333333 10-3 (30")

1000

1656540.041566571

4.166666666666667 10-3 (15")

500

552180.0138555236

1.388888888888889 10-3 (5")

166

331308.0083133142

8.333333333333333 10-4 (3")

100

110436.0027711047

2.777777777777778 10-4 (1")

33

55218.00138555237

1.388888888888889 10-4 (0.5")

16

33130.80083133142

8.333333333333333 10-5 (0.3")

10

11043.60027711047

2.777777777777778 10-5 (0.1")

3

3313.080083133142

8.333333333333333 10-6 (0.03")

1

1104.360027711047

2.777777777777778 10-6 (0.01")

0.33

 

C.3       GoogleCRS84Quad (http://www.opengis.net/def/wkss/OGC/1.0/GoogleCRS84Quad)

This WKSS has been defined to allow quadtree pyramids in CRS84. The scale denominator is only accurate near the equator.

Table C.3 — Definition of Well-known scale set GoogleCRS84Quad
CRS Scale Denominator Pixel Size (degrees)

http://www.opengis.net/def/crs/OGC/1.3/CRS84

559082264.0287178

1.40625000000000

279541132.0143589

0.703125000000000

139770566.0071794

0.351562500000000

69885283.00358972

0.175781250000000

34942641.50179486

8.78906250000000 10-2

17471320.75089743

4.39453125000000 10-2

8735660.375448715

2.19726562500000 10-2

4367830.187724357

1.09863281250000 10-2

2183915.093862179

5.49316406250000 10-3

1091957.546931089

2.74658203125000 10-3

545978.7734655447

1.37329101562500 10-3

272989.3867327723

6.86645507812500 10-4

136494.6933663862

3.43322753906250 10-4

68247.34668319309

1.71661376953125 10-4

34123.67334159654

8.58306884765625 10-5

17061.83667079827

4.29153442382812 10-5

8530.918335399136

2.14576721191406 10-5

4265.459167699568

1.07288360595703 10-5

2132.729583849784

5.36441802978516 10-6

 

NOTE: The first scale denominator allows representation of the whole world in a single tile of 256x256 pixels, where 128 lines of the tile are left blank. The latter is the reason why in the Annex D.2 "World CRS84 Quad TileMatrixSet definition (http://www.opengis.net/def/tilematrixset/OGC/1.0/WorldCRS84Quad)" this level is not used. The next level allows representation of the whole world in 2x1 tiles of 256x256 pixels and so on in powers of 2.

NOTE2: Selecting the word “Google” for this WKSS id is maintained for backwards compatibility even if the authors recognize that it was an unfortunate selection and might result confusing since the “Google-like” tiles do not use CRS84.

C.4      GoogleMapsCompatible (http://www.opengis.net/def/wkss/OGC/1.0/GoogleMapsCompatible)

This well-known scale set has been defined to be compatible with many mass marked implementations such as Google Maps, Microsoft Bing Maps (formerly Microsoft Live Maps) and Open Street Map tiles. The scale denominator and pixel size are only accurate near the equator.

Table C.4 — Definition of Well-known scale set GoogleMapsCompatible
CRS Zoom level name Scale Denominator Pixel Size (m)

http://www.opengis.net/def/crs/EPSG/6.18:3/3857

WGS 84 / Pseudo-Mercator

http://www.epsg-registry.org/export.htm?‌gml= http://www.opengis.net/def/crs/EPSG/0/3857

0

559082264.0287178

156543.0339280410

1

279541132.0143589

78271.51696402048

2

139770566.0071794

39135.75848201023

3

69885283.00358972

19567.87924100512

4

34942641.50179486

9783.939620502561

5

17471320.75089743

4891.969810251280

6

8735660.375448715

2445.984905125640

7

4367830.187724357

1222.992452562820

8

2183915.093862179

611.4962262814100

9

1091957.546931089

305.7481131407048

10

545978.7734655447

152.8740565703525

11

272989.3867327723

76.43702828517624

12

136494.6933663862

38.21851414258813

13

68247.34668319309

19.10925707129406

14

34123.67334159654

9.554628535647032

15

17061.83667079827

4.777314267823516

16

8530.918335399136

2.388657133911758

17

4265.459167699568

1.194328566955879

18

2132.729583849784

0.5971642834779395

19

1066.364791924892

0.2985821417389697

20

533.1823959624460

0.1492910708694849

21

266.5911979812230

0.07464553543474244

22

133.2955989906115

0.03732276771737122

23

66.64779949530575

0.01866138385868561

24

33.32389974765287

0.009330691929342805

 

NOTE: Level 0 allows representing most of the world (limited to latitudes between approximately ±85 degrees) in a single tile of 256x256 pixels (Mercator projection cannot cover the whole world because mathematically the poles are at infinity). The next level represents most of the world in 2x2 tiles of 256x256 pixels and so on in powers of 2.

C.5      WorldMercatorWGS84 (http://www.opengis.net/def/wkss/OGC/1.0/ WorldMercatorWGS84)

This well-known scale set has been defined as similar to Google Maps and Microsoft Bing Maps but using the WGS84 ellipsoid. The scale denominator and pixel size are only accurate near the equator.

Table C.5 — Definition of Well-known scale set WorldMercatorWGS84
CRS Zoom level name Scale Denominator Pixel Size (m)

http://www.opengis.net/def/crs/EPSG/0/3395

WGS 84 / World Mercator

0

559082264.02871774

156543.033928040

1

279541132.01435887

78271.5169640205

2

139770566.00717943

39135.7584820102

3

69885283.003589718

19567.8792410051

4

34942641.501794859

9783.93962050256

5

17471320.750897429

4891.96988102512

6

8735660.3754487147

2445.98490512564

7

4367830.1877243573

1222.99245256282

8

2183915.0938621786

611.496226281410

9

1091957.5469310893

305.748113140705

10

545978.77346554467

152.874056570352

11

272989.38673277233

76.4370282851762

12

136494.69336638616

38.2185141425881

13

68247.346683193084

19.1092570712940

14

34123.673341596542

9.55462853564703

15

17061.836670798271

4.77731426782351

16

8530.9183353991355

2.38865713391175

17

4265.4591676995677

1.19432856695587

18

2132.7295838497838

0.59716428347793

19

1066.3647919248919

0.29858214173896

20

533.18239596244597

0.14929107086948

21

266.59119798122298

0.07464553543474

22

133.29559899061149

0.03732276771737

23

66.647799495305746

0.01866138385868

24

33.323899747652873

0.00933069192934

 

NOTE: Level 0 allows representing most of the world (limited to latitudes between approximately ±85 degrees) in a single tile of 256x256 pixels (Mercator projection cannot cover the whole world because mathematically the poles are at infinity). The next level represents most of the world in 2x2 tiles of 256x256 pixels and so on in powers of 2.

NOTE2: Mercator projection distorts the pixel size closer to the poles. The pixel sizes provided here are only valid next to the equator.


 

Annex D: Common TileMatrixSet definitions (Informative)

This Annex includes some definitions for TileMatrixSets that are commonly used.

D.1      Web Mercator Quad TileMatrixSet definition (http://www.opengis.net/def/tilematrixset/OGC/1.0/WebMercatorQuad).

Table D.1 — Definition of the WebMercatorQuad TileMatrixSet

CRS: http://www.opengis.net/def/crs/EPSG/0/3857, WGS 84 / Pseudo-Mercator

BBOX LowerCorner: -20037508.3427892 -20037508.3427892 (lat/long: -85.0511287798,-180)

BBOX UpperCorner: 20037508.3427892 20037508.3427892 (lat/long: 85.0511287798,180)

WellKnownScaleSet: http://www.opengis.net/def/wkss/OGC/1.0/GoogleMapsCompatible

TopLeftCorner: -20037508.3427892 20037508.3427892

TileWidth: 256

TileHeight: 256

TileMatrix id

Scale Denominator

Pixel Size (m)

Matrix Width

Matrix Height

0

559082264.0287178

156543.0339280410

1

1

1

279541132.0143589

78271.51696402048

2

2

2

139770566.0071794

39135.75848201023

4

4

3

69885283.00358972

19567.87924100512

8

8

4

34942641.50179486

9783.939620502561

16

16

5

17471320.75089743

4891.969810251280

32

32

6

8735660.375448715

2445.984905125640

64

64

7

4367830.187724357

1222.992452562820

128

128

8

2183915.093862179

611.4962262814100

256

256

9

1091957.546931089

305.7481131407048

512

512

10

545978.7734655447

152.8740565703525

1024

1024

11

272989.3867327723

76.43702828517624

2048

2048

12

136494.6933663862

38.21851414258813

4096

4096

13

68247.34668319309

19.10925707129406

8192

8192

14

34123.67334159654

9.554628535647032

16384

16384

15

17061.83667079827

4.777314267823516

32768

32768

16

8530.918335399136

2.388657133911758

65536

65536

17

4265.459167699568

1.194328566955879

131072

131072

18

2132.729583849784

0.5971642834779395

262144

262144

19

1066.36479192489

0.2985821417389700

524288

524288

20

533.182395962445

0.1492910708694850

1048576

1048576

21

266.591197981222

0.0746455354347424

2097152

2097152

22

133.295598990611

0.0373227677173712

4194304

4194304

23

66.6477994953056

0.0186613838586856

8388608

8388608

24

33.3238997476528

0.0093306919293428

16777216

16777216

 

One can define an arbitrary number of zoom levels and do not need to include all the zoom levels defined here. Here, 25 zoom levels are illustrated.

NOTE: Mercator projection distorts the pixel size the closer to the poles. The pixel sizes provided here are only valid next to the equator in the direction E-W.

NOTE 2: The CRS code 3857 is the official code for Web Mercator. An unofficial code “900913” (GOOGLE spelled with numbers) was initially assigned and is sometimes still used.

The 3 first Tile Matrix of the WebMercatorQuad TileMatrixSet (Source CCA)
Figure : The 3 first Tile Matrix of the WebMercatorQuad TileMatrixSet (Source CCA)

This tile matrix set is the most used tile matrix set in the mass market: for example, by Google Maps, Microsoft Bing Maps and Open Street Map tiles. Nevertheless, it has been long criticized because it is a based on a spherical Mercator instead of an ellipsoid. The use of WebMercatorQuad should be limited to visualization. Any additional use (including distance measurements, routing etc.) needs to use the Mercator spherical expressions to transform the coordinate to an appropriate CRS first.

NOTE3: For example, the EPSG database version 8.9 says about the 3857: “Uses spherical development of ellipsoidal coordinates. Relative to WGS 84 / World Mercator (CRS code 3395) errors of 0.7 percent in scale and differences in northing of up to 43km in the map (equivalent to 21km on the ground) may arise.”

NOTE4: The risks caused by imprecision in the use of Web Mercator is also emphasized by the US National Geospatial Agency (NGA). NGA has issued an Advisory Notice on web Mercator (http://earth-info.nga.mil/GandG/wgs84/web_mercator/index.html) that says that “it may cause geo-location / geo-coordinate errors up to 40,000 meters. This erroneous geospatial positioning information poses an unacceptable risk to global safety of navigation activities, and department of defense, intelligence community, and allied partner systems, missions, and operations that require accurate and precise positioning and navigation information.” The use of WorldMercatorWGS84Quad is recommended.

D.2      World CRS84 Quad TileMatrixSet definition (http://www.opengis.net/def/tilematrixset/OGC/1.0/WorldCRS84Quad)

This Tile Matrix Set defines tiles in the Equirectangular Plate Carrée projection in the CRS84 CRS for the whole world.

Table D.3 — Definition of the WorldCRS84Quad TileMatrixSet

CRS: http://www.opengis.net/def/crs/OGC/1.3/CRS84, CRS84

BBOX LowerCorner: -180 -90

BBOX UpperCorner: 180 90

WellKnownScaleSet: http://www.opengis.net/def/wkss/OGC/1.0/GoogleCRS84Quad

TopLeftCorner: -180 90

TileWidth: 256

TileHeight: 256

TileMatrix id

Scale Denominator

Pixel Size (degrees) (true at the equator)

Matrix Width

Matrix Height

0

279541132.0143589

0.703125000000000

2

1

1

139770566.0071794

0.351562500000000

4

2

2

69885283.00358972

0.175781250000000

8

4

3

34942641.50179486

8.78906250000000 10-2

16

8

4

17471320.75089743

4.39453125000000 10-2

32

16

5

8735660.375448715

2.19726562500000 10-2

64

32

6

4367830.187724357

1.09863281250000 10-2

128

64

7

2183915.093862179

5.49316406250000 10-3

256

128

8

1091957.546931089

2.74658203125000 10-3

512

256

9

545978.7734655447

1.37329101562500 10-3

1024

512

10

272989.3867327723

6.86645507812500 10-4

2048

1024

11

136494.6933663862

3.43322753906250 10-4

4096

2048

12

68247.34668319309

1.71661376953125 10-4

8192

4096

13

34123.67334159654

8.58306884765625 10-5

16384

8192

14

17061.83667079827

4.29153442382812 10-5

32768

16384

15

8530.918335399136

2.14576721191406 10-5

65536

32768

16

4265.459167699568

1.07288360595703 10-5

131072

65536

17

2132.729583849784

5.36441802978516 10-6

262144

131072

 

One can define an arbitrary number of zoom levels and do not need to include all the ones defined here. Here, 18 zoom levels are illustrated.

Tile Matrix Id 1 (2x1 tiles) of the WorldCRS84Quad TileMatrixSet <br /> (Source INSPIRE technical guidance)
Figure : Tile Matrix Id 1 (2x1 tiles) of the WorldCRS84Quad TileMatrixSet
(Source INSPIRE technical guidance)

NOTE: The zoom level identifiers in this TileMatrixSet do not correspond to the same scale values in Annex E.3 of WMTS 1.0. In this TileMatrixSet, the TileMatrix with identifier “-1” has only one tile with 128 lines left blank. For that reason, many implementers do not want to offer this level (including the INSPIRE technical guidance) and prefer to start with a TileMatrix that represents the world with just 2 tiles (one for the negative longitudes and one for the positive longitudes).

NOTE2: The scale denominators for this TileMatrixSet and WorldMercatorWGS84Quad and WebMercatorQuad are the same but the identifiers are displaced by one. This might generate confusion.

NOTE3: for INSPIRE: The Technical Guidance for the implementation of INSPIRE View Services defines a TileMatrixSet called InspireCRS84Quad that is identical to this one. Note that the current version of the INSPIRE Technical Guidance cited in the Bibliography Annex could accidentally generate confusion because it is comparing a GoogleCRS84Quad (that is a well-known scale set name) with the InspireCRS84Quad (that is a TileMatrixSet definition that does not link to any WKSS).

NOTE4: Some implementers prefer to define this TileMatrixSet using the CRS http://www.opengis.net/def/crs/EPSG/0/4326. The definition is the same except that CRS coordinates are expressed in latitude, longitude order, affecting the TopLeftCorner and the BBox encoding only.

D.3      World Mercator WGS84 Quad TileMatrixSet definition (http://www.opengis.net/def/tilematrixset/OGC/1.0/WorldMercatorWGS84Quad).

Table D.2 — Definition of the WorldMercatorWGS84Quad TileMatrixSet

CRS: http://www.opengis.net/def/crs/EPSG/0/3395, WGS 84 / World-Mercator

BBOX LowerCorner: -20037508.3427892  -20037508.3427892  (lat, long: -85.08405903,-180)

BBOX UpperCorner: 20037508.3427892 20037508.3427892 (lat, long: 85.08405903,180)

WellKnownScaleSet: http://www.opengis.net/def/wkss/OGC/1.0/WorldMercatorWGS84

TopLeftCorner: -20037508.3427892 20037508.3427892

TileWidth: 256

TileHeight: 256

TileMatrix id

Scale Denominator

Pixel Size (m) (true at the equator)

Pixel Size (m) at latitude ±31.0606963703645 (informative)

Matrix Width

Matrix Height

0

559082264.02871774

156543.033928040

134217.728

1

1

1

279541132.01435887

78271.5169640205

67108.864

2

2

2

139770566.00717943

39135.7584820102

33554.432

4

4

3

69885283.003589718

19567.8792410051

16777.216

8

8

4

34942641.501794859

9783.93962050256

8388.608

16

16

5

17471320.750897429

4891.96988102512

4194.304

32

32

6

8735660.3754487147

2445.98490512564

2097.152

64

64

7

4367830.1877243573

1222.99245256282

1048.576

128

128

8

2183915.0938621786

611.496226281410

524.288

256

256

9

1091957.5469310893

305.748113140705

262.144

512

512

10

545978.77346554467

152.874056570352

131.072

1024

1024

11

272989.38673277233

76.4370282851762

65.536

2048

2048

12

136494.69336638616

38.2185141425881

32.768

4096

4096

13

68247.346683193084

19.1092570712940

16.384

8192

8192

14

34123.673341596542

9.55462853564703

8.192

16384

16384

15

17061.836670798271

4.77731426782351

4.096

32768

32768

16

8530.9183353991355

2.38865713391175

2.048

65536

65536

17

4265.4591676995677

1.19432856695587

1.024

131072

131072

18

2132.7295838497838

0.59716428347793

0.512

262144

262144

19

1066.3647919248919

0.29858214173896

0.256

524288

524288

20

533.18239596244597

0.14929107086948

0.128

1048576

1048576

21

266.59119798122298

0.07464553543474

0.064

2097152

2097152

22

133.29559899061149

0.03732276771737

0.032

4194304

4194304

23

66.647799495305746

0.01866138385868

0.016

8388608

8388608

24

33.323899747652873

0.00933069192934

0.008

16777216

16777216

 

One can define an arbitrary number of zoom levels and do not need to include all the zoom levels defined here. Here, 25 zoom levels are illustrated.

This Tile Matrix Set looks similar to the previous one (Web Mercator Quad) but this one is based on an ellipsoidal Mercator. Please note that the most northern latitude cover by this one is 85.08405903 (different from Web Mercator).

Tile Matrix Id 1 (red lines; 2x2 tiles) and 3 (blue lines; 8x8 tiles) of the WorldMercatorWGS84Quad TileMatrixSet (Source NGA)
Figure : Tile Matrix Id 1 (red lines; 2x2 tiles) and 3 (blue lines; 8x8 tiles) of the WorldMercatorWGS84Quad TileMatrixSet (Source NGA)

NOTE 2: The NGA Geomatics Office reminds the community to use DoD approved World Geodetic System 1984 (WGS 84) applications for all mission critical activities and encourages the use of WGS84 based tile matrix sets like this one and discourages the use of Web Mercator tiles based on Web Mercator such as WebMercatorQuad.

NOTE 3: The NGA Geomatics Office recommends the use of Universal zoom-levels scale set that are defined as true pixel size at ±31.0606963703645 degrees of latitude that implies a scale reduction at the equator of 0.857385503731176. This standard recommends the use of scale denominators at the equator for convenience.

D.4      Universal Transverse Mercator WGS84 Quad family TileMatrixSet definition (http://www.opengis.net/def/tilematrixset/OGC/1.0/UTM##WGS84Quad)

The Universal Transversal Mercator (a special case of transverse Mercator), divides the world into 60 zones by longitude. No single zone would make a global or near-global map. Therefore, this definition is a family of 60 TileMatrixSets in a single table.

Table D.4 — Definition of the UTM##WGS84Quad TileMatrixSets

##: it is a number that goes from 01 to 60

CRSs: [http://www.opengis.net/def/crs/EPSG/0/32601, http://www.opengis.net/def/crs/EPSG/0/32660] WGS 84 / UTM

BBOX LowerCorner: -9501965.72931276 -20003931.4586255; lat, long: -180 -62+(##-31)*6

BBOX UpperCorner: 10501965.7293128 20003931.4586255 (lat, long: 180, 68+(##-31)*6)

WellKnownScaleSet: N/A

TopLeftCorner: -9501965.72931276 20003931.4586255

TileWidth: 256

TileHeight: 256

TileMatrix id

Scale Denominator

Pixel Size (m) along the central meridian

Pixel Size (m) at a point in the Equator and at a longitude ±30.700524332812+3+(##-31)*6

Matrix Width

Matrix Height

1

279072704.500914

78140.3572602559

67108.864

1

2

2

139536352.250457

39070.178630128

33554.432

2

4

3

69768176.1252285

19535.089315064

16777.216

4

8

4

34884088.0626143

9767.5446575319

8388.608

8

16

5

17442044.0313071

4883.772328766

4194.304

16

32

6

8721022.01565356

2441.886164383

2097.152

32

64

7

4360511.00782678

1220.9430821915

1048.576

64

128

8

2180255.50391339

610.471541095749

524.288

128

256

9

1090127.75195670

305.235770547875

262.144

256

512

10

545063.875978348

152.617885273937

131.072

512

1024

11

272531.937989174

76.3089426369687

65.536

1024

2048

12

136265.968994587

38.1544713184843

32.768

2048

4096

13

68132.9844972935

19.0772356592422

16.384

4096

8192

14

34066.4922486467

9.53861782962109

8.192

8192

16384

15

17033.2461243234

4.76930891481054

4.096

16384

32768

16

8516.62306216168

2.38465445740527

2.048

32768

65536

17

4258.31153108084

1.19232722870264

1.024

65536

131072

18

2129.15576554042

0.596163614351318

0.512

131072

262144

19

1064.57788277021

0.298081807175659

0.256

262144

524288

20

532.288941385105

0.149040903587829

0.128

524288

1048576

21

266.144470692553

0.0745204517939147

0.064

1048576

2097152

22

133.072235346276

0.0372602258969574

0.032

2097152

4194304

23

66.5361176731382

0.0186301129484787

0.016

4194304

8388608

24

33.2680588365691

0.00931505647423934

0.008

8388608

16777216

 

One can define an arbitrary number of zoom levels and do not need to include all the zoom levels defined here. Here, 24 zoom levels are illustrated.

NOTE: The southern hemisphere ([http://www.opengis.net/def/crs/EPSG/0/32701, http://www.opengis.net/def/crs/EPSG/0/32760]) is covered by extending the UTM northern CRSs to the south in a way that the southern hemisphere CRSs are neither used nor needed.

NOTE2: The UTM projection is supposed to be used in zones that are only 3 degrees apart from the central meridian forming 6-degree wide zones. In some parts of the world, it is useful to relax this limitation to cover a wider object (for example, Spain can be fully represented in UTM30 zone if the 3-degree limit is relaxed). The farther one goes from the central meridian, the more deformations is experienced in the projection. The top left corner of this tile matrix set has been defined 65 degrees apart of the central meridian to allow much more extreme cases, but it is highly recommended that applications limit themselves to the 6-degree wide central area and use TileMatrixSetLimits to define actual boundaries of the tile indices used in this area.

Tile Matrix Id 1 (dashed blue lines; 1x2 tiles) and 2 (red lines; 2x4 tiles) of the UTM18WGS84Quad TileMatrixSet (Source NGA)
Figure : Tile Matrix Id 1 (dashed blue lines; 1x2 tiles) and 2 (red lines; 2x4 tiles) of the UTM18WGS84Quad TileMatrixSet (Source NGA)

NOTE 3: The NGA Geomatics Office recommends the use of Universal zoom-levels scale set that are defined as true pixel size at ±30.700524332812 degrees of longitude at both sides of the central meridian that implies a scale reduction at the central meridian of 0.85882463752355. The tiles considering this scale are exactly the same than considering true pixel size at the equation and no scale reduction. This standard recommends the use of scale denominators at the equator for convenience.

D.5      Arctic Universal Polar Stereographic WGS 84 Quad TileMatrixSet definition (http://www.opengis.net/def/tilematrixset/OGC/1.0/UPSArcticWGS84Quad)

It is difficult to find consensus in the geospatial community for what constitutes the “best” tile matrix set for the polar areas. Even if everyone agrees on using a polar stereographic, the election of the TopLeftCorner and scale denominators is almost arbitrary. This document presents the NGA recommendation for polar stereographic that allows for the representation of more than one hemisphere to 15 degrees into the opposite hemisphere and shares a common set of pixel sizes with the WorldMercatorWGS84Quad and the UTM##WGS84Quad. The selection of a CRS for a polar stereographic is difficult and this document follows several criteria (see NOTE 2). In the end, the UPS North that is commonly used in conjunction with UTM was selected.

NOTE: In Mercator or Transversal Mercator projections the first scale denominator and top left corner are selected in a way that a single tile can cover all ranges of longitudes or latitudes respectively. Due to the nature of this projection, these criteria cannot be applied. The top left corner selection deeply depends on the application. The very distant top left corner was selected here to include as many applications as possible.

Table D.5 — Definition of the UPSArcticWGS84Quad TileMatrixSet

CRS: http://www.opengis.net/def/crs/EPSG/0/5041, WGS 84 Universal Polar Stereographic North

BBOX LowerCorner: -14440759.350252, -14440759.350252

BBOX UpperCorner: 18440759.350252, 18440759.350252

WellKnownScaleSet: N/A

TopLeftCorner: -14440759.350252,18440759.350252

TileWidth: 256

TileHeight: 256

Tile

Matrix id

Scale Denominator

Pixel Size (m) (true at latitude  ~81)

True Pixel Size (m) at the pole (informative)

Matrix Width

Matrix Height

0

458726544.4

128443.4324

129218.7449

1

1

1

229363272.2

64221.71621

64609.37245

2

2

2

114681636.1

32110.85811

32304.68622

4

4

3

57340818.05

16055.42905

16152.34311

8

8

4

28670409.02

8027.714526

8076.171556

16

16

5

14335204.51

4013.857263

4038.085778

32

32

6

7167602.256

2006.928632

2019.042889

64

64

7

3583801.128

1003.464316

1009.521444

128

128

8

1791900.564

501.7321579

504.7607222

256

256

9

895950.282

250.866079

252.3803611

512

512

10

447975.141

125.4330395

126.1901806

1024

1024

11

223987.5705

62.71651974

63.09509028

2048

2048

12

111993.7852

31.35825987

31.54754514

4096

4096

13

55996.89262

15.67912993

15.77377257

8192

8192

14

27998.44631

7.839564967

7.886886285

16384

16384

15

13999.22316

3.919782484

3.943443142

32768

32768

16

6999.611578

1.959891242

1.971721571

65536

65536

17

3499.805789

0.979945621

0.985860786

131072

131072

18

1749.902894

0.48997281

0.492930393

262144

262144

19

874.9514472

0.244986405

0.246465196

524288

524288

20

437.4757236

0.122493203

0.123232598

1048576

1048576

21

218.7378618

0.061246601

0.061616299

2097152

2097152

22

109.3689309

0.030623301

0.03080815

4194304

4194304

23

54.68446545

0.01531165

0.015404075

8388608

8388608

24

27.34223273

0.007655825

0.007702037

16777216

16777216

 

One can define an arbitrary number of zoom levels and does not need to include all the zoom levels defined here. Here, 25 zoom levels are illustrated.

 

Tile Matrix Id 0 (exterior line; 1x1 tile) and 1 (blank lines; 2x2 tiles) of the UPSArcticWGS84Quad TileMatrixSet (Source NGA)
Figure : Tile Matrix Id 0 (exterior line; 1x1 tile) and 1 (blank lines; 2x2 tiles) of the UPSArcticWGS84Quad TileMatrixSet (Source NGA)

NOTE2: In practice, there are many polar stereographic CRS and it is difficult to prioritize one. In many occasions, the meridian of origin is selected in order to rotate the projection and allow a region to become more prominent. Examples are rotations emphasizing Greenland or Alaska. To be general, the 0 meridian of origin was selected. In addition, polar projections have a variety of standard parallels and here is selected 90N. In the UPS system, the North Pole is assigned the coordinates x=2000000, y=2000000.

NOTE3: NGA has suggested also another TileMatrixSet called sixteenth tile that covers less area by having the TopLeftCorner: at ‑2 110 189.837563, 6 110 189.837563,   BBOX LowerCorner: ‑2110189.837562966 -2110189.837562966 and BBOX UpperCorner: 6110189.837562966 6110189.837562966, The same result can be achieved by using the TileMatrixSetLimits mechanism without having to define an entirely new TileMatrixSet.

 

Rotation of the meridian of origin to allow a region to become more prominent (a. EPSG:3995, Arctic WGS 84 Polar Stereographic, b. EPSG:3413 WGS 84 / NSIDC Polar Stereographic North, c. EPSG:5936 / Alaska Polar Stereographic). This TileMatrixSet has 0 rotation angle for the meridian of origin.
Figure : Rotation of the meridian of origin to allow a region to become more prominent (a. EPSG:3995, Arctic WGS 84 Polar Stereographic, b. EPSG:3413 WGS 84 / NSIDC Polar Stereographic North, c. EPSG:5936 / Alaska Polar Stereographic). This TileMatrixSet has 0 rotation angle for the meridian of origin.

D.6      Antarctic Universal Polar Stereographic WGS84 Quad TileMatrixSet definition (http://www.opengis.net/def/tilematrixset/OGC/1.0/UPSAntarcticWGS84Quad)

There is no consensus in the geospatial community for what constitutes the “best” tile matrix set for the polar stereographic projection. One reason for this is that the election of the TopLeftCorner and scale denominators is almost completely arbitrary. In this document, a TileMatrixSet identical to the Arctic one but with and Antarctic CRS was selected.

Table D.6 — Definition of the UPSAntarcticWGS84Quad TileMatrixSet

CRS: http://www.opengis.net/def/crs/EPSG/0/5042, WGS 84 Universal Polar Stereographic South

BBOX LowerCorner: -14440759.350252, -14440759.350252

BBOX UpperCorner: 18440759.350252, 18440759.350252

WellKnownScaleSet: N/A

TopLeftCorner: -14440759.350252,18440759.350252

TileWidth: 256

TileHeight: 256

Tile

Matrix id

Scale Denominator

Pixel Size (m) (true at latitude  ~-81)

True Pixel Size (m) at the pole (informative)

Matrix Width

Matrix Height

0

458726544.4

128443.4324

129218.7449

1

1

1

229363272.2

64221.71621

64609.37245

2

2

2

114681636.1

32110.85811

32304.68622

4

4

3

57340818.05

16055.42905

16152.34311

8

8

4

28670409.02

8027.714526

8076.171556

16

16

5

14335204.51

4013.857263

4038.085778

32

32

6

7167602.256

2006.928632

2019.042889

64

64

7

3583801.128

1003.464316

1009.521444

128

128

8

1791900.564

501.7321579

504.7607222

256

256

9

895950.282

250.866079

252.3803611

512

512

10

447975.141

125.4330395

126.1901806

1024

1024

11

223987.5705

62.71651974

63.09509028

2048

2048

12

111993.7852

31.35825987

31.54754514

4096

4096

13

55996.89262

15.67912993

15.77377257

8192

8192

14

27998.44631

7.839564967

7.886886285

16384

16384

15

13999.22316

3.919782484

3.943443142

32768

32768

16

6999.611578

1.959891242

1.971721571

65536

65536

17

3499.805789

0.979945621

0.985860786

131072

131072

18

1749.902894

0.48997281

0.492930393

262144

262144

19

874.9514472

0.244986405

0.246465196

524288

524288

20

437.4757236

0.122493203

0.123232598

1048576

1048576

21

218.7378618

0.061246601

0.061616299

2097152

2097152

22

109.3689309

0.030623301

0.03080815

4194304

4194304

23

54.68446545

0.01531165

0.015404075

8388608

8388608

24

27.34223273

0.007655825

0.007702037

16777216

16777216

 

One can define an arbitrary number of zoom levels and does not need to include all the zoom levels defined here. Here, 25 zoom levels are illustrated.

Tile Matrix Id 0 (exterior line; 1x1 tile) and 1 (black lines; 2x2 tiles) of the UPSAntarcticWGS84Quad TileMatrixSet (Source NGA)
Figure : Tile Matrix Id 0 (exterior line; 1x1 tile) and 1 (black lines; 2x2 tiles) of the UPSAntarcticWGS84Quad TileMatrixSet (Source NGA)

 

D.7      European ETRS89 LAEA Quad TileMatrixSet definition (http://www.opengis.net/def/tilematrixset/OGC/1.0/EuropeanETRS89_LAEAQuad)

Table D.5 — Definition of the EuropeanETRS89_LAEAQuad TileMatrixSet

CRS: http://www.opengis.net/def/crs/EPSG/0/3035, ETRS89

BBOX LowerCorner: 2000000.0 1000000.0

BBOX UpperCorner: 6500000 5500000.0

WellKnownScaleSet: N/A

TopLeftCorner: 2000000.0 5500000.0

TileWidth: 256

TileHeight: 256

TileMatrix id

Scale Denominator

Pixel Size (m)

Matrix Width

Matrix Height

0

62779017.857142866

17578.1250000000

1

1

1

31389508.928571433

8789.0625000000

2

2

2

15694754.464285716

4394.5312500000

4

4

3

7847377.232142858

2197.2656250000

8

8

4

3923688.616071429

1098.6328125000

16

16

5

1961844.3080357146

549.3164062500

32

32

6

980922.1540178573

274.6582031250

64

64

7

490461.07700892864

137.3291015625

128

128

8

245230.53850446432

68.6645507812

256

256

9

122615.26925223216

34.3322753906

512

512

10

61307.63462611608

17.1661376953

1024

1024

11

30653.81731305804

8.5830688477

2048

2048

12

15326.90865652902

4.2915344238

4096

4096

13

7663.45432826451

2.1457672119

8192

8192

14

3831.727164132255

1.0728836060

16384

16384

15

1915.8635820661275

0.5364418030

32768

32768

 

One can define an arbitrary number of zoom levels and does not need to include all the zoom levels defined here. Here, 16 zoom levels are illustrated.

D.8      Canadian NAD83 LCC TileMatrixSet definition (http://www.opengis.net/def/tilematrixset/OGC/1.0/CanadianNAD83_LCC)

Table D.5 — Definition of the CanadianNAD83_LCC TileMatrixSet

CRS: http://www.opengis.net/def/crs/EPSG/0/3978, NAD83

BBOX LowerCorner: -7786476.885838887, -5153821.09213678

BBOX UpperCorner: 7148753.233541353, 7928343.534071138

WellKnownScaleSet: N/A

TopLeftCorner: -34655800, 39310000

TileWidth: 256

TileHeight: 256

TileMatrix id

Scale Denominator

Scale Denominator at latitudes 37.897505 and 83.3032475 (informative)

Cartographic product (informative)

Pixel Size (m) (true at the equator)

Matrix Width

Matrix Height

0

137016643.1

145000000

World

38364.66006

5

5

1

80320101.12

85000000

World

22489.62831

8

8

2

47247118.3

50000000

Atlas SM

13229.19313

13

14

3

28348270.98

30000000

Atlas SM

7937.515875

21

22

4

16536491.41

17500000

Atlas SM

4630.217594

36

38

5

9449423.661

10000000

Atlas MID

2645.838625

62

66

6

5669654.196

6000000

Atlas MID

1587.503175

103

110

7

3307298.281

3500000

Atlas MID

926.0435188

177

188

8

1889884.732

2000000

Atlas LG

529.167725

309

329

9

1133930.839

1200000

Atlas LG

317.500635

515

548

10

661459.6563

700000

Atlas LG

185.2087038

882

938

11

396875.7938

420000

NTDB 250K

111.1252223

1470

1563

12

236235.5915

250000

NTDB 250K

66.14596563

2469

2626

13

137016.6431

145000

NTDB 250K

38.36466006

4257

4528

14

80320.10112

85000

NTDB 50K

22.48962831

7262

7723

15

47247.1183

50000

NTDB 50K

13.22919313

12344

13130

16

28348.27098

30000

NTDB 50K

7.937515875

20574

21882

17

16536.49141

17500

Geobase

4.630217594

35269

37512

18

9449.423661

10000

Geobase

2.645838625

61720

65646

19

5669.654196

6000

Geobase

1.587503175

102866

109409

20

3307.298281

3500

Geobase

0.926043519

176341

187558

21

1889.884732

2000

Geobase

0.529167725

308596

328227

22

1133.930839

1200

Geobase

0.317500635

514327

547044

23

661.4596563

700

 

0.185208704

881703

937790

24

396.8757938

420

 

0.111125222

1469505

1562983

25

236.2355915

250

 

0.066145966

2468768

2625811

 

One can define an arbitrary number of zoom levels and does not need to include all the zoom levels defined here. Here, 26 zoom levels are illustrated.


 

 

 

Annex E:  Example Encodings for Common TileMatrixSet2D (Informative)

This Annex provides examples of XML and JSON encodings than can be used to define tile matrix sets.

E.1      Web Mercator Quad TileMatrixSet definition.

E.1.1      Web Mercator Quad TileMatrixSet definition. XML example.

This is the XML definition of the WebMercatorQuad tile matrix set that can be reproduced by other standards needing to define a tile matrix set. Not all TileMatrix elements need to be included and including other TileMatrices for more detailed scales is possible if they follow the same pattern.


   <TileMatrixSet xml:id=“WebMercatorQuad”>
      <ows:Title>Google Maps Compatible for the World</ows:Title>
      <ows:Identifier>WebMercatorQuad</ows:Identifier>
      <ows:BoundingBox crs=“http://www.opengis.net/def/crs/EPSG/0/3857”>
         <ows:LowerCorner>
            -20037508.3427892 -20037508.3427892
         </ows:LowerCorner>
         <ows:UpperCorner>
             20037508.3427892 20037508.3427892
         </ows:UpperCorner>
      </ows:BoundingBox>
      <ows:SupportedCRS>
          http://www.opengis.net/def/crs/EPSG/0/3857
      </ows:SupportedCRS>
      <WellKnownScaleSet>
          http://www.opengis.net/def/wkss/OGC/1.0/GoogleMapsCompatible
      </WellKnownScaleSet>
      <TileMatrix>
        <ows:Identifier>0</ows:Identifier>
        <ScaleDenominator>559082264.028717</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1</MatrixWidth>
        <MatrixHeight>1</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>1</ows:Identifier>
        <ScaleDenominator>279541132.014358</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2</MatrixWidth>
        <MatrixHeight>2</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>2</ows:Identifier>
        <ScaleDenominator>139770566.007179</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>4</MatrixWidth>
        <MatrixHeight>4</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>3</ows:Identifier>
        <ScaleDenominator>69885283.0035897</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>8</MatrixWidth>
        <MatrixHeight>8</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>4</ows:Identifier>
        <ScaleDenominator>34942641.5017948</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>16</MatrixWidth>
        <MatrixHeight>16</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>5</ows:Identifier>
        <ScaleDenominator>17471320.7508974</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>32</MatrixWidth>
        <MatrixHeight>32</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>6</ows:Identifier>
        <ScaleDenominator>8735660.37544871</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>64</MatrixWidth>
        <MatrixHeight>64</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>7</ows:Identifier>
        <ScaleDenominator>4367830.18772435</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>128</MatrixWidth>
        <MatrixHeight>128</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>8</ows:Identifier>
        <ScaleDenominator>2183915.09386217</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>256</MatrixWidth>
        <MatrixHeight>256</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>9</ows:Identifier>
        <ScaleDenominator>1091957.54693108</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>512</MatrixWidth>
        <MatrixHeight>512</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>10</ows:Identifier>
        <ScaleDenominator>545978.773465544</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1024</MatrixWidth>
        <MatrixHeight>1024</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>11</ows:Identifier>
        <ScaleDenominator>272989.386732772</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2048</MatrixWidth>
        <MatrixHeight>2048</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>12</ows:Identifier>
        <ScaleDenominator>136494.693366386</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>4096</MatrixWidth>
        <MatrixHeight>4096</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>13</ows:Identifier>
        <ScaleDenominator>68247.346683193</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>8192</MatrixWidth>
        <MatrixHeight>8192</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>14</ows:Identifier>
        <ScaleDenominator>34123.6733415964</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>16384</MatrixWidth>
        <MatrixHeight>16384</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>15</ows:Identifier>
        <ScaleDenominator>17061.8366707982</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>32768</MatrixWidth>
        <MatrixHeight>32768</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>16</ows:Identifier>
        <ScaleDenominator>8530.91833539913</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>65536</MatrixWidth>
        <MatrixHeight>65536</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>17</ows:Identifier>
        <ScaleDenominator>4265.45916769956</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>131072</MatrixWidth>
        <MatrixHeight>131072</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>18</ows:Identifier>
        <ScaleDenominator>2132.72958384978</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>262144</MatrixWidth>
        <MatrixHeight>262144</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>19</ows:Identifier>
        <ScaleDenominator>1066.36479192489</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>524288</MatrixWidth>
        <MatrixHeight>524288</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>20</ows:Identifier>
        <ScaleDenominator>533.182395962445</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1048576</MatrixWidth>
        <MatrixHeight>1048576</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>21</ows:Identifier>
        <ScaleDenominator>266.591197981222</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2097152</MatrixWidth>
        <MatrixHeight>2097152</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>22</ows:Identifier>
        <ScaleDenominator>133.295598990611</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>4194304</MatrixWidth>
        <MatrixHeight>4194304</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>23</ows:Identifier>
        <ScaleDenominator>66.6477994953056</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>8388608</MatrixWidth>
        <MatrixHeight>8388608</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>24</ows:Identifier>
        <ScaleDenominator>33.3238997476528</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>16777216</MatrixWidth>
        <MatrixHeight>16777216</MatrixHeight>
      </TileMatrix>
   </TileMatrixSet>


 

One can define an arbitrary number of zoom levels. Here, 25 zoom levels are illustrated.

E.1.2      Web Mercator Quad TileMatrixSet definition. JSON Encoding

This is the JSON definition of the WebMercatorQuad tile matrix set that can be reproduced by other standards needing to define a tile matrix set. Not all TileMatrix elements need to be included and including other TileMatrices for more detailed scales is possible if they follow the same pattern.


{
   “type”: “TileMatrixSetType”,
   “title”: “Google Maps Compatible for the World”,
   “identifier”: “WebMercatorQuad”,
   “boundingBox”:
   {
      “type”: “BoundingBoxType”,
      “crs”: “http://www.opengis.net/def/crs/EPSG/0/3857”,
      “lowerCorner”: [-20037508.3427892, -20037508.3427892],
      “upperCorner”: [20037508.3427892, 20037508.3427892]
   },
   “supportedCRS”: “http://www.opengis.net/def/crs/EPSG/0/3857”,
   “wellKnownScaleSet”: “http://www.opengis.net/def/wkss/OGC/1.0/GoogleMapsCompatible”,
   “tileMatrix”:
   [
      {
         “type”: “TileMatrixType”,
         “identifier”: “0”,
         “scaleDenominator”: 559082264.028717,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 1,
         “matrixHeight”: 1
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “1”,
         “scaleDenominator”: 279541132.014358,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2,
         “matrixHeight”: 2
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “2”,
         “scaleDenominator”: 139770566.007179,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4,
         “matrixHeight”: 4
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “3”,
         “scaleDenominator”: 69885283.0035897,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8,
         “matrixHeight”: 8
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “4”,
         “scaleDenominator”: 34942641.5017948,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16,
         “matrixHeight”: 16
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “5”,
         “scaleDenominator”: 17471320.7508974,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 32,
         “matrixHeight”: 32
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “6”,
         “scaleDenominator”: 8735660.37544871,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 64,
         “matrixHeight”: 64
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “7”,
         “scaleDenominator”: 4367830.18772435,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 128,
         “matrixHeight”: 128
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “8”,
         “scaleDenominator”: 2183915.09386217,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 256,
         “matrixHeight”: 256
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “9”,
         “scaleDenominator”: 1091957.54693108,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 512,
         “matrixHeight”: 512
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “10”,
         “scaleDenominator”: 545978.773465544,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 1024,
         “matrixHeight”: 1024
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “11”,
         “scaleDenominator”: 272989.386732772,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2048,
         “matrixHeight”: 2048
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “12”,
         “scaleDenominator”: 136494.693366386,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4096,
         “matrixHeight”: 4096
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “13”,
         “scaleDenominator”: 68247.346683193,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8192,
         “matrixHeight”: 8192
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “14”,
         “scaleDenominator”: 34123.6733415964,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16384,
         “matrixHeight”: 16384
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “15”,
         “scaleDenominator”: 17061.8366707982,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 32768,
         “matrixHeight”: 32768
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “16”,
         “scaleDenominator”: 8530.91833539913,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 65536,
         “matrixHeight”: 65536
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “17”,
         “scaleDenominator”: 4265.45916769956,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 131072,
         “matrixHeight”: 131072
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “18”,
         “scaleDenominator”: 2132.72958384978,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 262144,
         “matrixHeight”: 262144
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “19”,
         “scaleDenominator”: 1066.36479192489,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 524288,
         “matrixHeight”: 524288
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “20”,
         “scaleDenominator”: 533.182395962445,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 1048576,
         “matrixHeight”: 1048576
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “21”,
         “scaleDenominator”: 266.591197981222,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2097152,
         “matrixHeight”: 2097152
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “22”,
         “scaleDenominator”: 133.295598990611,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4194304,
         “matrixHeight”: 4194304
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “23”,
         “scaleDenominator”: 66.6477994953056,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8388608,
         “matrixHeight”: 8388608
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “24”,
         “scaleDenominator”: 33.3238997476528,
         “topLeftCorner”: [-20037508.3427892, 20037508.3427892],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16777216,
         “matrixHeight”: 16777216
      }
   ]
}


One can define an arbitrary number of zoom levels. Here, 25 zoom levels are illustrated.

E.2      World CRS84 Quad TileMatrixSet definition.

E.2.1      World CRS84 Quad TileMatrixSet definition. XML encoding

This is the XML definition of the WorldCRS84Quad tile matrix set that can be reproduced by other standards needing to define a tile matrix set. Not all TileMatrix elements need to be included and including other TileMatrices for more detailed scales is possible if they follow the same pattern.


      <TileMatrixSet xml:id=“WorldCRS84Quad”>
         <ows:Title>CRS84 for the World</ows:Title>
         <ows:Identifier>WorldCRS84Quad</ows:Identifier>
         <ows:BoundingBox crs=“http://www.opengis.net/def/crs/OGC/1.3/CRS84”>
            <ows:LowerCorner>-180 -90</ows:LowerCorner>
            <ows:UpperCorner>180 90</ows:UpperCorner>
         </ows:BoundingBox>
         <ows:SupportedCRS>
            http://www.opengis.net/def/crs/OGC/1.3/CRS84
         </ows:SupportedCRS>
         <WellKnownScaleSet>
            http://www.opengis.net/def/wkss/OGC/1.0/GoogleCRS84Quad
         </WellKnownScaleSet>
         <TileMatrix>
            <ows:Identifier>1</ows:Identifier>
            <ScaleDenominator>279541132.0143589</ScaleDenominator>
            <TopLeftCorner>-180 90</TopLeftCorner>
            <TileWidth>256</TileWidth>
            <TileHeight>256</TileHeight>
            <MatrixWidth>2</MatrixWidth>
            <MatrixHeight>1</MatrixHeight>
         </TileMatrix>
         <TileMatrix>
            <ows:Identifier>2</ows:Identifier>
            <ScaleDenominator>139770566.0071794</ScaleDenominator>
            <TopLeftCorner>-180 90</TopLeftCorner>
            <TileWidth>256</TileWidth>
            <TileHeight>256</TileHeight>
            <MatrixWidth>4</MatrixWidth>
            <MatrixHeight>2</MatrixHeight>
         </TileMatrix>
         <TileMatrix>
            <ows:Identifier>3</ows:Identifier>
            <ScaleDenominator>69885283.00358972</ScaleDenominator>
            <TopLeftCorner>-180 90</TopLeftCorner>
            <TileWidth>256</TileWidth>
            <TileHeight>256</TileHeight>
            <MatrixWidth>8</MatrixWidth>
            <MatrixHeight>4</MatrixHeight>
         </TileMatrix>
         <TileMatrix>
            <ows:Identifier>4</ows:Identifier>
            <ScaleDenominator>34942641.50179486</ScaleDenominator>
            <TopLeftCorner>-180 90</TopLeftCorner>
            <TileWidth>256</TileWidth>
            <TileHeight>256</TileHeight>
            <MatrixWidth>16</MatrixWidth>
            <MatrixHeight>8</MatrixHeight>
         </TileMatrix>
         <TileMatrix>
            <ows:Identifier>5</ows:Identifier>
            <ScaleDenominator>17471320.75089743</ScaleDenominator>
            <TopLeftCorner>-180 90</TopLeftCorner>
            <TileWidth>256</TileWidth>
            <TileHeight>256</TileHeight>
            <MatrixWidth>32</MatrixWidth>
            <MatrixHeight>16</MatrixHeight>
         </TileMatrix>
         <TileMatrix>
            <ows:Identifier>6</ows:Identifier>
            <ScaleDenominator>8735660.375448715</ScaleDenominator>
            <TopLeftCorner>-180 90</TopLeftCorner>
            <TileWidth>256</TileWidth>
            <TileHeight>256</TileHeight>
            <MatrixWidth>64</MatrixWidth>
            <MatrixHeight>32</MatrixHeight>
         </TileMatrix>
         <TileMatrix>
            <ows:Identifier>7</ows:Identifier>
            <ScaleDenominator>4367830.187724357</ScaleDenominator>
            <TopLeftCorner>-180 90</TopLeftCorner>
            <TileWidth>256</TileWidth>
            <TileHeight>256</TileHeight>
            <MatrixWidth>128</MatrixWidth>
            <MatrixHeight>64</MatrixHeight>
         </TileMatrix>
         <TileMatrix>
            <ows:Identifier>8</ows:Identifier>
            <ScaleDenominator>2183915.093862179</ScaleDenominator>
            <TopLeftCorner>-180 90</TopLeftCorner>
            <TileWidth>256</TileWidth>
            <TileHeight>256</TileHeight>
            <MatrixWidth>256</MatrixWidth>
            <MatrixHeight>128</MatrixHeight>
         </TileMatrix>
         <TileMatrix>
            <ows:Identifier>9</ows:Identifier>
            <ScaleDenominator>1091957.546931089</ScaleDenominator>
            <TopLeftCorner>-180 90</TopLeftCorner>
            <TileWidth>256</TileWidth>
            <TileHeight>256</TileHeight>
            <MatrixWidth>512</MatrixWidth>
            <MatrixHeight>256</MatrixHeight>
         </TileMatrix>
         <TileMatrix>
            <ows:Identifier>10</ows:Identifier>
            <ScaleDenominator>545978.7734655447</ScaleDenominator>
            <TopLeftCorner>-180 90</TopLeftCorner>
            <TileWidth>256</TileWidth>
            <TileHeight>256</TileHeight>
            <MatrixWidth>1024</MatrixWidth>
            <MatrixHeight>512</MatrixHeight>
         </TileMatrix>
         <TileMatrix>
            <ows:Identifier>11</ows:Identifier>
            <ScaleDenominator>272989.3867327723</ScaleDenominator>
            <TopLeftCorner>-180 90</TopLeftCorner>
            <TileWidth>256</TileWidth>
            <TileHeight>256</TileHeight>
            <MatrixWidth>2048</MatrixWidth>
            <MatrixHeight>1024</MatrixHeight>
         </TileMatrix>
         <TileMatrix>
            <ows:Identifier>12</ows:Identifier>
            <ScaleDenominator>136494.6933663862</ScaleDenominator>
            <TopLeftCorner>-180 90</TopLeftCorner>
            <TileWidth>256</TileWidth>
            <TileHeight>256</TileHeight>
            <MatrixWidth>4096</MatrixWidth>
            <MatrixHeight>2048</MatrixHeight>
         </TileMatrix>
         <TileMatrix>
            <ows:Identifier>13</ows:Identifier>
            <ScaleDenominator>68247.34668319309</ScaleDenominator>
            <TopLeftCorner>-180 90</TopLeftCorner>
            <TileWidth>256</TileWidth>
            <TileHeight>256</TileHeight>
            <MatrixWidth>8192</MatrixWidth>
            <MatrixHeight>4096</MatrixHeight>
         </TileMatrix>
         <TileMatrix>
            <ows:Identifier>14</ows:Identifier>
            <ScaleDenominator>34123.67334159654</ScaleDenominator>
            <TopLeftCorner>-180 90</TopLeftCorner>
            <TileWidth>256</TileWidth>
            <TileHeight>256</TileHeight>
            <MatrixWidth>16384</MatrixWidth>
            <MatrixHeight>8192</MatrixHeight>
         </TileMatrix>
         <TileMatrix>
            <ows:Identifier>15</ows:Identifier>
            <ScaleDenominator>17061.83667079827</ScaleDenominator>
            <TopLeftCorner>-180 90</TopLeftCorner>
            <TileWidth>256</TileWidth>
            <TileHeight>256</TileHeight>
            <MatrixWidth>32768</MatrixWidth>
            <MatrixHeight>16384</MatrixHeight>
         </TileMatrix>
         <TileMatrix>
            <ows:Identifier>16</ows:Identifier>
            <ScaleDenominator>8530.918335399136</ScaleDenominator>
            <TopLeftCorner>-180 90</TopLeftCorner>
            <TileWidth>256</TileWidth>
            <TileHeight>256</TileHeight>
            <MatrixWidth>65536</MatrixWidth>
            <MatrixHeight>32768</MatrixHeight>
         </TileMatrix>
         <TileMatrix>
            <ows:Identifier>17</ows:Identifier>
            <ScaleDenominator>4265.459167699568</ScaleDenominator>
            <TopLeftCorner>-180 90</TopLeftCorner>
            <TileWidth>256</TileWidth>
            <TileHeight>256</TileHeight>
            <MatrixWidth>131072</MatrixWidth>
            <MatrixHeight>65536</MatrixHeight>
         </TileMatrix>
         <TileMatrix>
            <ows:Identifier>18</ows:Identifier>
            <ScaleDenominator>2132.729583849784</ScaleDenominator>
            <TopLeftCorner>-180 90</TopLeftCorner>
            <TileWidth>256</TileWidth>
            <TileHeight>256</TileHeight>
            <MatrixWidth>262144</MatrixWidth>
            <MatrixHeight>131072</MatrixHeight>
         </TileMatrix>
      </TileMatrixSet>


 

E.2.2      World CRS84 Quad TileMatrixSet definition. JSON Encoding

This is the JSON definition of the WorldCRS84Quad tile matrix set that can be reproduced by other standards needing to define a tile matrix set. Not all TileMatrix elements need to be included and including other TileMatrices for more detailed scales is possible if they follow the same pattern.


{
   “type”: “TileMatrixSetType”,
   “title”: “CRS84 for the World”,
   “identifier”: “WorldCRS84Quad”,
   “boundingBox”:
   {
      “type”: “BoundingBoxType”,
      “crs”: “http://www.opengis.net/def/crs/OGC/1.3/CRS84”,
      “lowerCorner”: [-180, -90],
      “upperCorner”: [180, 90]
   },
   “supportedCRS”: “http://www.opengis.net/def/crs/OGC/1.3/CRS84”,
   “wellKnownScaleSet”: “http://www.opengis.net/def/wkss/OGC/1.0/GoogleCRS84Quad”,
   “tileMatrix”:
   [
      {
         “type”: “TileMatrixType”,
         “identifier”: “0”,
         “scaleDenominator”: 279541132.014358,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2,
         “matrixHeight”: 1
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “1”,
         “scaleDenominator”: 139770566.007179,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4,
         “matrixHeight”: 2
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “2”,
         “scaleDenominator”: 69885283.0035897,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8,
         “matrixHeight”: 4
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “3”,
         “scaleDenominator”: 34942641.5017948,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16,
         “matrixHeight”: 8
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “4”,
         “scaleDenominator”: 17471320.7508974,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 32,
         “matrixHeight”: 16
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “5”,
         “scaleDenominator”: 8735660.37544871,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 64,
         “matrixHeight”: 32
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “6”,
         “scaleDenominator”: 4367830.18772435,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 128,
         “matrixHeight”: 64
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “7”,
         “scaleDenominator”: 2183915.09386217,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 256,
         “matrixHeight”: 128
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “8”,
         “scaleDenominator”: 1091957.54693108,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 512,
         “matrixHeight”: 256
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “9”,
         “scaleDenominator”: 545978.773465544,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 1024,
         “matrixHeight”: 512
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “10”,
         “scaleDenominator”: 272989.386732772,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2048,
         “matrixHeight”: 1024
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “11”,
         “scaleDenominator”: 136494.693366386,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4096,
         “matrixHeight”: 2048
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “12”,
         “scaleDenominator”: 68247.346683193,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8192,
         “matrixHeight”: 4096
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “13”,
         “scaleDenominator”: 34123.6733415964,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16384,
         “matrixHeight”: 8192
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “14”,
         “scaleDenominator”: 17061.8366707982,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 32768,
         “matrixHeight”: 16384
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “15”,
         “scaleDenominator”: 8530.91833539913,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 65536,
         “matrixHeight”: 32768
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “16”,
         “scaleDenominator”: 4265.45916769956,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 131072,
         “matrixHeight”: 65536
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “17”,
         “scaleDenominator”: 2132.72958384978,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 262144,
         “matrixHeight”: 131072
      }
   ] 
}


E.3      World Mercator WGS84 Quad TileMatrixSet definition.

E.3.1      World Mercator WGS84 Quad TileMatrixSet definition. XML encoding

This is the XML definition of the WorldMercatorWGS84Quad tile matrix set that can be reproduced by other standards needing to define a tile matrix set. Not all TileMatrix elements need to be included and including other TileMatrices for more detailed scales is possible if they follow the same pattern.


   <TileMatrixSet xml:id=“WorldMercatorWGS84Quad”>
      <ows:Title>World Mercator WGS84 (ellipsoid)</ows:Title>
      <ows:Identifier>WorldMercatorWGS84Quad</ows:Identifier>
      <ows:BoundingBox crs=“http://www.opengis.net/def/crs/EPSG/0/3395”>
         <ows:LowerCorner>
            -20037508.3427892 -20037508.3427892
         </ows:LowerCorner>
         <ows:UpperCorner>
             20037508.3427892 20037508.3427892
         </ows:UpperCorner>
      </ows:BoundingBox>
      <ows:SupportedCRS>
          http://www.opengis.net/def/crs/EPSG/0/3395
      </ows:SupportedCRS>
      <WellKnownScaleSet>
          http://www.opengis.net/def/wkss/OGC/1.0/WorldMercatorWGS84
      </WellKnownScaleSet>
      <TileMatrix>
        <ows:Identifier>0</ows:Identifier>
        <ScaleDenominator>559082264.028717</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1</MatrixWidth>
        <MatrixHeight>1</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>1</ows:Identifier>
        <ScaleDenominator>279541132.014358</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2</MatrixWidth>
        <MatrixHeight>2</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>2</ows:Identifier>
        <ScaleDenominator>139770566.007179</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>4</MatrixWidth>
        <MatrixHeight>4</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>3</ows:Identifier>
        <ScaleDenominator>69885283.0035897</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>8</MatrixWidth>
        <MatrixHeight>8</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>4</ows:Identifier>
        <ScaleDenominator>34942641.5017948</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>16</MatrixWidth>
        <MatrixHeight>16</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>5</ows:Identifier>
        <ScaleDenominator>17471320.7508974</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>32</MatrixWidth>
        <MatrixHeight>32</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>6</ows:Identifier>
        <ScaleDenominator>8735660.37544871</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>64</MatrixWidth>
        <MatrixHeight>64</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>7</ows:Identifier>
        <ScaleDenominator>4367830.18772435</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>128</MatrixWidth>
        <MatrixHeight>128</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>8</ows:Identifier>
        <ScaleDenominator>2183915.09386217</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>256</MatrixWidth>
        <MatrixHeight>256</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>9</ows:Identifier>
        <ScaleDenominator>1091957.54693108</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>512</MatrixWidth>
        <MatrixHeight>512</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>10</ows:Identifier>
        <ScaleDenominator>545978.773465544</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1024</MatrixWidth>
        <MatrixHeight>1024</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>11</ows:Identifier>
        <ScaleDenominator>272989.386732772</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2048</MatrixWidth>
        <MatrixHeight>2048</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>12</ows:Identifier>
        <ScaleDenominator>136494.693366386</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>4096</MatrixWidth>
        <MatrixHeight>4096</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>13</ows:Identifier>
        <ScaleDenominator>68247.346683193</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>8192</MatrixWidth>
        <MatrixHeight>8192</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>14</ows:Identifier>
        <ScaleDenominator>34123.6733415964</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>16384</MatrixWidth>
        <MatrixHeight>16384</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>15</ows:Identifier>
        <ScaleDenominator>17061.8366707982</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>32768</MatrixWidth>
        <MatrixHeight>32768</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>16</ows:Identifier>
        <ScaleDenominator>8530.91833539913</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>65536</MatrixWidth>
        <MatrixHeight>65536</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>17</ows:Identifier>
        <ScaleDenominator>4265.45916769956</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>131072</MatrixWidth>
        <MatrixHeight>131072</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>18</ows:Identifier>
        <ScaleDenominator>2132.72958384978</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>262144</MatrixWidth>
        <MatrixHeight>262144</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>19</ows:Identifier>
        <ScaleDenominator>1066.36479192489</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>524288</MatrixWidth>
        <MatrixHeight>524288</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>20</ows:Identifier>
        <ScaleDenominator>533.182395962445</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1048576</MatrixWidth>
        <MatrixHeight>1048576</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>21</ows:Identifier>
        <ScaleDenominator>266.591197981222</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2097152</MatrixWidth>
        <MatrixHeight>2097152</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>22</ows:Identifier>
        <ScaleDenominator>133.295598990611</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>4194304</MatrixWidth>
        <MatrixHeight>4194304</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>23</ows:Identifier>
        <ScaleDenominator>66.6477994953056</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>8388608</MatrixWidth>
        <MatrixHeight>8388608</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>24</ows:Identifier>
        <ScaleDenominator>33.3238997476528</ScaleDenominator>
        <TopLeftCorner>-20037508.3427892 20037508.3427892</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>16777216</MatrixWidth>
        <MatrixHeight>16777216</MatrixHeight>
      </TileMatrix>
    </TileMatrixSet>


 

One can define an arbitrary number of zoom levels. Here, 19 zoom levels are illustrated but resolutions up to 24 are currently available in some mass market services.

E.3.2      World Mercator WGS84 Quad TileMatrixSet definition. JSON Encoding

This is the JSON definition of the WorldMercatorQuad tile matrix set that can be reproduced by other standards needing to define a tile matrix set. Not all TileMatrix elements need to be included and including other TileMatrices for more detailed scales is possible if they follow the same pattern.


{
   “type”: “TileMatrixSetType”,
   “title”: “World Mercator WGS84 (ellipsoid)”,
   “identifier”: “WorldMercatorWGS84Quad”,
   “boundingBox”:
   {
      “type”: “BoundingBoxType”,
      “crs”: “http://www.opengis.net/def/crs/EPSG/0/3395”,
      “lowerCorner”: [-20037508.3427892, -20037508.3427892],
      “upperCorner”: [20037508.3427892, 20037508.3427892]
   },
   “supportedCRS”: “http://www.opengis.net/def/crs/EPSG/0/3395”,
   “wellKnownScaleSet”: “http://www.opengis.net/def/wkss/OGC/1.0/WorldMercatorWGS84”,
   “tileHeight”:
   [
      {
         “type”: “TileMatrixType”,
         “identifier”: “0”,
         “scaleDenominator”: 279541132.014358,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2,
         “matrixHeight”: 1
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “1”,
         “scaleDenominator”: 139770566.007179,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4,
         “matrixHeight”: 2
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “2”,
         “scaleDenominator”: 69885283.0035897,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8,
         “matrixHeight”: 4
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “3”,
         “scaleDenominator”: 34942641.5017948,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16,
         “matrixHeight”: 8
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “4”,
         “scaleDenominator”: 17471320.7508974,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 32,
         “matrixHeight”: 16
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “5”,
         “scaleDenominator”: 8735660.37544871,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 64,
         “matrixHeight”: 32
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “6”,
         “scaleDenominator”: 4367830.18772435,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 128,
         “matrixHeight”: 64
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “7”,
         “scaleDenominator”: 2183915.09386217,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 256,
         “matrixHeight”: 128
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “8”,
         “scaleDenominator”: 1091957.54693108,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 512,
         “matrixHeight”: 256
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “9”,
         “scaleDenominator”: 545978.773465544,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 1024,
         “matrixHeight”: 512
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “10”,
         “scaleDenominator”: 272989.386732772,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2048,
         “matrixHeight”: 1024
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “11”,
         “scaleDenominator”: 136494.693366386,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4096,
         “matrixHeight”: 2048
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “12”,
         “scaleDenominator”: 68247.346683193,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8192,
         “matrixHeight”: 4096
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “13”,
         “scaleDenominator”: 34123.6733415964,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16384,
         “matrixHeight”: 8192
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “14”,
         “scaleDenominator”: 17061.8366707982,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 32768,
         “matrixHeight”: 16384
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “15”,
         “scaleDenominator”: 8530.91833539913,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 65536,
         “matrixHeight”: 32768
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “16”,
         “scaleDenominator”: 4265.45916769956,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 131072,
         “matrixHeight”: 65536
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “17”,
         “scaleDenominator”: 2132.72958384978,
         “topLeftCorner”: [-180, 90],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 262144,
         “matrixHeight”: 131072
      }
   ] 
}


 

One can define an arbitrary number of zoom levels. Here, 19 zoom levels are illustrated but resolutions up to 24 are currently available in some mass market services.

 

E.4      Universal Transverse Mercator WGS84 Quad for TileMatrixSet definition for zone 31

E.4.1      UTM WGS84 Quad for TileMatrixSet definition for zone 31. XML encoding

This is the XML definition of the UTM31WGS84Quad tile matrix set that can be reproduced by other standards needing to define a tile matrix set if the zone 31 is required. Not all TileMatrix elements need to be included and including other TileMatrices for more detailed scales is possible if they follow the same pattern.


    <TileMatrixSet xml:id=“UTM31WGS84Quad”>
      <ows:Title>Universal Transverse Mercator Zone 31 WGS84 Quad</ows:Title>
      <ows:Identifier>UTM31WGS84Quad</ows:Identifier>
      <ows:BoundingBox crs=“http://www.opengis.net/def/crs/EPSG/0/32631”>
         <ows:LowerCorner>
            -9501965.72931276 -20003931.4586255
         </ows:LowerCorner>
         <ows:UpperCorner>
             10501965.7293128 20003931.4586255
         </ows:UpperCorner>
      </ows:BoundingBox>
      <ows:SupportedCRS>
            http://www.opengis.net/def/crs/EPSG/0/32631
      </ows:SupportedCRS>
      <TileMatrix>
        <ows:Identifier>1</ows:Identifier>
        <ScaleDenominator>279072704.500914</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1</MatrixWidth>
        <MatrixHeight>2</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>2</ows:Identifier>
        <ScaleDenominator>139536352.250457</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2</MatrixWidth>
        <MatrixHeight>4</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>3</ows:Identifier>
        <ScaleDenominator>69768176.1252285</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>4</MatrixWidth>
        <MatrixHeight>8</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>4</ows:Identifier>
        <ScaleDenominator>34884088.0626143</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>8</MatrixWidth>
        <MatrixHeight>16</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>5</ows:Identifier>
        <ScaleDenominator>17442044.0313071</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>16</MatrixWidth>
        <MatrixHeight>32</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>6</ows:Identifier>
        <ScaleDenominator>8721022.01565356</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>32</MatrixWidth>
        <MatrixHeight>64</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>7</ows:Identifier>
        <ScaleDenominator>4360511.00782678</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>64</MatrixWidth>
        <MatrixHeight>128</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>8</ows:Identifier>
        <ScaleDenominator>2180255.50391339</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>128</MatrixWidth>
        <MatrixHeight>256</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>9</ows:Identifier>
        <ScaleDenominator>1090127.7519567</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>256</MatrixWidth>
        <MatrixHeight>512</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>10</ows:Identifier>
        <ScaleDenominator>545063.875978348</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>512</MatrixWidth>
        <MatrixHeight>1024</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>11</ows:Identifier>
        <ScaleDenominator>272531.937989174</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1024</MatrixWidth>
        <MatrixHeight>2048</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>12</ows:Identifier>
        <ScaleDenominator>136265.968994587</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2048</MatrixWidth>
        <MatrixHeight>4096</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>13</ows:Identifier>
        <ScaleDenominator>68132.9844972935</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>4096</MatrixWidth>
        <MatrixHeight>8192</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>14</ows:Identifier>
        <ScaleDenominator>34066.4922486467</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>8192</MatrixWidth>
        <MatrixHeight>16384</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>15</ows:Identifier>
        <ScaleDenominator>17033.2461243234</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>16384</MatrixWidth>
        <MatrixHeight>32768</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>16</ows:Identifier>
        <ScaleDenominator>8516.62306216168</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>32768</MatrixWidth>
        <MatrixHeight>65536</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>17</ows:Identifier>
        <ScaleDenominator>4258.31153108084</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>65536</MatrixWidth>
        <MatrixHeight>131072</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>18</ows:Identifier>
        <ScaleDenominator>2129.15576554042</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>131072</MatrixWidth>
        <MatrixHeight>262144</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>19</ows:Identifier>
        <ScaleDenominator>1064.57788277021</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>262144</MatrixWidth>
        <MatrixHeight>524288</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>20</ows:Identifier>
        <ScaleDenominator>532.288941385105</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>524288</MatrixWidth>
        <MatrixHeight>1048576</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>21</ows:Identifier>
        <ScaleDenominator>266.144470692553</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1048576</MatrixWidth>
        <MatrixHeight>2097152</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>22</ows:Identifier>
        <ScaleDenominator>133.072235346276</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2097152</MatrixWidth>
        <MatrixHeight>4194304</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>23</ows:Identifier>
        <ScaleDenominator>66.5361176731382</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>4194304</MatrixWidth>
        <MatrixHeight>8388608</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>24</ows:Identifier>
        <ScaleDenominator>33.2680588365691</ScaleDenominator>
        <TopLeftCorner>-9501965.72931276 20003931.4586255</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>8388608</MatrixWidth>
        <MatrixHeight>16777216</MatrixHeight>
      </TileMatrix>
    </TileMatrixSet>


 

E.4.2      UTM WGS84 Quad for TileMatrixSet definition for zone 31. JSON Encoding

This is the JSON definition of the UTM31WGS84Quad tile matrix set that can be reproduced by other standards needing to define a tile matrix set if the zone 31 is required. Not all TileMatrix elements need to be included and including other TileMatrices for more detailed scales is possible if they follow the same pattern.


{
   “type”: “TileMatrixSetType”,
   “title”: “UTM31WGS84Quad”,
   “identifier”: “Universal Transverse Mercator Zone 31 WGS84 Quad”,
   “boundingBox”:
   {
      “type”: “BoundingBoxType”,
      “crs”: “http://www.opengis.net/def/crs/EPSG/0/32631”,
      “lowerCorner”:
      [
         -9501965.72931276,
         -20003931.4586255
      ],
      “upperCorner”:
      [
         10501965.7293128,
         20003931.4586255
      ]
   },
   “supportedCRS”: “http://www.opengis.net/def/crs/EPSG/0/32631”,
   “tileMatrix”:
   [
      {
         “type”: “TileMatrixType”,
         “identifier”: “1”,
         “scaleDenominator”: 279072704.500914,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 1,
         “matrixHeight”: 2
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “2”,
         “scaleDenominator”: 139536352.250457,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2,
         “matrixHeight”: 4
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “3”,
         “scaleDenominator”: 69768176.1252285,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4,
         “matrixHeight”: 8
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “4”,
         “scaleDenominator”: 34884088.0626143,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8,
         “matrixHeight”: 16
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “5”,
         “scaleDenominator”: 17442044.0313071,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16,
         “matrixHeight”: 32
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “6”,
         “scaleDenominator”: 8721022.01565356,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 32,
         “matrixHeight”: 64
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “7”,
         “scaleDenominator”: 4360511.00782678,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 64,
         “matrixHeight”: 128
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “8”,
         “scaleDenominator”: 2180255.50391339,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 128,
         “matrixHeight”: 256
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “9”,
         “scaleDenominator”: 1090127.7519567,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 256,
         “matrixHeight”: 512
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “10”,
         “scaleDenominator”: 545063.875978348,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 512,
         “matrixHeight”: 1024
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “11”,
         “scaleDenominator”: 272531.937989174,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 1024,
         “matrixHeight”: 2048
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “12”,
         “scaleDenominator”: 136265.968994587,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2048,
         “matrixHeight”: 4096
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “13”,
         “scaleDenominator”: 68132.9844972935,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4096,
         “matrixHeight”: 8192
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “14”,
         “scaleDenominator”: 34066.4922486467,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8192,
         “matrixHeight”: 16384
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “15”,
         “scaleDenominator”: 17033.2461243234,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16384,
         “matrixHeight”: 32768
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “16”,
         “scaleDenominator”: 8516.62306216168,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 32768,
         “matrixHeight”: 65536
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “17”,
         “scaleDenominator”: 4258.31153108084,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 65536,
         “matrixHeight”: 131072
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “18”,
         “scaleDenominator”: 2129.15576554042,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 131072,
         “matrixHeight”: 262144
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “19”,
         “scaleDenominator”: 1064.57788277021,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 262144,
         “matrixHeight”: 524288
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “20”,
         “scaleDenominator”: 532.288941385105,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 524288,
         “matrixHeight”: 1048576
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “21”,
         “scaleDenominator”: 266.144470692553,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 1048576,
         “matrixHeight”: 2097152
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “22”,
         “scaleDenominator”: 133.072235346276,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2097152,
         “matrixHeight”: 4194304
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “23”,
         “scaleDenominator”: 66.5361176731382,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4194304,
         “matrixHeight”: 8388608
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “24”,
         “scaleDenominator”: 33.2680588365691,
         “topLeftCorner”:
         [
           -9501965.72931276,
           20003931.4586255
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8388608,
         “matrixHeight”: 16777216
      }
   ]
}


 

E.5      Arctic Universal Polar Stereographic WGS 84 Quad TileMatrixSet definition.

E.5.1      Arctic UPS WGS 84 Quad TileMatrixSet definition. XML encoding

This is the XML definition of the UPSArcticWGS84Quad tile matrix set that can be reproduced by other standards needing to define a tile matrix set. Not all TileMatrix elements need to be included and including other TileMatrices for more detailed scales is possible if they follow the same pattern.


    <TileMatrixSet xml:id="UPSArcticWGS84Quad">
      <ows:Title>Universal Polar Stereographic WGS 84 Quad for Arctic</ows:Title>
      <ows:Identifier>UPSArcticWGS84Quad</ows:Identifier>
      <ows:BoundingBox crs=“http://www.opengis.net/def/crs/EPSG/0/5041”>
         <ows:LowerCorner>-14440759.350252 -14440759.350252</ows:LowerCorner>
         <ows:UpperCorner>18440759.350252 18440759.350252</ows:UpperCorner>
      </ows:BoundingBox>
      <ows:SupportedCRS>
         http://www.opengis.net/def/crs/EPSG/0/5041
      </ows:SupportedCRS>
      <TileMatrix>
        <ows:Identifier>0</ows:Identifier>
        <ScaleDenominator>458726544.4</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1</MatrixWidth>
        <MatrixHeight>1</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>1</ows:Identifier>
        <ScaleDenominator>229363272.2</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2</MatrixWidth>
        <MatrixHeight>2</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>2</ows:Identifier>
        <ScaleDenominator>114681636.1</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>4</MatrixWidth>
        <MatrixHeight>4</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>3</ows:Identifier>
        <ScaleDenominator>57340818.05</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>8</MatrixWidth>
        <MatrixHeight>8</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>4</ows:Identifier>
        <ScaleDenominator>28670409.02</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>16</MatrixWidth>
        <MatrixHeight>16</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>5</ows:Identifier>
        <ScaleDenominator>14335204.51</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>32</MatrixWidth>
        <MatrixHeight>32</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>6</ows:Identifier>
        <ScaleDenominator>7167602.256</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>64</MatrixWidth>
        <MatrixHeight>64</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>7</ows:Identifier>
        <ScaleDenominator>3583801.128</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>128</MatrixWidth>
        <MatrixHeight>128</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>8</ows:Identifier>
        <ScaleDenominator>1791900.564</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>256</MatrixWidth>
        <MatrixHeight>256</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>9</ows:Identifier>
        <ScaleDenominator>895950.282</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>512</MatrixWidth>
        <MatrixHeight>512</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>10</ows:Identifier>
        <ScaleDenominator>447975.141</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1024</MatrixWidth>
        <MatrixHeight>1024</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>11</ows:Identifier>
        <ScaleDenominator>223987.5705</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2048</MatrixWidth>
        <MatrixHeight>2048</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>12</ows:Identifier>
        <ScaleDenominator>111993.7852</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>4096</MatrixWidth>
        <MatrixHeight>4096</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>13</ows:Identifier>
        <ScaleDenominator>55996.89262</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>8192</MatrixWidth>
        <MatrixHeight>8192</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>14</ows:Identifier>
        <ScaleDenominator>27998.44631</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>16384</MatrixWidth>
        <MatrixHeight>16384</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>15</ows:Identifier>
        <ScaleDenominator>13999.22316</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>32768</MatrixWidth>
        <MatrixHeight>32768</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>16</ows:Identifier>
        <ScaleDenominator>6999.611578</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>65536</MatrixWidth>
        <MatrixHeight>65536</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>17</ows:Identifier>
        <ScaleDenominator>3499.805789</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>131072</MatrixWidth>
        <MatrixHeight>131072</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>18</ows:Identifier>
        <ScaleDenominator>1749.902894</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>262144</MatrixWidth>
        <MatrixHeight>262144</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>19</ows:Identifier>
        <ScaleDenominator>874.9514472</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>524288</MatrixWidth>
        <MatrixHeight>524288</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>20</ows:Identifier>
        <ScaleDenominator>437.4757236</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1048576</MatrixWidth>
        <MatrixHeight>1048576</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>21</ows:Identifier>
        <ScaleDenominator>218.7378618</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2097152</MatrixWidth>
        <MatrixHeight>2097152</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>22</ows:Identifier>
        <ScaleDenominator>109.3689309</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>4194304</MatrixWidth>
        <MatrixHeight>4194304</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>23</ows:Identifier>
        <ScaleDenominator>54.68446545</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>8388608</MatrixWidth>
        <MatrixHeight>8388608</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>24</ows:Identifier>
        <ScaleDenominator>27.34223273</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>16777216</MatrixWidth>
        <MatrixHeight>16777216</MatrixHeight>
      </TileMatrix>
    </TileMatrixSet>


 

E.5.2      Arctic UPS WGS 84 Quad TileMatrixSet definition. JSON enconding


{
   “type”: “TileMatrixSetType”,
   “title”: “ArcticUniversalPolarStereoWGS84Quad”,
   “identifier”: “Universal Polar Stereographic WGS 84 Quad for Arctic”,
   “boundingBox”:
   {
      “type”: “BoundingBoxType”,
      “crs”: "http://www.opengis.net/def/crs/EPSG/0/5041",
      “lowerCorner”:
      [
         -14440759.350252,
         -14440759.350252
      ],
      “upperCorner”:
      [
         18440759.350252,
         18440759.350252
      ]
   },
   “supportedCRS”: "http://www.opengis.net/def/crs/EPSG/0/5041",
   “tileMatrix”:
   [
      {
         “type”: “TileMatrixType”,
         “identifier”: “0”,
         “scaleDenominator”: 458726544.4,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 1,
         “matrixHeight”: 1
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “1”,
         “scaleDenominator”: 229363272.2,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2,
         “matrixHeight”: 2
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “2”,
         “scaleDenominator”: 114681636.1,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4,
         “matrixHeight”: 4
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “3”,
         “scaleDenominator”: 57340818.05,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8,
         “matrixHeight”: 8
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “4”,
         “scaleDenominator”: 28670409.02,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16,
         “matrixHeight”: 16
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “5”,
         “scaleDenominator”: 14335204.51,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 32,
         “matrixHeight”: 32
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “6”,
         “scaleDenominator”: 7167602.256,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 64,
         “matrixHeight”: 64
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “7”,
         “scaleDenominator”: 3583801.128,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 128,
         “matrixHeight”: 128
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “8”,
         “scaleDenominator”: 1791900.564,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 256,
         “matrixHeight”: 256
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “9”,
         “scaleDenominator”: 895950.282,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 512,
         “matrixHeight”: 512
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “10”,
         “scaleDenominator”: 447975.141,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 1024,
         “matrixHeight”: 1024
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “11”,
         “scaleDenominator”: 223987.5705,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2048,
         “matrixHeight”: 2048
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “12”,
         “scaleDenominator”: 111993.7852,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4096,
         “matrixHeight”: 4096
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “13”,
         “scaleDenominator”: 55996.89262,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8192,
         “matrixHeight”: 8192
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “14”,
         “scaleDenominator”: 27998.44631,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16384,
         “matrixHeight”: 16384
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “15”,
         “scaleDenominator”: 13999.22316,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 32768,
         “matrixHeight”: 32768
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “16”,
         “scaleDenominator”: 6999.611578,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 65536,
         “matrixHeight”: 65536
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “17”,
         “scaleDenominator”: 3499.805789,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 131072,
         “matrixHeight”: 131072
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “18”,
         “scaleDenominator”: 1749.902894,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 262144,
         “matrixHeight”: 262144
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “19”,
         “scaleDenominator”: 874.9514472,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 524288,
         “matrixHeight”: 524288
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “20”,
         “scaleDenominator”: 437.4757236,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 1048576,
         “matrixHeight”: 1048576
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “21”,
         “scaleDenominator”: 218.7378618,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2097152,
         “matrixHeight”: 2097152
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “22”,
         “scaleDenominator”: 109.3689309,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4194304,
         “matrixHeight”: 4194304
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “23”,
         “scaleDenominator”: 54.68446545,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8388608,
         “matrixHeight”: 8388608
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “24”,
         “scaleDenominator”: 27.34223273,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16777216,
         “matrixHeight”: 16777216
      }
   ]
}


E.6      Antarctic Universal Polar Stereographic WGS84 Quad TileMatrixSet definition.

E.6.1      Antarctic UPS WGS84 Quad TileMatrixSet definition. XML Encoding

This is the XML definition of the UPSAntarcticWGS84Quad tile matrix set that can be reproduced by other standards needing to define a tile matrix set. Not all TileMatrix elements need to be included and including other TileMatrices for more detailed scales is possible if they follow the same pattern.


    <TileMatrixSet xml:id="UPSAntarcticWGS84Quad">
      <ows:Title>Universal Polar Stereographic WGS 84 Quad for Antarctic</ows:Title>
      <ows:Identifier>UPSAntarcticWGS84Quad</ows:Identifier>
      <ows:BoundingBox crs=“http://www.opengis.net/def/crs/EPSG/0/5042”>
         <ows:LowerCorner>-14440759.350252 -14440759.350252</ows:LowerCorner>
         <ows:UpperCorner>18440759.350252 18440759.350252</ows:UpperCorner>
      </ows:BoundingBox>
      <ows:SupportedCRS>
         http://www.opengis.net/def/crs/EPSG/0/5042
      </ows:SupportedCRS>
      <TileMatrix>
        <ows:Identifier>0</ows:Identifier>
        <ScaleDenominator>458726544.4</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1</MatrixWidth>
        <MatrixHeight>1</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>1</ows:Identifier>
        <ScaleDenominator>229363272.2</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2</MatrixWidth>
        <MatrixHeight>2</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>2</ows:Identifier>
        <ScaleDenominator>114681636.1</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>4</MatrixWidth>
        <MatrixHeight>4</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>3</ows:Identifier>
        <ScaleDenominator>57340818.05</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>8</MatrixWidth>
        <MatrixHeight>8</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>4</ows:Identifier>
        <ScaleDenominator>28670409.02</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>16</MatrixWidth>
        <MatrixHeight>16</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>5</ows:Identifier>
        <ScaleDenominator>14335204.51</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>32</MatrixWidth>
        <MatrixHeight>32</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>6</ows:Identifier>
        <ScaleDenominator>7167602.256</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>64</MatrixWidth>
        <MatrixHeight>64</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>7</ows:Identifier>
        <ScaleDenominator>3583801.128</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>128</MatrixWidth>
        <MatrixHeight>128</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>8</ows:Identifier>
        <ScaleDenominator>1791900.564</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>256</MatrixWidth>
        <MatrixHeight>256</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>9</ows:Identifier>
        <ScaleDenominator>895950.282</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>512</MatrixWidth>
        <MatrixHeight>512</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>10</ows:Identifier>
        <ScaleDenominator>447975.141</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1024</MatrixWidth>
        <MatrixHeight>1024</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>11</ows:Identifier>
        <ScaleDenominator>223987.5705</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2048</MatrixWidth>
        <MatrixHeight>2048</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>12</ows:Identifier>
        <ScaleDenominator>111993.7852</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>4096</MatrixWidth>
        <MatrixHeight>4096</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>13</ows:Identifier>
        <ScaleDenominator>55996.89262</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>8192</MatrixWidth>
        <MatrixHeight>8192</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>14</ows:Identifier>
        <ScaleDenominator>27998.44631</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>16384</MatrixWidth>
        <MatrixHeight>16384</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>15</ows:Identifier>
        <ScaleDenominator>13999.22316</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>32768</MatrixWidth>
        <MatrixHeight>32768</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>16</ows:Identifier>
        <ScaleDenominator>6999.611578</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>65536</MatrixWidth>
        <MatrixHeight>65536</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>17</ows:Identifier>
        <ScaleDenominator>3499.805789</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>131072</MatrixWidth>
        <MatrixHeight>131072</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>18</ows:Identifier>
        <ScaleDenominator>1749.902894</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>262144</MatrixWidth>
        <MatrixHeight>262144</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>19</ows:Identifier>
        <ScaleDenominator>874.9514472</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>524288</MatrixWidth>
        <MatrixHeight>524288</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>20</ows:Identifier>
        <ScaleDenominator>437.4757236</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1048576</MatrixWidth>
        <MatrixHeight>1048576</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>21</ows:Identifier>
        <ScaleDenominator>218.7378618</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2097152</MatrixWidth>
        <MatrixHeight>2097152</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>22</ows:Identifier>
        <ScaleDenominator>109.3689309</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>4194304</MatrixWidth>
        <MatrixHeight>4194304</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>23</ows:Identifier>
        <ScaleDenominator>54.68446545</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>8388608</MatrixWidth>
        <MatrixHeight>8388608</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>24</ows:Identifier>
        <ScaleDenominator>27.34223273</ScaleDenominator>
        <TopLeftCorner>-14440759.350252 18440759.350252</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>16777216</MatrixWidth>
        <MatrixHeight>16777216</MatrixHeight>
      </TileMatrix>
    </TileMatrixSet>


 

E.6.2      Antarctic UPS WGS84 Quad TileMatrixSet definition. JSON Encoding

This is the JSON definition of the UPSAntarcticWGS84Quad tile matrix set that can be reproduced by other standards needing to define a tile matrix set. Not all TileMatrix elements need to be included and including other TileMatrices for more detailed scales is possible if they follow the same pattern.


{
   “type”: “TileMatrixSetType”,
   “title”: “AntarcticUniversalPolarStereoWGS84Quad”,
   “identifier”: “Universal Polar Stereographic WGS 84 Quad for Antarctic”,
   “boundingBox”:
   {
      “type”: “BoundingBoxType”,
      “crs”: "http://www.opengis.net/def/crs/EPSG/0/5042",
      “lowerCorner”:
      [
         -14440759.350252,
         -14440759.350252
      ],
      “upperCorner”:
      [
         18440759.350252,
         18440759.350252
      ]
   },
   “supportedCRS”: "http://www.opengis.net/def/crs/EPSG/0/5042",
   “tileMatrix”:
   [
      {
         “type”: “TileMatrixType”,
         “identifier”: “0”,
         “scaleDenominator”: 458726544.4,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 1,
         “matrixHeight”: 1
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “1”,
         “scaleDenominator”: 229363272.2,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2,
         “matrixHeight”: 2
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “2”,
         “scaleDenominator”: 114681636.1,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4,
         “matrixHeight”: 4
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “3”,
         “scaleDenominator”: 57340818.05,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8,
         “matrixHeight”: 8
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “4”,
         “scaleDenominator”: 28670409.02,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16,
         “matrixHeight”: 16
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “5”,
         “scaleDenominator”: 14335204.51,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 32,
         “matrixHeight”: 32
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “6”,
         “scaleDenominator”: 7167602.256,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 64,
         “matrixHeight”: 64
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “7”,
         “scaleDenominator”: 3583801.128,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 128,
         “matrixHeight”: 128
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “8”,
         “scaleDenominator”: 1791900.564,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 256,
         “matrixHeight”: 256
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “9”,
         “scaleDenominator”: 895950.282,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 512,
         “matrixHeight”: 512
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “10”,
         “scaleDenominator”: 447975.141,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 1024,
         “matrixHeight”: 1024
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “11”,
         “scaleDenominator”: 223987.5705,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2048,
         “matrixHeight”: 2048
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “12”,
         “scaleDenominator”: 111993.7852,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4096,
         “matrixHeight”: 4096
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “13”,
         “scaleDenominator”: 55996.89262,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8192,
         “matrixHeight”: 8192
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “14”,
         “scaleDenominator”: 27998.44631,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16384,
         “matrixHeight”: 16384
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “15”,
         “scaleDenominator”: 13999.22316,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 32768,
         “matrixHeight”: 32768
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “16”,
         “scaleDenominator”: 6999.611578,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 65536,
         “matrixHeight”: 65536
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “17”,
         “scaleDenominator”: 3499.805789,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 131072,
         “matrixHeight”: 131072
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “18”,
         “scaleDenominator”: 1749.902894,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 262144,
         “matrixHeight”: 262144
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “19”,
         “scaleDenominator”: 874.9514472,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 524288,
         “matrixHeight”: 524288
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “20”,
         “scaleDenominator”: 437.4757236,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 1048576,
         “matrixHeight”: 1048576
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “21”,
         “scaleDenominator”: 218.7378618,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2097152,
         “matrixHeight”: 2097152
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “22”,
         “scaleDenominator”: 109.3689309,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4194304,
         “matrixHeight”: 4194304
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “23”,
         “scaleDenominator”: 54.68446545,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8388608,
         “matrixHeight”: 8388608
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “24”,
         “scaleDenominator”: 27.34223273,
         “topLeftCorner”:
         [
           -14440759.350252,
           18440759.350252
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16777216,
         “matrixHeight”: 16777216
      }
   ]
}


E.7      European ETRS89 LAEA Quad TileMatrixSet definition.

E.7.1      European ETRS89 LAEA Quad TileMatrixSet definition. XML Encoding

This is the XML definition of the EuropeanETRS89_LAEAQuad tile matrix set that can be reproduced by other standards needing to define a tile matrix set. Not all TileMatrix elements need to be included and including other TileMatrices for more detailed scales is possible if they follow the same pattern.


    <TileMatrixSet xml:id=“EuropeanETRS89_LAEAQuad”>
      <ows:Title>Lambert Azimuthal Equal Area ETRS89 for Europe</ows:Title>
      <ows:Identifier>EuropeanETRS89_LAEAQuad</ows:Identifier>
      <ows:BoundingBox crs=“http://www.opengis.net/def/crs/EPSG/0/3035”>
         <ows:LowerCorner>2000000.0 1000000.0</ows:LowerCorner>
         <ows:UpperCorner>6500000 5500000.0</ows:UpperCorner>
      </ows:BoundingBox>
      <ows:SupportedCRS>
         http://www.opengis.net/def/crs/EPSG/0/3035
      </ows:SupportedCRS>
      <TileMatrix>
        <ows:Identifier>0</ows:Identifier>
        <ScaleDenominator>62779017.857142866</ScaleDenominator>
        <TopLeftCorner>2000000.0 5500000.0</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1</MatrixWidth>
        <MatrixHeight>1</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>1</ows:Identifier>
        <ScaleDenominator>31389508.928571433</ScaleDenominator>
        <TopLeftCorner>2000000.0 5500000.0</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2</MatrixWidth>
        <MatrixHeight>2</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>2</ows:Identifier>
        <ScaleDenominator>15694754.464285716</ScaleDenominator>
        <TopLeftCorner>2000000.0 5500000.0</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>4</MatrixWidth>
        <MatrixHeight>4</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>3</ows:Identifier>
        <ScaleDenominator>7847377.232142858</ScaleDenominator>
        <TopLeftCorner>2000000.0 5500000.0</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>8</MatrixWidth>
        <MatrixHeight>8</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>4</ows:Identifier>
        <ScaleDenominator>3923688.616071429</ScaleDenominator>
        <TopLeftCorner>2000000.0 5500000.0</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>16</MatrixWidth>
        <MatrixHeight>16</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>5</ows:Identifier>
        <ScaleDenominator>1961844.3080357146</ScaleDenominator>
        <TopLeftCorner>2000000.0 5500000.0</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>32</MatrixWidth>
        <MatrixHeight>32</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>6</ows:Identifier>
        <ScaleDenominator>980922.1540178573</ScaleDenominator>
        <TopLeftCorner>2000000.0 5500000.0</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>64</MatrixWidth>
        <MatrixHeight>64</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>7</ows:Identifier>
        <ScaleDenominator>490461.07700892864</ScaleDenominator>
        <TopLeftCorner>2000000.0 5500000.0</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>128</MatrixWidth>
        <MatrixHeight>128</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>8</ows:Identifier>
        <ScaleDenominator>245230.53850446432</ScaleDenominator>
        <TopLeftCorner>2000000.0 5500000.0</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>256</MatrixWidth>
        <MatrixHeight>256</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>9</ows:Identifier>
        <ScaleDenominator>122615.26925223216</ScaleDenominator>
        <TopLeftCorner>2000000.0 5500000.0</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>512</MatrixWidth>
        <MatrixHeight>512</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>10</ows:Identifier>
        <ScaleDenominator>61307.63462611608</ScaleDenominator>
        <TopLeftCorner>2000000.0 5500000.0</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1024</MatrixWidth>
        <MatrixHeight>1024</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>11</ows:Identifier>
        <ScaleDenominator>30653.81731305804</ScaleDenominator>
        <TopLeftCorner>2000000.0 5500000.0</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2048</MatrixWidth>
        <MatrixHeight>2048</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>12</ows:Identifier>
        <ScaleDenominator>15326.90865652902</ScaleDenominator>
        <TopLeftCorner>2000000.0 5500000.0</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>4096</MatrixWidth>
        <MatrixHeight>4096</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>13</ows:Identifier>
        <ScaleDenominator>7663.45432826451</ScaleDenominator>
        <TopLeftCorner>2000000.0 5500000.0</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>8192</MatrixWidth>
        <MatrixHeight>8192</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>14</ows:Identifier>
        <ScaleDenominator>3831.727164132255</ScaleDenominator>
        <TopLeftCorner>2000000.0 5500000.0</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>16384</MatrixWidth>
        <MatrixHeight>16384</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>15</ows:Identifier>
        <ScaleDenominator>1915.8635820661275</ScaleDenominator>
        <TopLeftCorner>2000000.0 5500000.0</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>32768</MatrixWidth>
        <MatrixHeight>32768</MatrixHeight>
      </TileMatrix>
    </TileMatrixSet>


 

E.7.2      European ETRS89 LAEA Quad TileMatrixSet definition. JSON Encoding

This is the JSON definition of the EuropeanETRS89_LAEAQuad tile matrix set that can be reproduced by other standards needing to define a tile matrix set. Not all TileMatrix elements need to be included and including other TileMatrices for more detailed scales is possible if they follow the same pattern.


{
   “type”: “TileMatrixSetType”,
   “title”: “Lambert Azimuthal Equal Area ETRS89 for Europe”,
   “identifier”: “EuropeanETRS89_LAEAQuad”,
   “boundingBox”:
   {
      “type”: “BoundingBoxType”,
      “crs”: “http://www.opengis.net/def/crs/EPSG/0/3035”,
      “lowerCorner”:
      [
         2000000.0,
         1000000.0
      ],
      “upperCorner”:
      [
         6500000.0,
         5500000.0
      ]
   },
   “supportedCRS”: “http://www.opengis.net/def/crs/EPSG/0/3035”,
   “tileMatrix”:
   [
      {
         “type”: “TileMatrixType”,
         “identifier”: “0”,
         “scaleDenominator”: 62779017.8571428,
         “topLeftCorner”:
         [
           2000000.0,
           5500000.0
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 1,
         “matrixHeight”: 1
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “1”,
         “scaleDenominator”: 31389508.9285714,
         “topLeftCorner”:
         [
           2000000.0,
           5500000.0
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2,
         “matrixHeight”: 2
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “2”,
         “scaleDenominator”: 15694754.4642857,
         “topLeftCorner”:
         [
           2000000.0,
           5500000.0
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4,
         “matrixHeight”: 4
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “3”,
         “scaleDenominator”: 7847377.23214285,
         “topLeftCorner”:
         [
           2000000.0,
           5500000.0
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8,
         “matrixHeight”: 8
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “4”,
         “scaleDenominator”: 3923688.61607142,
         “topLeftCorner”:
         [
           2000000.0,
           5500000.0
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16,
         “matrixHeight”: 16
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “5”,
         “scaleDenominator”: 1961844.30803571,
         “topLeftCorner”:
         [
           2000000.0,
           5500000.0
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 32,
         “matrixHeight”: 32
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “6”,
         “scaleDenominator”: 980922.154017857,
         “topLeftCorner”:
         [
           2000000.0,
           5500000.0
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 64,
         “matrixHeight”: 64
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “7”,
         “scaleDenominator”: 490461.077008928,
         “topLeftCorner”:
         [
           2000000.0,
           5500000.0
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 128,
         “matrixHeight”: 128
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “8”,
         “scaleDenominator”: 245230.538504464,
         “topLeftCorner”:
         [
           2000000.0,
           5500000.0
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 256,
         “matrixHeight”: 256
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “9”,
         “scaleDenominator”: 122615.269252232,
         “topLeftCorner”:
         [
           2000000.0,
           5500000.0
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 512,
         “matrixHeight”: 512
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “10”,
         “scaleDenominator”: 61307.634626116,
         “topLeftCorner”:
         [
           2000000.0,
           5500000.0
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 1024,
         “matrixHeight”: 1024
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “11”,
         “scaleDenominator”: 30653.817313058,
         “topLeftCorner”:
         [
           2000000.0,
           5500000.0
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2048,
         “matrixHeight”: 2048
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “12”,
         “scaleDenominator”: 15326.908656529,
         “topLeftCorner”:
         [
           2000000.0,
           5500000.0
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4096,
         “matrixHeight”: 4096
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “13”,
         “scaleDenominator”: 7663.45432826451,
         “topLeftCorner”:
         [
           2000000.0,
           5500000.0
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8192,
         “matrixHeight”: 8192
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “14”,
         “scaleDenominator”: 3831.72716413225,
         “topLeftCorner”:
         [
           2000000.0,
           5500000.0
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16384,
         “matrixHeight”: 16384
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “15”,
         “scaleDenominator”: 1915.86358206612,
         “topLeftCorner”:
         [
           2000000.0,
           5500000.0
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 32768,
         “matrixHeight”: 32768
      }
   ]
}


 

E.8      Canadian Lambert Conformal Conic NAD83 TileMatrixSet definition.

E.8.1      Canadian Lambert Conformal Conic NAD83 TileMatrixSet definition. XML Encoding

This is the XML definition of the CanadianNAD83_LCC tile matrix set that can be reproduced by other standards needing to define a tile matrix set. Not all TileMatrix elements need to be included and including other TileMatrices for more detailed scales is possible if they follow the same pattern.


   <TileMatrixSet xml:id="CanadianNAD83_LCC">
      <ows:Title>Lambert Conformal Conic NAD83 for Canada</ows:Title>
      <ows:Identifier>CanadianNAD83_LCC</ows:Identifier>
      <ows:BoundingBox crs=“http://www.opengis.net/def/crs/EPSG/0/3978”>
         <ows:LowerCorner>-7786476.885838887 -5153821.09213678</ows:LowerCorner>
         <ows:UpperCorner>7148753.233541353 7928343.534071138</ows:UpperCorner>
      </ows:BoundingBox>
      <ows:SupportedCRS>
         http://www.opengis.net/def/crs/EPSG/0/3978
       </ows:SupportedCRS>
      <TileMatrix>
        <ows:Identifier>0</ows:Identifier>
        <ScaleDenominator>137016643.080905</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>5</MatrixWidth>
        <MatrixHeight>5</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>1</ows:Identifier>
        <ScaleDenominator>80320101.1163925</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>8</MatrixWidth>
        <MatrixHeight>8</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>2</ows:Identifier>
        <ScaleDenominator>47247118.3037603</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>13</MatrixWidth>
        <MatrixHeight>14</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>3</ows:Identifier>
        <ScaleDenominator>28348270.9822562</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>21</MatrixWidth>
        <MatrixHeight>22</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>4</ows:Identifier>
        <ScaleDenominator>16536491.4063161</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>36</MatrixWidth>
        <MatrixHeight>38</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>5</ows:Identifier>
        <ScaleDenominator>9449423.66075207</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>62</MatrixWidth>
        <MatrixHeight>66</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>6</ows:Identifier>
        <ScaleDenominator>5669654.19645125</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>103</MatrixWidth>
        <MatrixHeight>110</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>7</ows:Identifier>
        <ScaleDenominator>3307298.28126323</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>177</MatrixWidth>
        <MatrixHeight>188</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>8</ows:Identifier>
        <ScaleDenominator>1889884.73215041</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>309</MatrixWidth>
        <MatrixHeight>329</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>9</ows:Identifier>
        <ScaleDenominator>1133930.83929025</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>515</MatrixWidth>
        <MatrixHeight>548</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>10</ows:Identifier>
        <ScaleDenominator>661459.656252643</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>882</MatrixWidth>
        <MatrixHeight>938</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>11</ows:Identifier>
        <ScaleDenominator>396875.793751586</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1470</MatrixWidth>
        <MatrixHeight>1563</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>12</ows:Identifier>
        <ScaleDenominator>236235.591518802</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2469</MatrixWidth>
        <MatrixHeight>2626</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>13</ows:Identifier>
        <ScaleDenominator>137016.643080905</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>4257</MatrixWidth>
        <MatrixHeight>4528</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>14</ows:Identifier>
        <ScaleDenominator>80320.1011163925</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>7262</MatrixWidth>
        <MatrixHeight>7723</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>15</ows:Identifier>
        <ScaleDenominator>47247.1183037603</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>12344</MatrixWidth>
        <MatrixHeight>13130</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>16</ows:Identifier>
        <ScaleDenominator>28348.2709822562</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>20574</MatrixWidth>
        <MatrixHeight>21882</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>17</ows:Identifier>
        <ScaleDenominator>16536.4914063161</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>35269</MatrixWidth>
        <MatrixHeight>37512</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>18</ows:Identifier>
        <ScaleDenominator>9449.42366075207</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>61720</MatrixWidth>
        <MatrixHeight>65646</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>19</ows:Identifier>
        <ScaleDenominator>5669.65419645125</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>102866</MatrixWidth>
        <MatrixHeight>109409</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>20</ows:Identifier>
        <ScaleDenominator>3307.29828126323</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>176341</MatrixWidth>
        <MatrixHeight>187558</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>21</ows:Identifier>
        <ScaleDenominator>1889.88473215041</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>308596</MatrixWidth>
        <MatrixHeight>328227</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>22</ows:Identifier>
        <ScaleDenominator>1133.93083929025</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>514327</MatrixWidth>
        <MatrixHeight>547044</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>23</ows:Identifier>
        <ScaleDenominator>661.459656252643</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>881703</MatrixWidth>
        <MatrixHeight>937790</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>24</ows:Identifier>
        <ScaleDenominator>396.875793751586</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>1469505</MatrixWidth>
        <MatrixHeight>1562983</MatrixHeight>
      </TileMatrix>
      <TileMatrix>
        <ows:Identifier>25</ows:Identifier>
        <ScaleDenominator>236.235591518802</ScaleDenominator>
        <TopLeftCorner>-34655800 39310000</TopLeftCorner>
        <TileWidth>256</TileWidth>
        <TileHeight>256</TileHeight>
        <MatrixWidth>2468768</MatrixWidth>
        <MatrixHeight>2625811</MatrixHeight>
      </TileMatrix>
   </TileMatrixSet>


 

E.8.2      Canadian Lambert Conformal Conic NAD83 TileMatrixSet definition. JSON Encoding

This is the JSON definition of the CanadianNAD83_LCC tile matrix set that can be reproduced by other standards needing to define a tile matrix set. Not all TileMatrix elements need to be included and including other TileMatrices for more detailed scales is possible if they follow the same pattern.


{
   “type”: “TileMatrixSetType”,
   “title”: “Lambert conformal conic NAD83 for Canada”,
   “identifier”: “CanadianNAD83_LCC”,
   “boundingBox”:
   {
      “type”: “BoundingBoxType”,
      “crs”: “http://www.opengis.net/def/crs/EPSG/0/3978”,
      “lowerCorner”:
      [
         -7786476.885838887,
         -5153821.09213678
      ],
      “upperCorner”:
      [
         7148753.233541353,
         7928343.534071138
      ]
   },
   “supportedCRS”: “http://www.opengis.net/def/crs/EPSG/0/3978”,
   “tileMatrix”:
   [
      {
         “type”: “TileMatrixType”,
         “identifier”: “0”,
         “scaleDenominator”: 145000000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 5,
         “matrixHeight”: 5
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “1”,
         “scaleDenominator”: 85000000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8,
         “matrixHeight”: 8
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “2”,
         “scaleDenominator”: 50000000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 13,
         “matrixHeight”: 14
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “3”,
         “scaleDenominator”: 30000000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 21,
         “matrixHeight”: 22
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “4”,
         “scaleDenominator”: 17500000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 36,
         “matrixHeight”: 38
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “5”,
         “scaleDenominator”: 10000000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 62,
         “matrixHeight”: 66
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “6”,
         “scaleDenominator”: 6000000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 103,
         “matrixHeight”: 110
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “7”,
         “scaleDenominator”: 3500000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 177,
         “matrixHeight”: 188
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “8”,
         “scaleDenominator”: 2000000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 309,
         “matrixHeight”: 329
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “9”,
         “scaleDenominator”: 1200000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 515,
         “matrixHeight”: 548
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “10”,
         “scaleDenominator”: 700000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 882,
         “matrixHeight”: 938
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “11”,
         “scaleDenominator”: 420000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 1470,
         “matrixHeight”: 1563
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “12”,
         “scaleDenominator”: 250000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2469,
         “matrixHeight”: 2626
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “13”,
         “scaleDenominator”: 145000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4257,
         “matrixHeight”: 4528
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “14”,
         “scaleDenominator”: 85000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 7262,
         “matrixHeight”: 7723
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “15”,
         “scaleDenominator”: 50000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 12344,
         “matrixHeight”: 13130
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “16”,
         “scaleDenominator”: 30000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 20574,
         “matrixHeight”: 21882
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “17”,
         “scaleDenominator”: 17500,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 35269,
         “matrixHeight”: 37512
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “18”,
         “scaleDenominator”: 10000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 61720,
         “matrixHeight”: 65646
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “19”,
         “scaleDenominator”: 6000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 102866,
         “matrixHeight”: 109409
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “20”,
         “scaleDenominator”: 3500,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 176341,
         “matrixHeight”: 187558
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “21”,
         “scaleDenominator”: 2000,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 308596,
         “matrixHeight”: 328227
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “22”,
         “scaleDenominator”: 1200,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 514327,
         “matrixHeight”: 547044
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “23”,
         “scaleDenominator”: 700,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 881703,
         “matrixHeight”: 937790
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “24”,
         “scaleDenominator”: 420,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 1469505,
         “matrixHeight”: 1562983
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “25”,
         “scaleDenominator”: 250,
         “topLeftCorner”:
         [
           -34655800,
           39310000
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2468768,
         “matrixHeight”: 2625811
      }
   ]
}


 

 

Annex F           Example encodings for TileMatrixSetLink2D (Informative)

This informative Annex provides an example of use for TileMatrixSetLink2D and TileMatrixSetLimits2D data structures.

F.1      XML document instance using TileMatrixSetLink2D

TileMatrixSetLink2D data structure can be used for a resource to specify the tiling schema the resource supports. Eventually, the resource can only be available in a fragment of the tiled space and to specify that, the TileMatrixSetLimits2D data structure is populated. This example illustrates and instance encoded in XML.


<?xml version=“1.0” encoding=“UTF-8”?>
<LayerExample xmlns=“http://www.opengis.net/tms/1.0/link_xmp” xmlns:tms=“http://www.opengis.net/tms/1.0” xmlns:ows=“http://www.opengis.net/ows/2.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=“http://www.opengis.net/tms/1.0/link_xmp LayerWithTMSLink.xsd”>
<ows:Title>Catalonia</ows:Title>
<ows:Abstract>Catalonia Extent</ows:Abstract>
<ows:WGS84BoundingBox>
   <ows:LowerCorner>-1.062 38.198</ows:LowerCorner>
   <ows:UpperCorner>4.827 43.748</ows:UpperCorner>
</ows:WGS84BoundingBox>
<ows:Identifier>Cat</ows:Identifier>
<tms:TileMatrixSetLink>
   <tms:TileMatrixSet>WorldCRS84Quad</tms:TileMatrixSet>
   <tms:TileMatrixSetLimits>
      <tms:TileMatrixLimits>
         <tms:TileMatrix>3</tms:TileMatrix>
         <tms:MinTileRow>4</tms:MinTileRow>
         <tms:MaxTileRow>5</tms:MaxTileRow>
         <tms:MinTileCol>2</tms:MinTileCol>
         <tms:MaxTileCol>2</tms:MaxTileCol>
      </tms:TileMatrixLimits>
      <tms:TileMatrixLimits>
         <tms:TileMatrix>4</tms:TileMatrix>
         <tms:MinTileRow>8</tms:MinTileRow>
         <tms:MaxTileRow>9</tms:MaxTileRow>
         <tms:MinTileCol>4</tms:MinTileCol>
         <tms:MaxTileCol>4</tms:MaxTileCol>
      </tms:TileMatrixLimits>
   </tms:TileMatrixSetLimits>
</tms:TileMatrixSetLink>
</LayerExample>


 

F.2      XML schema used to validate the previous XML document

The TileMatrixSetLink2D data structure can be included in the definition of a resource data model. This XML Schema fragment illustrates how this standard XML schemas can be used in conjunction with the resource schemas.


<schema xmlns=“http://www.w3.org/2001/XMLSchema” xmlns:xmp=“http://www.opengis.net/tms/1.0/link_xmp” xmlns:tms=“http://www.opengis.net/tms/1.0” xmlns:ows=“http://www.opengis.net/ows/2.0” xmlns:xlink=“http://www.w3.org/1999/xlink” targetNamespace=“http://www.opengis.net/tms/1.0/link_xmp” elementFormDefault=“qualified” xml:lang=“en”>
   <annotation>
      <appinfo>TMS Link example 2019-02-02</appinfo>
      <documentation>
         This XML Schema Document encodes the TileMatrisSet data structures.
         TMS is an OGC Standard Copyright (c) 2019 Open Geospatial Consortium, Inc. All Rights Reserved.
          To obtain additional rights of use, visit http://www.opengeospatial.org/legal/.
      </documentation>
   </annotation>
   <!– *********************************************************************
                Includes and imports.                           
          ********************************************************************* –>
   <import namespace=“http://www.opengis.net/tms/1.0” schemaLocation=“../tms.xsd”/>
   <import namespace=“http://www.opengis.net/ows/2.0” schemaLocation=“../../../../ows/2.0/owsAll.xsd”/>
   <import namespace=“http://www.w3.org/1999/xlink” schemaLocation=“../../../../xlink/1.0.0/xlinks.xsd”/>
   <!– ********************************************************************* –>
   <!– **  The Layer Example element.                                      ** –>
   <!– ********************************************************************* –>
   <element name=“LayerExample” type=“xmp:LayerTypeExample” substitutionGroup=“ows:DatasetDescriptionSummary”/>
   <complexType name=“LayerTypeExample”>
      <annotation>
         <documentation>Example of a Layer tht links to TMS Link</documentation>
      </annotation>
      <complexContent>
         <extension base=“ows:DatasetDescriptionSummaryBaseType”>
           <sequence>
              <element ref=“tms:TileMatrixSetLink” minOccurs=“0” maxOccurs=“unbounded”>
                 <annotation>
                    <documentation>Link to a tile mateix set</documentation>
                 </annotation>
              </element>
           </sequence>
         </extension>
      </complexContent>
   </complexType>
</schema>


 

F.3      JSON document instance using TileMatrisSetLink2D

TileMatrixSetLink2D data structure can be used for a resource to specify the tiling schema the resource supports. Eventually, the resource can only be available in a fragment of the tiled space and to specify that, the TileMatrixSetLimits2D data structure is populated. This example illustrates and instance encoded in JSON.


{
   “title”: “Catalonia”,
   “identifier”: “Cat”,
   “tileMatrixSetLink”: {
      “type”: “TileMatrixSetLink”,
      “tileMatrixSet”: “WorldCRS84Quad”,
      “tileMatrixSetLimits”: [{
         “type”: “TileMatrixLimits”,
         “tileMatrix”: “3”,
         “minTileRow”: 4,
         “maxTileRow”: 5,
         “minTileCol”: 2,
         “maxTileCol”: 2
      },{
         “type”: “TileMatrixLimits”,
         “tileMatrix”: “4”,
         “minTileRow”: 8,
         “maxTileRow”: 9,
         “minTileCol”: 4,
         “maxTileCol”: 4
      }]
   }
}


 

F.4      JSON schema used to validate the previous JSON document

The TileMatrixSetLink2D data structure can be included in the definition of a resource data model. This JSON Schema fragment illustrates how this standard JSON schemas can be used in conjunction with the resource schemas.

 


{
   “$schema”: “http://json-schema.org/draft-04/schema#”,
   “title”: “”,
   “description”: “”,
   “type”: “object”,
   “properties”: {
      “title”: {
         “description”: “Title of this resource, normally used for display to a human”,
         “type”: “string”
      },
      “abstract”: {
         “description”: “Brief narrative description of this resource, normally available for display to a human”,
         “type”: “string”
      },
      “identifier”: {
         “description”: “Resource identifier”,
         “type”: “string”
      },
      “tileMatrixSetLink”: {
         “description”: “Tile Matrix Set Link data structure”,
         “$ref”: “#/definitions/tileMatrixSetLink”
      }
   },
   “definitions”:{
      “tileMatrixSetLink”: {
         “type”: “object”,
         “required”: [“type”, “tileMatrixSet”],
         “properties”: {
           “type”: {
              “description”: “Type of the Tile Matrix Set Link”,
              “enum”: [“TileMatrixSetLink”]
           },
           “tileMatrixSet”: {
              “description”: “Reference to a tileMatrixSet”,
              “type”: “string”
           },
           “tileMatrixSetLimits”: {
              “description”: “Index limits for this tileMatrixSet”,
              “type”: “array”,
              “items”: {
                 “$ref”: “#/definitions/tileMatrixSetLimits”
              }
           }
         }
      },
      “tileMatrixSetLimits”: {
         “type”: “object”,
         “required”: [“type”, “tileMatrix”, “minTileRow”, “maxTileRow”, “minTileCol”, “maxTileCol”],
         “properties”: {
           “type”: {
              “description”: “Type of the Tile Matrix Set Limits”,
              “enum”: [“TileMatrixLimits”]
           },
           “tileMatrix”: {
              “description”: “Reference to a tileMatrix identifier”,
              “type”: “string”
           },
           “minTileRow”: {
              “description”: “Minimum tile row index valid for this layer”,
              “type”: “number”,
              “minimum”: 0,
              “multipleOf” : 1
           },
           “maxTileRow”: {
              “description”: “Maximim tile row index valid for this layer”,
              “type”: “number”,
              “minimum”: 0,
              “multipleOf” : 1
           },
           “minTileCol”: {
              “description”: “Minimum tile column index valid for this layer”,
              “type”: “number”,
              “minimum”: 0,
              “multipleOf” : 1
           },
           “maxTileCol”: {
              “description”: “Maximim tile column index valid for this layer”,
              “type”: “number”,
              “minimum”: 0,
              “multipleOf” : 1
           }
         }
      }
   }
}


 

 

Annex G          Example encodings for JSON-LD  (Informative)

This informative Annex provides an example of JSON-LD TileMatrixSet2D and the corresponding result in RDF Turtle.

G.1     JSON-LD document instance

Example of JSON-LD document instance. @context documents have been included when necessary and the identifiers have been qualified with a namespace ensuring a good transformation to RDF using a JSON-LD engine. The complete example can be found in the supplemental material described in Annex B.


{
   “@context”: [“http://localhost/json-ld/tms-context.json”, {“example”: “http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/”}],
   “type”: “TileMatrixSetType”,
   “title”: “CRS84 for the World”,
   “identifier”: “example:”,
   “boundingBox”:
   {
      “@context”: “http://localhost/json-ld/tms-boundingbox-context.json”,
      “@id”: “example:BoundingBox”,
      “type”: “BoundingBoxType”,
      “crs”: “http://www.opengis.net/def/crs/OGC/1.3/CRS84”,
      “lowerCorner”:
      [
         -180,
         -90
      ],
      “upperCorner”:
      [
         180,
         90
      ]
   },
   “supportedCRS”: “http://www.opengis.net/def/crs/OGC/1.3/CRS84”,
   “wellKnownScaleSet”: “http://www.opengis.net/def/wkss/OGC/1.0/GoogleCRS84Quad”,
   “tileMatrix”:
   [
      {
         “@context”: “http://localhost/json-ld/tms-tilematrix-context.json”,
         “type”: “TileMatrixType”,
         “identifier”: “example:0”,
         “scaleDenominator”: 279541132.014358,
         “topLeftCorner”:
         [
           -180,
           90
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 2,
         “matrixHeight”: 1
      },
      {
         “@context”: “http://localhost/json-ld/tms-tilematrix-context.json”,
         “type”: “TileMatrixType”,
         “identifier”: “example:1”,
         “scaleDenominator”: 139770566.007179,
         “topLeftCorner”:
         [
           -180,
           90
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4,
         “matrixHeight”: 2
      },
      {
         “@context”: “http://localhost/json-ld/tms-tilematrix-context.json”,
         “type”: “TileMatrixType”,
         “identifier”: “example:2”,
         “scaleDenominator”: 69885283.0035897,
         “topLeftCorner”:
         [
           -180,
            90
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8,
         “matrixHeight”: 4
      },
      {
         “@context”: “http://localhost/json-ld/tms-tilematrix-context.json”,
         “type”: “TileMatrixType”,
         “identifier”: “example:3”,
         “scaleDenominator”: 34942641.5017948,
         “topLeftCorner”:
         [
           -180,
           90
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16,
         “matrixHeight”: 8
      },
      {
         “@context”: “http://localhost/json-ld/tms-tilematrix-context.json”,
         “type”: “TileMatrixType”,
         “identifier”: “example:4”,
         “scaleDenominator”: 17471320.7508974,
         “topLeftCorner”:
         [
           -180,
           90
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 32,
         “matrixHeight”: 16
      },
      {
         “@context”: “http://localhost/json-ld/tms-tilematrix-context.json”,
         “type”: “TileMatrixType”,
         “identifier”: “example:5”,
         “scaleDenominator”: 8735660.37544871,
         “topLeftCorner”:
         [
           -180,
           90
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 64,
         “matrixHeight”: 32
      },
      {
         “@context”: “http://localhost/json-ld/tms-tilematrix-context.json”,
         “type”: “TileMatrixType”,
         “identifier”: “example:6”,
         “scaleDenominator”: 4367830.18772435,
         “topLeftCorner”:
         [
            -180,
           90
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 128,
         “matrixHeight”: 64
      }
   ]
}


 

G.2     N3 turtle document

This document has been automatically generated by the JSON-DL Playground ( https://json-ld.org/playground/) by providing the document in subsection G.1 as input. The complete example can be found in the supplemental material described in Annex B.


<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/0> <http://www.opengis.net/tms/1.0/matrixHeight> “1”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/0> <http://www.opengis.net/tms/1.0/matrixWidth> “2”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/0> <http://www.opengis.net/tms/1.0/scaleDenominator> “2.79541132014358E8”^^<http://www.w3.org/2001/XMLSchema#double> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/0> <http://www.opengis.net/tms/1.0/tileHeight> “256”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/0> <http://www.opengis.net/tms/1.0/tileWidth> “256”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/0> <http://www.opengis.net/tms/1.0/topLeftCorner> _:b7 .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/0> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.opengis.net/tms/1.0/TileMatrixType> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/1> <http://www.opengis.net/tms/1.0/matrixHeight> “2”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/1> <http://www.opengis.net/tms/1.0/matrixWidth> “4”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/1> <http://www.opengis.net/tms/1.0/scaleDenominator> “1.39770566007179E8”^^<http://www.w3.org/2001/XMLSchema#double> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/1> <http://www.opengis.net/tms/1.0/tileHeight> “256”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/1> <http://www.opengis.net/tms/1.0/tileWidth> “256”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/1> <http://www.opengis.net/tms/1.0/topLeftCorner> _:b9 .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.opengis.net/tms/1.0/TileMatrixType> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/2> <http://www.opengis.net/tms/1.0/matrixHeight> “4”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/2> <http://www.opengis.net/tms/1.0/matrixWidth> “8”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/2> <http://www.opengis.net/tms/1.0/scaleDenominator> “6.98852830035897E7”^^<http://www.w3.org/2001/XMLSchema#double> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/2> <http://www.opengis.net/tms/1.0/tileHeight> “256”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/2> <http://www.opengis.net/tms/1.0/tileWidth> “256”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/2> <http://www.opengis.net/tms/1.0/topLeftCorner> _:b11 .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.opengis.net/tms/1.0/TileMatrixType> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/3> <http://www.opengis.net/tms/1.0/matrixHeight> “8”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/3> <http://www.opengis.net/tms/1.0/matrixWidth> “16”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/3> <http://www.opengis.net/tms/1.0/scaleDenominator> “3.49426415017948E7”^^<http://www.w3.org/2001/XMLSchema#double> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/3> <http://www.opengis.net/tms/1.0/tileHeight> “256”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/3> <http://www.opengis.net/tms/1.0/tileWidth> “256”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/3> <http://www.opengis.net/tms/1.0/topLeftCorner> _:b13 .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/3> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.opengis.net/tms/1.0/TileMatrixType> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/4> <http://www.opengis.net/tms/1.0/matrixHeight> “16”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/4> <http://www.opengis.net/tms/1.0/matrixWidth> “32”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/4> <http://www.opengis.net/tms/1.0/scaleDenominator> “1.74713207508974E7”^^<http://www.w3.org/2001/XMLSchema#double> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/4> <http://www.opengis.net/tms/1.0/tileHeight> “256”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/4> <http://www.opengis.net/tms/1.0/tileWidth> “256”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/4> <http://www.opengis.net/tms/1.0/topLeftCorner> _:b15 .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/4> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.opengis.net/tms/1.0/TileMatrixType> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/5> <http://www.opengis.net/tms/1.0/matrixHeight> “32”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/5> <http://www.opengis.net/tms/1.0/matrixWidth> “64”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/5> <http://www.opengis.net/tms/1.0/scaleDenominator> “8.735660375448709E6”^^<http://www.w3.org/2001/XMLSchema#double> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/5> <http://www.opengis.net/tms/1.0/tileHeight> “256”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/5> <http://www.opengis.net/tms/1.0/tileWidth> “256”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/5> <http://www.opengis.net/tms/1.0/topLeftCorner> _:b17 .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/5> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.opengis.net/tms/1.0/TileMatrixType> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/6> <http://www.opengis.net/tms/1.0/matrixHeight> “64”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/6> <http://www.opengis.net/tms/1.0/matrixWidth> “128”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/6> <http://www.opengis.net/tms/1.0/scaleDenominator> “4.36783018772435E6”^^<http://www.w3.org/2001/XMLSchema#double> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/6> <http://www.opengis.net/tms/1.0/tileHeight> “256”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/6> <http://www.opengis.net/tms/1.0/tileWidth> “256”^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/6> <http://www.opengis.net/tms/1.0/topLeftCorner> _:b19 .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/6> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.opengis.net/tms/1.0/TileMatrixType> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/> <http://www.opengis.net/tms/1.0/boundingBox> <http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/BoundingBox> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/> <http://www.opengis.net/tms/1.0/supportedCRS> <http://www.opengis.net/def/crs/OGC/1.3/CRS84> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/> <http://www.opengis.net/tms/1.0/tileMatrix> _:b0 .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/> <http://www.opengis.net/tms/1.0/title> “CRS84 for the World” .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/> <http://www.opengis.net/tms/1.0/wellKnownScaleSet> <http://www.opengis.net/def/wkss/OGC/1.0/GoogleCRS84Quad> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.opengis.net/tms/1.0/TileMatrixSetType> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/BoundingBox> <http://www.opengis.net/tms/1.0/crs> <http://www.opengis.net/def/crs/OGC/1.3/CRS84> .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/BoundingBox> <http://www.opengis.net/tms/1.0/lowerCorner> _:b21 .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/BoundingBox> <http://www.opengis.net/tms/1.0/upperCorner> _:b23 .
<http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/BoundingBox> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.opengis.net/tms/1.0/BoundingBoxType> .
_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/0> .
_:b0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b1 .
_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/1> .
_:b1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b2 .
_:b10 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> “9.0E1”^^<http://www.w3.org/2001/XMLSchema#double> .
_:b10 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
_:b11 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> “-1.8E2”^^<http://www.w3.org/2001/XMLSchema#double> .
_:b11 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b12 .
_:b12 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> “9.0E1”^^<http://www.w3.org/2001/XMLSchema#double> .
_:b12 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
_:b13 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> “-1.8E2”^^<http://www.w3.org/2001/XMLSchema#double> .
_:b13 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b14 .
_:b14 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> “9.0E1”^^<http://www.w3.org/2001/XMLSchema#double> .
_:b14 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
_:b15 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> “-1.8E2”^^<http://www.w3.org/2001/XMLSchema#double> .
_:b15 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b16 .
_:b16 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> “9.0E1”^^<http://www.w3.org/2001/XMLSchema#double> .
_:b16 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
_:b17 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> “-1.8E2”^^<http://www.w3.org/2001/XMLSchema#double> .
_:b17 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b18 .
_:b18 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> “9.0E1”^^<http://www.w3.org/2001/XMLSchema#double> .
_:b18 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
_:b19 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> “-1.8E2”^^<http://www.w3.org/2001/XMLSchema#double> .
_:b19 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b20 .
_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/2> .
_:b2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b3 .
_:b20 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> “9.0E1”^^<http://www.w3.org/2001/XMLSchema#double> .
_:b20 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
_:b21 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> “-1.8E2”^^<http://www.w3.org/2001/XMLSchema#double> .
_:b21 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b22 .
_:b22 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> “-9.0E1”^^<http://www.w3.org/2001/XMLSchema#double> .
_:b22 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
_:b23 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> “-1.8E2”^^<http://www.w3.org/2001/XMLSchema#double> .
_:b23 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b24 .
_:b24 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> “-9.0E1”^^<http://www.w3.org/2001/XMLSchema#double> .
_:b24 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/3> .
_:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b4 .
_:b4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/4> .
_:b4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b5 .
_:b5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/5> .
_:b5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b6 .
_:b6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://www.opengis.net/tms/1.0/example/WorldCRS84Quad/6> .
_:b6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
_:b7 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> “-1.8E2”^^<http://www.w3.org/2001/XMLSchema#double> .
_:b7 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b8 .
_:b8 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> “9.0E1”^^<http://www.w3.org/2001/XMLSchema#double> .
_:b8 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
_:b9 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> “-1.8E2”^^<http://www.w3.org/2001/XMLSchema#double> .
_:b9 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:b10 .


 

G.3     JSON-LD @context document example

This is the tms-context.json document that is included at the beginning of a JSON TileMatrixSet2D instance to transform it into a JSON-LD file. Other similar @context documents are included in other sections and are provided as supplementary material to this document as explained in Annex B.


{
   “@context”:
   {
      “tms”: “http://www.opengis.net/tms/1.0/”,
      “identifier”: “@id”,
      “type”: “@type”,
      “title”: “tms:title”,
      “abstract”: “tms:abstract”,
      “boundingBox”: “tms:boundingBox”,
      “TileMatrixSetType”: “tms:TileMatrixSetType”,
      “supportedCRS”:
      {
         “@id”: “tms:supportedCRS”,
         “@type”: “@id”
      },
      “wellKnownScaleSet”:
      {
         “@id”: “tms:wellKnownScaleSet”,
         “@type”: “@id”
      },
      “tileMatrix”:
      {
         “@id”: “tms:tileMatrix”,
         “@container”: “@list”
      }
   }
}


 

 

Annex H          Example encodings for Variable Matrix Width (Informative)

This informative Annex provides an example of the Variable Matrix Width extension. In this case, the variable matrix width is applied only to the tile matrix with identifier 3 and 4.

H.1     XML document instance using VariableMatrixWidth


<?xml version=“1.0” encoding=“UTF-8”?>
<TileMatrixSet id="WorldCRS84Quad" xmlns="http://www.opengis.net/tms/1.0" 
xmlns:ows="http://www.opengis.net/ows/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/tms/1.0 ../tms.xsd">
   <ows:Title>CRS84 for the World</ows:Title>
   <ows:Identifier>WorldCRS84Quad</ows:Identifier>
   <ows:BoundingBox crs="http://www.opengis.net/def/crs/OGC/1.3/CRS84">
      <ows:LowerCorner>-180 -90</ows:LowerCorner>
      <ows:UpperCorner>180 90</ows:UpperCorner>
   </ows:BoundingBox>
   <ows:SupportedCRS>
            http://www.opengis.net/def/crs/OGC/1.3/CRS84
         </ows:SupportedCRS>
   <WellKnownScaleSet>
            http://www.opengis.net/def/wkss/OGC/1.0/GoogleCRS84Quad
         </WellKnownScaleSet>
   <TileMatrix>
      <ows:Identifier>1</ows:Identifier>
      <ScaleDenominator>279541132.0143589</ScaleDenominator>
      <TopLeftCorner>-180 90</TopLeftCorner>
      <TileWidth>256</TileWidth>
      <TileHeight>256</TileHeight>
      <MatrixWidth>2</MatrixWidth>
      <MatrixHeight>1</MatrixHeight>
   </TileMatrix>
   <TileMatrix>
      <ows:Identifier>2</ows:Identifier>
      <ScaleDenominator>139770566.0071794</ScaleDenominator>
      <TopLeftCorner>-180 90</TopLeftCorner>
      <TileWidth>256</TileWidth>
      <TileHeight>256</TileHeight>
      <MatrixWidth>4</MatrixWidth>
      <MatrixHeight>2</MatrixHeight>
   </TileMatrix>
   <TileMatrix>
      <ows:Identifier>3</ows:Identifier>
      <ScaleDenominator>69885283.00358972</ScaleDenominator>
      <TopLeftCorner>-180 90</TopLeftCorner>
      <TileWidth>256</TileWidth>
      <TileHeight>256</TileHeight>
      <MatrixWidth>8</MatrixWidth>
      <MatrixHeight>4</MatrixHeight>
      <VariableMatrixWidth>
         <Coalesce>2</Coalesce>
         <MinTileRow>0</MinTileRow>
         <MaxTileRow>0</MaxTileRow>
      </VariableMatrixWidth>
      <VariableMatrixWidth>
         <Coalesce>2</Coalesce>
         <MinTileRow>3</MinTileRow>
         <MaxTileRow>3</MaxTileRow>
      </VariableMatrixWidth>
   </TileMatrix>
   <TileMatrix>
      <ows:Identifier>4</ows:Identifier>
      <ScaleDenominator>34942641.50179486</ScaleDenominator>
      <TopLeftCorner>-180 90</TopLeftCorner>
      <TileWidth>256</TileWidth>
      <TileHeight>256</TileHeight>
      <MatrixWidth>16</MatrixWidth>
      <MatrixHeight>8</MatrixHeight>
      <VariableMatrixWidth>
         <Coalesce>4</Coalesce>
         <MinTileRow>0</MinTileRow>
         <MaxTileRow>0</MaxTileRow>
      </VariableMatrixWidth>
      <VariableMatrixWidth>
         <Coalesce>2</Coalesce>
         <MinTileRow>1</MinTileRow>
         <MaxTileRow>1</MaxTileRow>
      </VariableMatrixWidth>
      <VariableMatrixWidth>
         <Coalesce>2</Coalesce>
         <MinTileRow>6</MinTileRow>
         <MaxTileRow>6</MaxTileRow>
      </VariableMatrixWidth>
      <VariableMatrixWidth>
         <Coalesce>4</Coalesce>
         <MinTileRow>7</MinTileRow>
         <MaxTileRow>7</MaxTileRow>
      </VariableMatrixWidth>
   </TileMatrix>
</TileMatrixSet>


 

H.2     JSON document instance using VariableMatrixWidth

This example takes the first five tile matrices of the definition of the GNOSIS Global Grid (http://ecere.ca/gnosis/) and presents them encoded in JSON following this standard. Please note that GNOSIS Global Grid conforms to the GoogleCRS84Quad well known scale set but it is not using the same identifiers as the WorldCRS84Quad TileMatrixSet. The complete example can be found in the supplemental material described in Annex B.


{
   “type”: “TileMatrixSetType”,
   “title”: “GNOSIS for the World”,
   “identifier”: “GNOSISGlobalGrid”,
   “boundingBox”:
   {
      “type”: “BoundingBoxType”,
      “crs”: “http://www.opengis.net/def/crs/OGC/1.3/CRS84”,
      “lowerCorner”:
      [
         -180,
         -90
      ],
      “upperCorner”:
      [
         180,
         90
      ]
   },
   “supportedCRS”: “http://www.opengis.net/def/crs/OGC/1.3/CRS84”,
   “wellKnownScaleSet”: “http://www.opengis.net/def/wkss/OGC/1.0/GoogleCRS84Quad”
   “tileMatrix”:
   [
      {
         “type”: “TileMatrixType”,
         “identifier”: “0”,
         “scaleDenominator”: 139770566.0071794390678,
         “topLeftCorner”:
         [
           -180,
           -90
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 4,
         “matrixHeight”: 2
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “1”,
         “scaleDenominator”: 69885283.0035897195339,
         “topLeftCorner”:
         [
           -180,
           -90
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 8,
         “matrixHeight”: 4,
         “variableMatrixWidth”:
         [
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 2,
              “minTileRow”: 0,
              “maxTileRow”: 0
           },
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 2,
              “minTileRow”: 3,
              “maxTileRow”: 3
           }
         ]
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “2”,
         “scaleDenominator”: 34942641.501794859767,
         “topLeftCorner”:
         [
           -180,
           -90
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 16,
         “matrixHeight”: 8,
         “variableMatrixWidth”:
         [
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 4,
              “minTileRow”: 0,
              “maxTileRow”: 0
           },
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 2,
              “minTileRow”: 1,
              “maxTileRow”: 1
           },
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 2,
              “minTileRow”: 6,
              “maxTileRow”: 6
           },
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 4,
              “minTileRow”: 7,
              “maxTileRow”: 7
           }
         ]
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “3”,
         “scaleDenominator”: 17471320.7508974298835,
         “topLeftCorner”:
         [
           -180,
           -90
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 32,
         “matrixHeight”: 16,
         “variableMatrixWidth”:
         [
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 8,
              “minTileRow”: 0,
              “maxTileRow”: 0
           },
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 4,
              “minTileRow”: 1,
              “maxTileRow”: 1
           },
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 2,
              “minTileRow”: 2,
              “maxTileRow”: 3
           },
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 2,
              “minTileRow”: 12,
              “maxTileRow”: 13
           },
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 4,
              “minTileRow”: 14,
              “maxTileRow”: 14
           },
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 8,
              “minTileRow”: 15,
              “maxTileRow”: 15
           }
         ]
      },
      {
         “type”: “TileMatrixType”,
         “identifier”: “4”,
         “scaleDenominator”: 8735660.3754487149417,
         “topLeftCorner”:
         [
           -180,
           -90
         ],
         “tileWidth”: 256,
         “tileHeight”: 256,
         “matrixWidth”: 64,
         “matrixHeight”: 32,
         “variableMatrixWidth”:
         [
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 16,
              “minTileRow”: 0,
              “maxTileRow”: 0
           },
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 8,
              “minTileRow”: 1,
              “maxTileRow”: 1
           },
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 4,
              “minTileRow”: 2,
              “maxTileRow”: 3
           },
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 2,
              “minTileRow”: 4,
              “maxTileRow”: 7
           },
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 2,
              “minTileRow”: 24,
              “maxTileRow”: 27
           },
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 4,
              “minTileRow”: 28,
              “maxTileRow”: 29
           },
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 8,
              “minTileRow”: 30,
              “maxTileRow”: 30
           },
           {
              “type”: “VariableMatrixWidthType”,
              “coalesce”: 16,
              “minTileRow”: 31,
              “maxTileRow”: 31
           }
         ]
      }
   ] 
}


 

 

Annex I            Pseudocode (Informative)

This informative Annex provides pseudocode that illustrates how to get the tiles that cover a bounding box rectangle and how to get the CRS coordinates that bound a tile.

I.1       From BBOX to tile indices

The following fragment of pseudocode could be used to convert from a desired bounding box (bBoxMinX, bBoxMinY, bBoxMaxX, bBoxMaxY) in CRS coordinates to a range of tile set indices. This pseudocode uses the same notation that subclause 6.1.1 uses. In this pseudocode it is assumed that bBoxMinX, bBoxMinY, bBoxMaxX, bBoxMaxY, tileMatrixMinX, tileMatrixMinY, tileMatrixMinY, tileMatrixMaxY, tileSpanX and tileSpanY are floating point variables (IEEE-754) that have accuracy issues derived from the finite precision of the representation. These accuracy issues could be amplified in a typical floor() rounding down function that could return a value ±1 than that expected. To overcome this issue this code uses a small value (epsilon) added or subtracted in a place that is not affected by CRS coordinate precision.


// to compensate for floating point computation inaccuracies
epsilon = 1e-6
 
tileMinCol = floor((bBoxMinX - tileMatrixMinX) / tileSpanX + epsilon)
tileMaxCol = floor((bBoxMaxX - tileMatrixMinX) / tileSpanX - epsilon)
tileMinRow = floor((tileMatrixMaxY - bBoxMaxY) / tileSpanY + epsilon)
tileMaxRow = floor((tileMatrixMaxY - bBoxMinY) / tileSpanY - epsilon)
 
// to avoid requesting out-of-range tiles
if (tileMinCol < 0) tileMinCol = 0
if (tileMaxCol >= matrixWidth) tileMaxCol = matrixWidth-1
if (tileMinRow < 0) tileMinRow = 0
if (tileMaxRow >= matrixHeight) tileMaxRow = matrixHeight-1


 

To fetch all the tiles that cover this bounding box, a client would scan through tileMinCol to tileMaxCol and tileMinRow to tileMaxRow, all inclusive. A total of (tileMaxCol- tileMinCol+1) × (tileMaxRow- tileMinRow+1) will be fetched.

I.2       From tile indices to BBOX

The following pseudocode could be used to convert from a pair of tile indices (tileCol, tileRow) to the bounding box (in CRS coordinates) of this tile defined by the upper-left corner (leftX, upperY) of the tile:


leftX = tileCol * tileSpanX + tileMatrixMinX
upperY = tileMatrixMaxY - tileRow * tileSpanY
 
and the lower-right corner (rightX, lowerY) of the tile:
rightX = (tileCol+1) * tileSpanX + tileMatrixMinX
lowerY = tileMatrixMaxY – (tileRow+1) * tileSpanY


 

 

Annex J: Revision history

 

Date Release Author Paragraph modified Description

2017-08-04

v0.1

Joan Masó

All

Initial draft

2018-06-07

v0.7

Joan Masó

All

Document ready for the RFC period. http://www.opengeospatial.org/standards/requests/169

2019-02-07

v0.14

Joan Masó

All

Comments accepted introduced. Document sent to the TC for final approval

2019-02-28

v0.15

Joan Masó

Section 4 and Annex D

Tiling scheme and tile set concept added. EPSG:32661 and 32662 replaced by EPSG:5041 and 5042 respectively

 

 

Annex K: Bibliography

Craig Rollins and Mike Paniccia National Geospatial-Intelligence Agency ESRI Users Conference, July 22, 2015. https://www.slideshare.net/NGA_GEOINT/ngas-position-on-webmercator

Dengler, Klaus und Heinen, Torsten und Huber, Albert und Molch, Katrin und Mikusch, Eberhard (2013) The EOC Geoservice: Standardized Access to Earth Observation Data Sets and Value Added Products. PV 2013, 4.-6.Nov. 2013, Frascati, Italien. http://elib.dlr.de/86351

DLR Geospatial Web Services Lists of services and their current status. https://geoservice.dlr.de/web/services#tilecache

Digital Globe Web Map Tile Service Developer Guide. Cloud Services | August 2013. https://dg-cms-uploads-production.s3.amazonaws.com/uploads/document/file/174/DGCS_DeveloperGuide_WMTS.pdf

Emmanuel Stefanakis. Web Mercator Projection & Raster Tile Maps. Two cornerstones of Online Map Service Providers. Annual Conference – 2017 – Ottawa, May 31- June 2, 2017. http://www2.unb.ca/~estef/talks/CCA2017_Technical_Session_Stefanakis.pdf

Map projections: A working manual. Professional Paper 1395. By:John P. Snyder. https://pubs.usgs.gov/pp/1395/report.pdf

MBTiles Specification. https://github.com/mapbox/mbtiles-spec

NGA.SIG.0011_1.0_WEBMERC, National Geospatial-Intelligence Agency (NGA) Standardization Document. Implementation Practice Web Mercator Map Projection. https://nsgreg.nga.mil/doc/view?i=4105

NGA.SIG.0012_2.0.0_UTMUPS, The Universal Grids and the Transverse Mercator and Polar Stereographic Map Projections, Version 2.0.0, 25 March 2014. https://nsgreg.nga.mil/doc/view?i=4106

NGA.SIG.0014_1.0_PROJRAS, National Geospatial-Intelligence Agency (NGA) Map Projections for Tiled Raster Graphics, V1.0, 24 April 2015 https://nsgreg.nga.mil/doc/view?i=1810

NGA.SIG.0014_1.0_PROJRAS, UPS-Amendment, Map Projections for Tiled Raster Graphics Amendment for Universal Polar Stereographic, 2016-06-03, Version 0.1

NGA.SIG.0014_1.0_PROJRAS, Mercator-Addendum, Map Projections for Tiled Raster Graphics Addendum for the Mercator Projection, 2016-05-17, Version 0.2

DGIWG 124 Defence Profile of OGC’s Web Map Tile Service 1.0, 17 October 2017. https://portal.dgiwg.org/files/?artifact_id=68271&format=pdf

OGC 05-077r4 Symbology Encoding (SE) Implementation Specification, version 1.1.0. https://portal.ogc.org/files/16700

OGC 06-042 Web Map Service (WMS), version 1.3.0. https://portal.ogc.org/files/14416

OGC 07-036 Geography Markup Language (GML) Encoding Standard, version 3.2.1. https://portal.ogc.org/files/20509

OGC 07-057r7 Web Map Tile Service (WMTS), version 1.0. https://portal.ogc.org/files/35326

OGC 13-082r2 Web Map Tile Service (WMTS) Simple Profile, version 1.0. https://docs.ogc.org/is/13-082r2/13-082r2.html

 



[1] www.ogc.org/compliance