Web Map Tile Service
The Web Map Tile Service (WMTS) is an Open Geospatial Consortium (OGC) standard that defines a protocol for serving georeferenced map tiles over the Internet, using predefined image tiles to enable efficient, scalable delivery of digital maps from servers to clients.[1][2] Developed as a complement to the OGC Web Map Service (WMS) standard, WMTS addresses the limitations of dynamic image generation in WMS by focusing on pre-rendered or run-time computed tiles, which improve performance and caching in web mapping applications.[2] The standard was first drafted in 2007 and formally approved as version 1.0.0 (OGC document 07-057r7) on April 6, 2010, with subsequent profiles like the Simple Profile adopted in 2015 to simplify implementation.[2][3] Key features of WMTS include support for multiple encoding methods—Key-Value Pair (KVP), SOAP, and RESTful interfaces—allowing flexible integration with web architectures, and a tile-based structure organized into tile matrix sets that define spatial resolutions and bounding boxes for consistent rendering across zoom levels.[2] The protocol mandates two core operations: GetCapabilities, which retrieves service metadata including available layers, styles, and tile matrices; and GetTile, which requests specific map tiles identified by layer, style, tile matrix set, row, and column parameters.[2] An optional GetFeatureInfo operation allows clients to query underlying feature data at a specific pixel location within a tile, enhancing interactivity.[2] WMTS promotes interoperability by standardizing how servers declare and deliver tiles, enabling a single client implementation to access maps from diverse providers without custom adaptations.[1] This tiled approach reduces server load compared to WMS's on-the-fly rendering, making it particularly suitable for high-traffic web mapping scenarios, such as those in enterprise GIS platforms and open data portals.[2] Compliance with the standard is verified through abstract test suites, ensuring robust implementation across OGC-compliant systems.[2]Overview
Definition and Purpose
The Web Map Tile Service (WMTS) is an Open Geospatial Consortium (OGC) implementation standard that defines a protocol for serving georeferenced map tiles over HTTP, enabling clients to request specific pre-rendered or dynamically generated image tiles based on spatial coordinates and zoom levels.[1][2] The primary purpose of WMTS is to facilitate scalable and low-latency map rendering on the web by dividing geographic areas into fixed-size tiles, typically 256x256 pixels, which significantly reduces server computational load compared to on-the-fly image generation methods. This approach promotes interoperability between diverse clients and servers, allowing seamless integration of map data from multiple sources without proprietary formats.[1][3] At its core, WMTS organizes tiles into a pyramid structure, where each level represents a different zoom scale, covering the same geographic extent with increasing resolution. Tiles are georeferenced using standard spatial reference systems, such as EPSG:3857 (Web Mercator), ensuring precise alignment with real-world coordinates.[3][4] WMTS offers key benefits including accelerated client-side rendering through selective tile requests, enhanced caching mechanisms for repeated access, and straightforward support for layered map overlays, making it ideal for interactive web mapping applications. It evolved as a complement to the earlier Web Map Service (WMS) standard, addressing the need for more efficient tiled delivery while maintaining compatibility with dynamic rendering workflows.[1][3]Key Features
The Web Map Tile Service (WMTS) supports delivery of map tiles in standard image formats such as PNG and JPEG, which are commonly used for efficient rendering of geospatial data over the web.[3] Metadata describing service capabilities, layers, and tile sets is provided in XML format through the GetCapabilities operation.[1] WMTS organizes tiles into a hierarchical pyramid structure using predefined tile matrix sets, where each matrix level corresponds to a specific zoom scale— for instance, level 0 offers a global overview, while higher levels provide increasing detail down to street-level resolution.[3] This structure ensures consistent tiling across different coordinate reference systems, such as Web Mercator or geographic coordinates, with typical tile sizes of 256x256 pixels to balance resolution and load times.[5] As an open standard developed by the Open Geospatial Consortium (OGC), WMTS promotes interoperability by allowing any compliant client to request and display tiles from any compliant server without proprietary software dependencies, facilitating seamless integration in diverse mapping ecosystems.[1] WMTS offers extensibility through support for multiple styles to vary visual representations of layers, stacking of layers for composite maps, and additional dimensions such as time or elevation to enable dynamic customization of tile content— for example, retrieving tiles for specific dates in historical imagery or altitude slices in 3D terrain data.[3] For performance, WMTS relies on predefined, pre-rendered tiles that enable effective caching at content delivery networks (CDNs), reducing server load and latency for repeated requests. Tile identifiers incorporate parameters like zoom level, row, and column, with optional versioning in service metadata to support cache invalidation when updates occur.[1]History and Development
Background in Web Mapping
The development of web mapping in the late 1990s and early 2000s was dominated by the Open Geospatial Consortium's (OGC) Web Map Service (WMS), which enabled servers to dynamically generate georeferenced map images on a per-request basis using protocols like HTTP GET or POST.[6] Introduced through the OGC's Web Mapping Testbed initiative, WMS allowed clients to specify parameters such as bounding boxes, layers, and styles to produce customized raster images, facilitating interoperability among heterogeneous geospatial data sources.[7] However, this server-side rendering approach often resulted in latencies exceeding one second per request, as each zoom or pan operation required a full roundtrip to the server for recomputation and image regeneration, straining resources in bandwidth-limited environments of the era.[6] The limitations of dynamic rendering became evident as demand grew for more interactive web applications, prompting the informal adoption of pre-rendered tile-based mapping in the mid-2000s. Pioneered by services like Google Maps, which launched in February 2005, this approach divided maps into small, fixed-size image tiles organized in multi-resolution pyramids, allowing clients to fetch only the necessary tiles for the current view.[8] By pre-generating and caching these tiles, Google Maps achieved sub-second responsiveness for panning and zooming, dramatically improving scalability for high-traffic scenarios and enabling seamless integration with emerging technologies like AJAX for asynchronous updates. This tiled paradigm addressed early web mapping's inefficiencies by reducing data transfer volumes and shifting more processing to the client side, though it initially lacked standardized protocols for broader adoption.[9] In response to these innovations, the Open Source Geospatial Foundation (OSGeo) introduced the Tile Map Service (TMS) specification in 2007 as a simple, HTTP-based protocol for serving tiled maps without formal OGC certification.[10] TMS defined RESTful endpoints for retrieving tile metadata and individual tiles via URL patterns, supporting common projections like Mercator and enabling efficient caching on both servers and clients.[10] Unlike WMS, it focused on direct access to precomputed tiles rather than on-the-fly generation, thereby mitigating bandwidth constraints and eliminating server roundtrips for basic interactions like zooming and panning.[11] These advancements highlighted key challenges in prior systems, including inefficient bandwidth usage for large images, dependency on server processing for user navigation, and difficulties scaling to concurrent users in interactive applications. WMTS emerged as a standardized OGC solution to formalize and extend these tile-based efficiencies across diverse implementations.Standardization Process
The standardization of the Web Map Tile Service (WMTS) was initiated through discussions in Open Geospatial Consortium (OGC) Technical Committee meetings around 2008, where the need for a dedicated standard emerged to build on the Web Map Service (WMS) and OSGeo Tile Map Service (TMS) by addressing inefficiencies in dynamic image generation and informal tiling approaches.[11] These efforts were spurred by collaborative dialogues, such as at the FOSS4G conference in September 2008, emphasizing interoperability in web mapping.[11] Key momentum came from the OGC's Open Web Services Phase 6 (OWS-6) interoperability program in 2009, which tested four independent WMTS prototypes to validate cross-vendor compatibility and refine the specification through hands-on experimentation.[11] Following a public comment period in March 2009 and membership voting in September 2009, the standard received formal approval on April 6, 2010.[11][2] The inaugural version, WMTS 1.0.0, was formally released on April 6, 2010, as OGC document 07-057r7, classifying it as an Implementation Standard for serving georeferenced map tiles.[2] This release marked WMTS's adoption as a core OGC protocol, enabling efficient, predefined tile delivery over the web.[1] Subsequent developments included the WMTS Simple Profile in 2015 (OGC 13-082r2), designed to simplify deployment by restricting options in the core standard, thus facilitating quicker integration for basic use cases without sacrificing essential functionality.[3] In 2019, WMTS gained enhanced modularity through integration with the OGC Two Dimensional Tile Matrix Set standard (OGC 17-083r4), which decoupled tile indexing definitions for broader reuse across OGC APIs and services.[12] In 2022, the OGC adopted the OGC API – Tiles – Part 1: Core (OGC 20-057r5), a successor to WMTS that provides a flexible, RESTful interface for tile-based mapping while reusing concepts like tile matrix sets for interoperability.[13] As of November 2025, this represents the latest evolution in OGC's tiled web mapping standards. The OGC maintains governance of WMTS, with its copyright structured to allow royalty-free, non-discriminatory open use, promoting widespread adoption in geospatial applications.[3] No major revisions to the core WMTS standard have occurred since 2010, though it inherently supports modern web technologies like HTTPS for secure data transmission in contemporary implementations.[1]Technical Specification
Standard Versions and Profiles
The Web Map Tile Service (WMTS) standard was first formally adopted as version 1.0.0 in April 2010 through the OpenGIS Web Map Tile Service Implementation Standard (OGC 07-057r7).[2] This core specification, spanning approximately 88 pages, defines the interface for serving map tiles over the web, including mandatory operations such as GetCapabilities, GetTile, and optional ones like GetFeatureInfo, along with associated XML schemas for service metadata, layer definitions, tile matrix sets, and error handling mechanisms.[2] It supports multiple service encodings, including Key-Value Pair (KVP), RESTful, and SOAP, to accommodate diverse implementation needs while ensuring interoperability with other OGC standards like the Open Web Services Common Specification.[2] To facilitate easier adoption, particularly for simpler use cases aligned with popular web mapping services, the OGC introduced the WMTS Simple Profile in version 1.0 (OGC 13-082r2) in June 2015.[3] This profile builds directly on the core WMTS 1.0.0 standard, requiring full conformance to it while imposing restrictions to reduce implementation complexity, such as mandating the RESTful encoding, fixing defaults for tile matrix sets (e.g., Web Mercator or CRS:84), tile dimensions (256x256 pixels), and supported formats (image/png and image/jpeg).[3] By standardizing these elements, the Simple Profile enhances interoperability for basic tile serving scenarios without the full flexibility of the core specification.[3] An important precursor to the core standard's encoding options was the OWS-6 Engineering Report (version 0.3.0, OGC 09-006), published in August 2009, which explored SOAP/XML and RESTful interfaces for WMTS within the OGC's OWS-6 interoperability initiative.[14] This preliminary report influenced the inclusion of these encodings in the final 1.0.0 specification.[2] No major updates to the WMTS core or Simple Profile have been released since 2015, though both remain backward-compatible with evolving OGC common standards for web services.[1] The evolution from early drafts to the finalized 1.0.0 version involved iterative refinements, including the addition of support for multiple encodings (KVP, REST, and SOAP) and the GetFeatureInfo operation for querying underlying data in tiles, as documented in the revision history of OGC 07-057r7.[2] These enhancements addressed feedback from testbeds like OWS-6, ensuring the standard's robustness for scalable tile delivery.[14]Tile Matrix Sets
A tile matrix set in the Web Map Tile Service (WMTS) is defined as a collection of tile matrices that organize map tiles into grids at varying zoom levels, each matrix representing a specific scale and covering a defined spatial extent within a coordinate reference system (CRS).[2] This structure ensures efficient caching and rendering of geospatial data by discretizing continuous space into discrete, addressable units.[2] Each tile matrix within the set specifies the number of rows (R, or MatrixHeight) and columns (C, or MatrixWidth), defining a regular grid where individual tiles are identified by integer coordinates (TileRow, TileCol), ranging from 0 to R-1 and 0 to C-1, respectively.[2] The resolution of each matrix is determined by its scale denominator, which relates the map scale to a standardized pixel size of 0.28 mm; for example, in pseudo-Mercator projections like EPSG:3857, the scale denominator often follows a dyadic progression such as approximately $2^{\text{zoom}} multiplied by a base factor to achieve consistent zoom levels.[2] Additional parameters include the tile dimensions in pixels (TileWidth and TileHeight, typically fixed across matrices) and the top-left origin coordinates in the CRS.[2] Tiles are addressed hierarchically using the identifier of the tile matrix set, combined with the specific matrix identifier, row, and column, in the format{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.[2] The origin for coordinate addressing is conventionally the top-left corner of the grid, facilitating compatibility with web rendering conventions where the y-axis increases downward.[2]
Supported CRS are tied to each tile matrix set via a URI (e.g., urn:ogc:def:crs:EPSG::3857 for Web Mercator), with predefined configurations for common projections such as Google Maps Compatible (for EPSG:3857) or CRS:84 (long-lat).[2] Service providers may define custom tile matrix sets to accommodate specific projections or extents, provided they adhere to the WMTS schema for metadata like bounding boxes and well-known scale sets.[2]
To compute tile indices for a given geographic coordinate (x, y) within a bounding box, the tile spans are first derived: the pixel span is \text{scaleDenominator} \times 0.28 \times 10^{-3} meters (assuming units in meters), and tile spans are then \text{tileWidth} \times \text{pixel span} for the x-direction and similarly for y.[2] The column index is calculated as \lfloor (x - \text{tileMatrixMinX}) / \text{tileSpanX} \rfloor, and the row index as \lfloor (\text{tileMatrixMaxY} - y) / \text{tileSpanY} \rfloor to account for the north-up orientation inverting the y-coordinate.[2]
These identifiers play a key role in the GetTile operation, where clients specify the path to retrieve a particular tile from the matrix.[2]
Operations
GetCapabilities
The GetCapabilities operation in the Web Map Tile Service (WMTS) standard allows clients to retrieve a metadata document that describes the service's capabilities, enabling proper configuration and interaction with the server.[2] This XML response outlines available layers, supported styles, image formats, and tile matrix sets, providing essential information for rendering maps without requiring prior knowledge of the service structure.[2] The operation is invoked via HTTP GET or POST requests with mandatory parameters:service=WMTS to identify the service type and request=GetCapabilities to specify the operation.[2] The version parameter (optional, set to "1.0.0" for the core standard if specified) indicates the protocol version requested by the client; if omitted, the server uses its highest supported version.[2] Optional parameters include sections, which limits the response to specific subsections such as "Contents" for layers only or "ServiceIdentification" for basic service details; updateSequence for versioning the metadata; acceptVersions to negotiate supported versions; and acceptFormats to request alternative response formats like text/xml, though XML is the default.[2]
The response is an XML document rooted in the <Capabilities> element, conforming to the WMTS XML schema, and includes several key sections for structured metadata.[2] The ServiceIdentification section provides the service title, abstract, keywords, and fees information.[2] The Contents section details available layers, each identified by a unique ows:Identifier (e.g., "layer1"), along with titles, abstracts, and supported styles; it also specifies image formats (e.g., image/png), dimensions (such as time or elevation with default and extent values), and TileMatrixSetLinks referencing applicable tile matrix sets.[2] Layers include bounding boxes in WGS 84 (mandatory) and other coordinate reference systems (CRS), defining spatial extents with lower and upper corner coordinates.[2] Supported CRS are tied to tile matrix sets, such as urn:ogc:def:crs:OGC:1.3:CRS84.[2] Tile widths and heights are defined per tile matrix level, with a common default of 256x256 pixels to ensure compatibility across clients.[2] The Themes section organizes layers hierarchically using Theme elements with LayerRefs for thematic grouping.[2] Finally, ServiceMetadata offers a URL for extended metadata access.[2] An updateSequence attribute in the root element tracks changes to the capabilities document, allowing clients to detect updates.[2]
If the request contains invalid parameters, the server returns an XML ExceptionReport document instead of capabilities, detailing the error with codes such as MissingParameterValue, InvalidParameterValue, or InvalidUpdateSequence, often accompanied by HTTP status codes like 400 (Bad Request).[2] This exception mechanism ensures clients receive actionable feedback for troubleshooting.[2] The response references tile matrix sets, which define the grid structure for tiling across zoom levels and CRS.[2]
GetTile
The GetTile operation is the primary mechanism in the Web Map Tile Service (WMTS) for retrieving a specific georeferenced map tile, enabling clients to fetch pre-rendered image fragments of map layers at defined positions within a tile matrix set.[2] This operation supports efficient delivery of tiled map data by allowing requests for individual tiles based on their spatial coordinates, layer identifiers, and styling, which is essential for constructing complete map views in web-based applications.[2] Servers must implement GetTile to comply with the WMTS standard, as it facilitates scalable access to cached or dynamically generated tiles without requiring full map re-rendering.[2] Mandatory parameters for the GetTile request include the service identifier ("WMTS"), the request type ("GetTile"), the layer identifier (a unique string referencing the desired map layer), the style identifier (a string specifying the rendering style, with a default option if omitted in certain profiles), the format (the output MIME type, such as "image/png" or "image/jpeg"), the tile matrix set identifier (referencing a predefined grid of scales and projections), the tile matrix (indicating the zoom level within that set), the tile row (a non-negative integer for the vertical position), and the tile column (a non-negative integer for the horizontal position).[2] Theversion parameter (optional, typically "1.0.0") specifies the protocol version. These parameters ensure precise targeting of a tile's location, where tile coordinates are derived from the tile matrix set's structure, such as row-major ordering in a grid-aligned system.[2] For example, a request might specify layer=world_topography&style=default&tileMatrixSet=GoogleMapsCompatible&tileMatrix=5&tileRow=10&tileCol=20 to retrieve a specific tile at zoom level 5.[2]
Optional parameters extend functionality for multidimensional data, including time (a string value for temporal subsets of layers, such as "2023-01-01" for time-enabled datasets) and elevation (for vertical slicing in 3D contexts).[2] The response to a successful GetTile request is the binary data of the requested tile in the specified format, returned with an HTTP status code of 200 OK and appropriate Content-Type header (e.g., "image/png").[2] If the tile does not exist or the request is invalid, the server returns an HTTP error such as 404 Not Found or 400 Bad Request, potentially accompanied by an XML exception report detailing the issue.[2]
To optimize performance and reduce bandwidth, WMTS servers support HTTP caching mechanisms for GetTile responses, including the use of ETag headers for conditional requests and Last-Modified timestamps to enable client-side validation and reuse of tiles.[2] Parameter ordering in requests follows a standardized sequence to enhance web caching compatibility, aligning with HTTP/1.1 protocols as defined in RFC 2616, which allows intermediaries like proxies to store and serve tiles efficiently.[2] This caching support is crucial for high-traffic applications, where tiles can be pre-generated and stored, minimizing server load while ensuring fresh data through invalidation mechanisms.[2]
GetFeatureInfo
The GetFeatureInfo operation in the Web Map Tile Service (WMTS) enables clients to retrieve detailed attribute information or metadata about geographic features rendered at a specific pixel location within a map tile, facilitating interactive querying in web-based mapping applications.[2] This operation is particularly useful for vector-based layers where users can click on a rendered tile to access underlying data, such as property values or descriptions, supporting features like tooltips and popups in dynamic maps.[2] It extends the tile delivery mechanism by providing a stateless query that references the exact position in a previously obtainable tile, ensuring compatibility with tiled map visualizations without requiring full map re-rendering.[2] To invoke GetFeatureInfo, clients must supply parameters that align closely with those of the GetTile operation, including the layer (identifying the thematic layer), style (specifying the rendering style), tileMatrixSet (defining the tiling scheme), tileMatrix (indicating the zoom level), tileRow, and tileCol (locating the specific tile).[2] Additional mandatory parameters include i and j for the column and row offsets of the pixel within the tile (ranging from 0 to the tile's width or height minus one), and infoFormat to specify the desired output format, such as text/plain, text/html, application/xml, or application/gml+xml; version=3.1. Standard parameters like service=WMTS and request=GetFeatureInfo are required, while version=1.0.0 is optional (defaults to the server's highest supported version if omitted); optional parameters such as format (the image MIME type of the tile) and dimension values (e.g., for time or elevation) allow customization for multidimensional datasets.[2] The response from a GetFeatureInfo request is a FeatureInfo document formatted according to the specified infoFormat, containing structured data on one or more features whose geometries intersect the queried pixel, including attribute properties in a readable form like name-value pairs.[2] For instance, in GML format, it adheres to the OGC GML Simple Features Profile, enabling parsing of spatial and descriptive elements.[2] Servers may return multiple features if they overlap at the location, but the operation is limited to layers explicitly marked as queryable in the service metadata, with supported formats listed therein.[2] This operation has inherent limitations, as it applies only to vector-enabled, queryable layers and relies on the resolution of the selected tile matrix for positional accuracy—finer resolutions yield more precise queries, while coarser ones may aggregate or approximate feature hits.[2] Invalid parameters, such as out-of-bounds pixel coordinates, trigger standardized exceptions like InvalidParameterValue or PointIJOutOfRange, ensuring robust error handling in client implementations.[2] In practice, GetFeatureInfo enhances user engagement in web mapping clients by bridging visual tiles with interactive data exploration, though it requires separate requests for multi-layer overlaps.[2]GetLegendGraphic
The GetLegendGraphic operation enables clients to obtain a graphical representation of the symbology applied to a specific layer and style within a Web Map Tile Service (WMTS), assisting users in interpreting the visual elements of rendered map tiles. While the core OGC WMTS 1.0.0 standard does not mandate this operation—focusing instead on GetCapabilities, GetTile, and GetFeatureInfo—numerous WMTS implementations incorporate it as an extension, adapting the mechanism from the OGC Web Map Service (WMS) to complement tile-based services.[15][16][17] Key parameters define the request, ensuring the returned legend aligns with the desired configuration. The LAYER parameter is mandatory, identifying the target layer from the service's capabilities. The STYLE parameter, if specified, selects a particular style for the layer; omitting it defaults to the standard style. The FORMAT parameter specifies the output image type, such asimage/[png](/page/PNG) or image/[jpeg](/page/JPEG), with PNG being common for its support of transparency. Dimensions are controlled via WIDTH and HEIGHT, where defaults often use a width of 20-30 pixels and a height scaled to the number of legend items, though many systems default to 256 pixels for consistency with tile sizes. Optional parameters include OPACITY (a value from 0 to 100 for transparency), SCALE or CRS to generate scale-dependent legends relevant to zoom levels, and BBOX for extent-specific filtering in dynamic, content-dependent scenarios.[18][19][20]
The server's response is a binary image file illustrating the layer's symbology, featuring elements like color ramps, icons, line patterns, and textual labels that match the style used in tile rendering. This graphic is designed to be scalable, with support for adjustment based on the requested scale range to reflect symbology variations across different tile matrix sets and zoom levels. In contrast to the static LegendURL links embedded in WMTS GetCapabilities responses, GetLegendGraphic supports on-demand generation for more flexible, context-aware legends.[18][21][19]
Within client applications, GetLegendGraphic integrates seamlessly into user interfaces, such as side panels or legend widgets adjacent to the map viewer, providing immediate visual context for the displayed tiles. WMTS implementations often allow multiple legends per layer by associating them with distinct styles, enabling clients to fetch the most suitable one dynamically. Relative to WMS, this operation in WMTS contexts is more efficient and lightweight, leveraging pre-defined tile styles without invoking full map re-rendering, thus aligning with the service's emphasis on cached, high-performance tile delivery.[15][16][17]
Service Encodings
Key-Value Pair (KVP)
The Key-Value Pair (KVP) encoding in the Web Map Tile Service (WMTS) standard utilizes HTTP GET requests, where operation parameters are appended to the service's base URL as a query string consisting of key-value pairs separated by ampersands.[2] This method follows a procedure-oriented architectural style, enabling clients to invoke WMTS operations such as GetCapabilities and GetTile by specifying parameters like the service type and requested action.[2] For instance, a typical request begins with the base URL followed by "?service=WMTS&request=GetCapabilities", allowing straightforward access to service metadata.[2] This encoding offers several advantages, including simplicity in construction and parsing due to its straightforward query string format, which facilitates integration with web technologies.[2] It also supports efficient caching by browsers and proxies, as HTTP GET responses can be stored and reused based on the immutable URL, enhancing performance for repeated tile requests.[2] Additionally, the structure is human-readable, making it easier for developers to inspect and debug requests without specialized tools.[2] Parameters in KVP encoding must be URL-escaped according to HTTP standards to handle special characters, ensuring safe transmission over the web.[2] All operations require certain mandatory parameters, such as "version" (e.g., version=1.0.0 to indicate the supported WMTS version), "service=WMTS" to identify the service type, and "request" specifying the operation name like GetTile.[2] Operation-specific parameters, such as "layer" for the map layer or "tileMatrixSet" for the tiling scheme in GetTile requests, are appended as additional key-value pairs.[2] A full example URL structure for a GetTile operation might appear as:http://example.com/wmts?service=WMTS&version=1.0.0&request=GetTile&layer=layerId&style=default&tileMatrixSet=googlemaps&tileMatrix=15&tileRow=1234&tileCol=5678&format=image/jpeg, retrieving a specific map tile in JPEG format.[2] This syntax adheres to the detailed parameter tables outlined in the WMTS specification, ensuring interoperability across compliant servers and clients.[2]
KVP encoding is the default method supported by many WMTS clients and servers, promoting broad compatibility through its reliance on standard HTTP GET.[2] While primarily designed for GET, it also accommodates HTTP POST for scenarios involving lengthy parameter lists that exceed URL length limits, though POST usage remains optional and less common.[2]
RESTful
The RESTful encoding in the Web Map Tile Service (WMTS) standard represents tiles and related resources as directly addressable HTTP resources, leveraging path-based URLs to enable straightforward retrieval without query-string complexity. This encoding is defined in the OGC WMTS 1.0.0 implementation specification and forms a core component of the WMTS Simple Profile, which streamlines access for common use cases like Web Mercator projections.[1][3] By modeling service operations as REST principles, it supports efficient, cacheable interactions between clients and servers.[1] The canonical URL template for the GetTile operation follows the structure/wmts/1.0.0/{Layer}/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.{Format}, where path segments specify essential identifiers: {Layer} for the data layer, {Style} for the visualization style, {TileMatrixSet} for the tiling schema (e.g., GoogleMapsCompatible), {TileMatrix} for the zoom level, {TileRow} and {TileCol} for the tile's grid position, and {Format} for the output mime type such as png or jpg.[1][3] Similar path-oriented templates apply to other operations, like GetCapabilities at /wmts/1.0.0/WMTSCapabilities.xml. The base URL, typically configured as /wmts/{version}/ by the service provider, allows versioning and customization while maintaining interoperability.[1][3]
Access relies on the HTTP GET method for all retrieval operations, ensuring idempotent and safe requests. Servers must return standard HTTP status codes, including 200 OK for successful tile delivery, 404 Not Found for non-existent resources, and 400 Bad Request for malformed paths.[1][3] This method supports conditional requests via headers like If-Modified-Since for efficient caching.[1]
Key advantages of the RESTful encoding include its stateless nature, which promotes scalability and load balancing across distributed servers; human- and machine-readable URLs that enhance search engine optimization (SEO); and seamless integration with modern web frameworks and JavaScript libraries for dynamic map rendering.[1][3] It is explicitly required in the WMTS Simple Profile to reduce implementation complexity for clients targeting predefined tile matrix sets.[3]
Core identifiers—layer, style, tile matrix set, matrix level, row, and column—are handled as URL path segments to provide clear resource hierarchies and improve parseability.[1] Optional parameters, such as temporal dimensions or custom styles, are accommodated via query strings appended to the path, for example ?time=2020 to filter tiles by a specific year.[1][3] This hybrid approach maintains RESTful purity for primary resources while allowing extensibility without altering core paths.[1]
SOAP
The SOAP encoding for the Web Map Tile Service (WMTS) provides a procedure-oriented architectural style for invoking core operations, utilizing HTTP POST requests with XML messages encapsulated in SOAP 1.2 envelopes.[22] This approach supports operations such as GetCapabilities, GetTile, and GetFeatureInfo, enabling structured communication for map tile retrieval and metadata exchange, though it is less commonly implemented compared to other encodings.[22] In terms of structure, a SOAP request consists of an XML document wrapped in a<soap:Envelope> element, containing the specific WMTS operation as a child element with namespace http://www.opengis.net/wmts/1.0. For example, a GetTile request includes parameters as sub-elements, such as <wmts:Layer>layerName</wmts:Layer>, <wmts:Style>styleName</wmts:Style>, <wmts:TileMatrixSet>matrixSet</wmts:TileMatrixSet>, <wmts:TileMatrix>matrix</wmts:TileMatrix>, <wmts:TileRow>row</wmts:TileRow>, and <wmts:TileCol>col</wmts:TileCol>.[22] Similar structures apply to other operations, with all parameters expressed as XML elements rather than URL query strings. The service's WSDL description, provided in Annex F of the specification, defines these message formats abstractly, importing schemas like wmts.xsd for interoperability.[22]
This encoding offers advantages in fault tolerance through standardized SOAP fault elements for error reporting, such as <soap:Fault> for invalid requests, and suitability for enterprise integrations requiring secure, XML-based messaging over HTTP.[22] Responses are returned within a SOAP 1.2 envelope, wrapping WMTS-specific XML documents—for instance, a GetTile response may include a <BinaryPayload> element with base64-encoded image data or use CDATA sections for efficiency, while GetCapabilities returns service metadata in XML.[22]
Adoption of SOAP encoding is optional per the WMTS 1.0.0 specification, with servers required to support at least KVP or RESTful methods but encouraged to include SOAP for broader compatibility if implemented.[22] Its use remains limited in modern web applications due to the overhead of XML parsing and envelope processing, as explored in the OWS-6 DSS Engineering Report, which prototyped SOAP alongside REST for WMTS.[23]