Recent from talks
Nothing was collected or created yet.
Web Map Service
View on Wikipedia| WMS | |
|---|---|
| Developed by | OGC |
| Initial release | 1999[1] |
| Type of format | Container format |
| Container for | XML, JPEG, PNG, others |
| Open format? | Yes, with Copyright[2] |
| Website | www |
A Web Map Service (WMS) is a standard protocol developed by the Open Geospatial Consortium in 1999 for serving georeferenced map images over the Internet.[1] These images are typically produced by a map server from data provided by a GIS database.[3]
History
[edit]The Open Geospatial Consortium (OGC) became involved in developing standards for web mapping after a paper was published in 1997 by Allan Doyle, outlining a "WWW Mapping Framework".[4] The OGC established a task force to come up with a strategy,[5] and organized the "Web Mapping Testbed" initiative, inviting pilot web mapping projects that built upon ideas by Doyle and the OGC task force. Results of the pilot projects were demonstrated in September 1999, and a second phase of pilot projects ended in April 2000.[6]
The Open Geospatial Consortium released WMS version 1.0.0 in April 2000,[7] followed by version 1.1.0 in June 2001,[8] and version 1.1.1 in January 2002.[9] The OGC released WMS version 1.3.0 in January 2004.[10]
Requests
[edit]WMS specifies a number of different request types, two of which are required by any WMS server:[11]
- GetCapabilities – returns parameters about the WMS (such as map image format and WMS version compatibility) and the available layers (map bounding box, coordinate reference systems, URI of the data and whether the layer is mostly opaque or not)
- GetMap – returns a map image. Parameters include: width and height of the map, coordinate reference system, rendering style, image format
Request types that WMS providers may optionally support include:
- GetFeatureInfo – if a layer is marked as 'queryable' then you can request data about a coordinate of the map image.
- DescribeLayer – returns the feature types of the specified layer or layers, which can be further described using WFS or WCS requests. This request is dependent on the Styled Layer Descriptor (SLD) Profile of WMS.[12]
- GetLegendGraphic – returns an image of the map's legend image, giving a visual guide to map elements.
All communication is served through HTTP.
Map image
[edit]A WMS server usually serves the map in a bitmap format, e.g. PNG, GIF, JPEG, etc. In addition, vector graphics can be included, such as points, lines, curves and text, expressed in SVG or WebCGM format.
Software
[edit]Open source software that provide web map services capability include:
Proprietary server software that allow providing web map services include:
- ArcGIS Server
- ArcIMS
- Cubeserv from Terrapixel
- GeoWebPublisher from Bentley Systems
- GeognoSIS from Cadcorp
- GeoMedia
- Oracle MapViewer
- SIAS (Smallworld Internet Application Server) from GE Energy
- Autodesk's Infrastructure Map Server
- Manifold System
- MapTiler Server
- Luciad's LuciadLightspeed and LuciadFusion products[13]
Open source standalone (client side) software that allow viewing web map services include:
Proprietary standalone (client side) software that allow viewing web map services include:
- Google Earth
- Esri ArcGIS & ArcGIS Explorer
- Global Mapper
- Kongsberg Gallium Ltd. InterVIEW / InterMAPhics
- Luciad's LuciadLightspeed, LuciadRIA and LuciadMobile products[13]
WMS is a widely supported format for maps and GIS data accessed via the Internet and loaded into client side GIS software. Major commercial GIS and mapping software that support WMS include:
- Autodesk's Map 3D and Civil 3D products
- Bentley Systems' MicroStation, Bentley Map, desktop and server based GIS products
- Cadcorp SIS product suite
- D3.js
- ESRI's ArcGIS products
- GeoMedia
- Global Mapper
- Kinetica
- Manifold System
- MapInfo Professional
- Maptitude Mapping Software
- MATLAB and Mapping Toolbox
- Qlik Sense
- Tableau
Open source software that supports WMS include:
- QGIS
- uDig
- OpenJUMP
- MapGuide Open Source
- NASA World Wind
- GRASS GIS
- GeoTrellis
- JOSM
- gvSIG
- OpenLayers
- Leaflet.js
- GE Energy's SIAS, an Ajax library, supports WMS for integrating WMS maps into web pages, as does Mapbender
See also
[edit]- Open Source Geospatial Foundation (OSGeo)
- Web Coverage Service (WCS)
- Web Coverage Processing Service (WCPS)
- Web Feature Service (WFS)
- Tile Map Service, a specification by Open Source Geospatial Foundation (OSGeo) for tiled map layers
References
[edit]- ^ a b Scharl, Arno; Klaus Tochtermann (2007). The Geospatial Web: How Geobrowsers, Social Software and the Web 2.0 are Shaping the Network Society. Springer. p. 225. ISBN 978-1-84628-826-5.
- ^ "OGC Document Notice". Retrieved 2 February 2011.
- ^ "Web Map Service". Open Geospatial Consortium. Retrieved 2009-03-23.
- ^ Doyle, Allan (1997). "WWW Mapping Framework". Open GIS Consortium.
- ^ Cuthbert, A. (1998). "User Interaction with Geospatial Data". Open GIS Consortium.
- ^ Peng, Zhong-Ren; Ming-Hsiang Tsou (2003). Internet GIS. John Wiley and Sons. p. 191.
- ^ "OpenGIS Web Map Server Interface Implementation Specification (Revision 1.0.0)". Open Geospatial Consortium. 2000-04-19. Retrieved 2009-04-10.
- ^ "Web Map Service Implementation Specification Version 1.1.0". Open Geospatial Consortium. 2001-06-21. Retrieved 2009-04-10.
- ^ "Web Map Service Implementation Specification – Version 1.1.1". Open Geospatial Consortium. 2002-01-16. Retrieved 2009-04-10.
- ^ "Web Map Service Implementation Specification – Version 1.3.0". Open Geospatial Consortium. 2004-01-20. Retrieved 2010-10-26.
- ^ "WMS Server". Mapserver. Retrieved 2009-04-10.
- ^ "Styled Layer Descriptor (SLD) Profile of the OpenGIS Web Map Service". OGC. Retrieved 2015-07-01.
- ^ a b – Luciad solutions
External links
[edit]Web Map Service
View on GrokipediaIntroduction
Definition and Purpose
The Web Map Service (WMS) is a standard protocol developed by the Open Geospatial Consortium (OGC) that defines a simple HTTP interface for serving georeferenced map images from one or more distributed geospatial databases over the internet.[1] It enables clients, such as web browsers or GIS applications, to request dynamically generated maps by specifying spatial parameters including a bounding box to define the geographic extent, a spatial reference system for projection, and selected layers of data, all without requiring the download of underlying raw vector or raster data.[4] Instead, the service returns rendered images suitable for immediate display, promoting efficient visualization in web-based environments.[1] The primary purpose of WMS is to facilitate the sharing and integration of geospatial information across heterogeneous systems, allowing users to overlay and combine map layers from multiple sources into a single view.[4] Core benefits include enhanced interoperability among diverse geospatial platforms and software, scalability for large-scale web geographic information systems (GIS), and support for rasterized output formats such as PNG, JPEG, or GIF, which often include transparency to enable seamless layering.[1] This approach reduces bandwidth demands compared to transferring raw data, making it ideal for real-time map rendering in applications like environmental monitoring or urban planning.[4] WMS was initially developed by the OGC in 1999 to address the growing need for standardized map serving in the emerging field of web GIS, providing a vendor-neutral framework that has since become foundational for geospatial data dissemination.[2] At its core, the protocol supports key operations such as GetCapabilities for service metadata, GetMap for image retrieval, and GetFeatureInfo for querying underlying data at specific locations.[4]Key Components
The Web Map Service (WMS) architecture relies on a standardized HTTP-based service interface that enables clients to request and receive georeferenced map images from distributed geospatial databases. This interface operates primarily through the HTTP GET method, which is mandatory, with POST as an optional alternative for larger requests. Requests are encoded either as key-value pairs (KVP) in URL query strings or in XML format for POST operations, ensuring interoperability across web clients and servers.[5] A central element of the WMS architecture is the metadata document, generated via the mandatory GetCapabilities operation. This response, delivered in XML format, provides a comprehensive description of the service, including its version (such as 1.3.0), supported operations, available layers with their geographic extents and titles, styling options, and output formats like PNG or JPEG. The metadata serves as a discovery mechanism, allowing clients to understand the server's capabilities before issuing more specific map requests.[5] The data flow in WMS begins with the client constructing a request to the server's endpoint, specifying parameters such as the desired layers, coordinate reference system (CRS), bounding box, image dimensions (width and height in pixels), and output format. The server processes this by rendering a composite map image from the selected layers and returns it directly to the client, typically as a binary image file via HTTP response, or an XML exception report if the request is invalid. This stateless, request-response model assumes a basic understanding of HTTP protocols for transport and geospatial fundamentals like map projections for accurate rendering.[5][6] Core elements of WMS include the bounding box, which defines the geographic extent of the requested map as a rectangular region specified by minimum and maximum coordinates (e.g., minx, miny, maxx, maxy) in the layer's CRS. The CRS parameter ensures spatial alignment by referencing standardized systems, such as EPSG:4326 for latitude-longitude or CRS:84 for decimal degrees. Layer stacking allows multiple layers to be combined into a single image, rendered in the order listed in the request's LAYERS parameter, from bottom to top, enabling composite maps that overlay thematic data like elevation or land use.[5]Historical Development
Origins
The Web Map Service (WMS) emerged from the Open Geospatial Consortium's (OGC) inaugural Web Mapping Testbed (WMT) in September 1999, marking a pivotal step in developing open standards for web-based geospatial interoperability. This initiative prototyped interfaces to serve georeferenced map images dynamically over the internet, building on OGC's broader mission to integrate disparate geospatial technologies. The testbed's outcomes directly informed the initial WMS 1.0 specification, released in April 2000, as a foundational protocol for rendering and overlaying maps from multiple sources.[7] Development was driven by the needs of agencies like NASA and environmental organizations to distribute satellite imagery and earth observation data without proprietary barriers. Key contributors included the OGC technical committee, with contributions from companies like IONIC Software and NASA personnel such as Jeff de La Beaujardière, who participated in early demonstrations integrating multi-server map services. These efforts addressed the era's challenges in sharing complex geospatial datasets across federal and international boundaries.[4] The core motivations centered on resolving fragmentation in proprietary GIS web tools, which limited data exchange and visualization across platforms. WMS promoted open, platform-independent standards to enable cost-effective federal data sharing, gaining early endorsement from the U.S. Federal Geographic Data Committee (FGDC) for alignment with national spatial data infrastructure goals. This focus on interoperability reduced custom integration costs and expanded access to environmental and scientific resources.[4][8] Early adoption occurred through WMT Phase 2 implementations in 2000, with NASA deploying WMS in its Earth Observing System (EOS) to facilitate the online dissemination of satellite-derived earth science data. These initial applications demonstrated WMS's utility in overlaying imagery from distributed servers, setting the stage for broader use in geospatial projects.[9]Versions and Standardization
The Web Map Service (WMS) specification has evolved through several versions since its inception, with the Open Geospatial Consortium (OGC) releasing formal implementations to enhance interoperability and functionality. The initial version, 1.0.0, was published in April 2000 and focused primarily on the basic GetMap operation for retrieving georeferenced map images. This foundational release established the core HTTP interface for map rendering without advanced querying capabilities.[1] Subsequent updates introduced incremental improvements. Version 1.1.0, released in June 2001, added the optional GetFeatureInfo operation, enabling clients to query attribute information about features in rendered maps, and incorporated XML namespaces for better-structured Capabilities documents.[10] Version 1.1.1, issued in January 2002, provided minor corrections and clarifications to 1.1.0, addressing ambiguities in parameter handling and XML schema without introducing major new features.[11] The most significant advancement came with version 1.3.0 in January 2004, which aligned axis ordering with Coordinate Reference System (CRS) definitions—such as latitude/longitude for EPSG:4326—instead of the previous longitude/latitude assumption, and integrated support for Styled Layer Descriptors (SLD) to allow user-specified styling via Web Feature Service data retrieval.[12] This version also expanded support for multiple CRS declarations in service metadata, promoting greater flexibility in geospatial projections while maintaining backward compatibility with earlier versions through version negotiation in requests.[5] In terms of standardization, the OGC adopted WMS 1.3.0 as the basis for the International Organization for Standardization (ISO) standard 19128, published in December 2005, which formally defines the interface for dynamic map production from geographic information and includes conformance classes for basic and queryable services.[13] The OGC has maintained the specification since then, with no major revisions to the core WMS protocol through 2025, as focus has shifted toward modern OGC API standards like OGC API - Maps for RESTful map delivery.[1] As of 2025, WMS 1.3.0 remains the reference implementation standard, widely supported in geospatial software for its robust feature set, though it is often supplemented by tiled web mapping services such as WMTS for improved performance in large-scale applications.[1]Protocol Specifications
Operations
The Web Map Service (WMS) standard defines a set of operations that enable clients to interact with geospatial data servers over HTTP, facilitating the discovery, retrieval, and querying of map images. These operations form the core interface of the protocol, allowing for standardized access to georeferenced maps without requiring direct data transfer. The mandatory operations ensure basic functionality, while optional ones extend capabilities for advanced styling and visualization support.[14] The core operations include GetCapabilities, GetMap, and GetFeatureInfo, with the first two being required for all compliant WMS implementations. GetCapabilities serves as the entry point for service discovery, returning an XML document that describes the server's metadata, such as supported versions, available layers, coordinate reference systems, output formats, and the list of supported operations. This operation allows clients to understand the server's offerings before making further requests, promoting interoperability across diverse implementations.[5] GetMap is the primary operation for rendering and retrieving map images, generating georeferenced raster outputs (e.g., in formats like PNG or JPEG) based on specified layers, bounding boxes, and styles; it enables the dynamic production of maps tailored to client needs.[14] GetFeatureInfo, an optional core operation, supports interactivity by querying feature attributes at a specific point on a rendered map, returning descriptive information in formats such as text, HTML, or XML, which enhances user engagement with underlying geospatial data.[5] In addition to the core operations, WMS includes optional extensions for enhanced styling and presentation. GetLegendGraphic generates individual legend images or symbols for layers, offering a mechanism to acquire visual explanations of map symbology beyond embedded references, which aids in creating informative map interfaces.[15] These optional operations are typically implemented in conjunction with the Styled Layer Descriptor (SLD) profile, expanding WMS beyond basic rendering. WMS operations are primarily invoked using HTTP GET requests encoded with key-value pairs (KVP), which append parameters directly to the service endpoint URL for simplicity and cacheability. Alternatively, HTTP POST requests can be used with XML payloads or SOAP encoding for more complex scenarios, such as when parameter lengths exceed GET limitations or for secure transmissions. This dual-method approach ensures flexibility while maintaining the protocol's lightweight nature.[5]Requests
Web Map Service (WMS) requests are formulated using HTTP interfaces, with two primary encoding methods supported by the specification. The key-value pair (KVP) encoding, which utilizes URL query strings via HTTP GET, is mandatory for all implementations and involves appending parameters in the form ofname=value pairs separated by ampersands to the service endpoint URL.[5] Alternatively, XML encoding via Simple Object Access Protocol (SOAP) over HTTP POST is optional, allowing requests to be submitted as structured XML documents to the full service URL.[5] All requests must include a VERSION parameter specifying the WMS version in the format "x.y.z" (e.g., "1.3.0"), which enables version negotiation; for instance, the GetCapabilities operation allows the server to return the highest supported version if none is provided or to negotiate based on client-specified values.[5]
The GetCapabilities request retrieves metadata about the service's capabilities, including supported operations, layers, and formats. Mandatory parameters are SERVICE=WMS and REQUEST=GetCapabilities, ensuring the server identifies and processes the request correctly.[5] Optional parameters include VERSION to specify the desired protocol version, UPDATESEQUENCE for cache invalidation (an integer or opaque string that increments with service updates), and SECTIONS to request specific parts of the response, such as "Service" for general service information or "Capability" for layer and operation details.[5] For example, a basic KVP-encoded GetCapabilities request might appear as https://example.com/wms?SERVICE=WMS&REQUEST=GetCapabilities&VERSION=1.3.0.[5]
GetMap requests generate georeferenced map images based on specified layers and bounding boxes. Mandatory parameters encompass REQUEST=GetMap, LAYERS (a comma-separated list of layer names, e.g., "layer1,layer2"), STYLES (a comma-separated list of style names corresponding to layers, defaulting to the default style if empty), CRS (coordinate reference system, such as "EPSG:4326" for WGS84), BBOX (bounding box in the order of the CRS axes, e.g., for EPSG:4326: min lat, min lon, max lat, max lon as "-90,-180,90,180"), WIDTH and HEIGHT (pixel dimensions of the output image, positive integers), and FORMAT (image MIME type, e.g., "image/png").[5] Optional parameters include TRANSPARENT (set to "TRUE" for PNG with alpha channel transparency or "FALSE" otherwise, defaulting to "FALSE"), BGCOLOR (background color in hexadecimal RGB, defaulting to 0xFFFFFF for white), and EXCEPTIONS (format for error reports, defaulting to "application/vnd.ogc.se_xml" for XML).[5] A sample request could be [https](/page/HTTPS)://[example.com](/page/Example.com)/wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&LAYERS=world&STYLES=&CRS=EPSG:4326&BBOX=-90,-180,90,180&WIDTH=800&HEIGHT=600&FORMAT=image/png&TRANSPARENT=TRUE.[5]
GetFeatureInfo requests extend GetMap by querying feature information at specific pixel locations within the generated map. They inherit all mandatory GetMap parameters (such as LAYERS, STYLES, CRS, BBOX, WIDTH, [HEIGHT](/page/Height), and FORMAT) and add REQUEST=GetFeatureInfo, QUERY_LAYERS (comma-separated list of layers to query, which must be a subset of LAYERS), INFO_FORMAT (response format, e.g., "text/xml" or "application/vnd.ogc.gml"), and I/J (or X/Y in earlier versions) specifying the pixel coordinates (0-based integers from the image's top-left corner).[5] Optional parameters include FEATURE_COUNT (maximum number of features to return per layer, defaulting to 1) and EXCEPTIONS for error formatting.[5] For instance, building on a GetMap, the request might append &REQUEST=GetFeatureInfo&QUERY_LAYERS=world&INFO_FORMAT=text/xml&I=400&J=300.[5]
Error handling in WMS requests occurs through service exceptions, which servers return when parameters are invalid or operations fail. The EXCEPTIONS parameter specifies the response format, with "application/vnd.ogc.se_xml" (XML) being mandatory and the default; optional formats include "INIMAGE" (embedded in the map image) or "BLANK" (a blank image with text).[5] Exception reports use standardized XML schemas and include codes such as "LayerNotDefined", "StyleNotDefined", "InvalidCRS", "InvalidDimensionValue", or "InvalidFormat", each accompanied by a locator identifying the problematic parameter.[5] This mechanism ensures clients receive structured feedback without disrupting the overall protocol flow.[5]
Responses
The Web Map Service (WMS) protocol defines standardized HTTP responses for its core operations, ensuring interoperability across geospatial servers and clients. These responses vary by operation: metadata is returned in XML for service discovery, while map rendering produces binary image data, and feature queries yield structured textual or markup outputs. All responses include appropriate HTTP status codes and Content-Type headers to indicate their format, with errors reported via a consistent XML exception mechanism.[5] The GetCapabilities response provides a comprehensive XML document describing the server's capabilities, enabling clients to discover available services without rendering maps. This document uses the MIME typetext/xml and follows the XML schema defined in the WMS 1.3.0 specification, with a root element <WMS_Capabilities version="1.3.0"> in the namespace http://www.opengis.net/wms. Key sections include <Service>, which contains identification metadata such as <Title> for the service name, <Abstract> for a description, and contact information; and <Capability>, which details supported operations (e.g., GetMap, GetFeatureInfo), request URLs, and output formats like image/png or image/jpeg. The <Layer> element within <Capability> outlines the hierarchical structure of available layers, including their <Name>, <Title>, supported coordinate reference systems (CRS) such as EPSG:4326, bounding boxes (<BoundingBox>), and associated styles (<Style> with <Name> and <Title>). If the request includes an invalid format or version, the server returns an XML <ServiceExceptionReport> with codes like InvalidFormat or VersionNegotiationFailed.[5]
For the GetMap operation, the server responds with binary image data representing the requested map, directly resulting from processed parameters like layers and bounding box. Supported formats include raster images such as PNG (image/png) or JPEG (image/jpeg), with the Content-Type header matching the specified FORMAT parameter; vector formats like SVG (image/svg+xml) are optional. Georeferencing is embedded via HTTP headers (e.g., Content-Disposition with world file attachments) or auxiliary files like PNG world files (.pgw) for pixel-to-coordinate mapping, ensuring the image can be positioned in geospatial contexts. If an exception occurs, such as an InvalidCRS due to unsupported projections or LayerNotDefined, the response may be an XML <ServiceExceptionReport> (default), an error image embedded via the INIMAGE format, or a blank output with the BLANK exception format.[5]
The GetFeatureInfo response, available in queryable WMS implementations, returns detailed attribute information for features at a specified pixel location (I, J coordinates) within the map image. This operation supports multiple output formats via the INFO_FORMAT parameter, including text/plain for simple textual data, text/xml (often GML-based) for structured markup, and text/html for formatted web display, with the Content-Type header set accordingly. The content typically includes feature identifiers, attributes (e.g., name, population for a queried polygon), and values from the specified QUERY_LAYERS, limited by a configurable FEATURE_COUNT. Exceptions, such as InvalidPoint for out-of-bounds queries or LayerNotQueryable, are reported in XML format.[5]
WMS responses adhere to validation rules to maintain protocol integrity, requiring proper Content-Type headers (e.g., text/xml; charset=[UTF-8](/page/UTF-8) for XML) and HTTP 200 OK status for successful outputs, while invalid requests trigger HTTP 400 Bad Request or 404 Not Found with accompanying XML exceptions. Error codes are standardized, covering issues like OperationNotSupported for unavailable operations or InvalidParameterValue for malformed inputs, ensuring clients can diagnose and recover from failures systematically.[5]
Layer and Styling
Layer Management
In Web Map Service (WMS), layers represent the fundamental units of geographic information that can be requested and rendered as map images. The structure of layers is defined within the Capabilities XML document returned by the GetCapabilities operation, organizing them into a hierarchical tree that allows for nested groupings and inheritance of properties.[1] This tree begins with a root Layer element, under which child Layer elements can be nested to form parent-child relationships, enabling logical organization such as grouping related thematic layers (e.g., a parent layer for "Hydrology" containing child layers for "Rivers" and "Lakes").[1] Each layer in this hierarchy includes mandatory elements like Name (a unique identifier, such as "topp:states" for a U.S. states layer), Title (a human-readable short name), and optional elements like Abstract (a descriptive summary of the layer's content and purpose).[1] Additional metadata elements specify the supported Spatial Reference Systems (SRS in WMS 1.1.1) or Coordinate Reference Systems (CRS in WMS 1.3.0), such as EPSG:4326 for WGS84, and BoundingBox, which defines the layer's geographic extent using coordinates in the specified CRS (e.g., minx=-180, miny=-90, maxx=180, maxy=90).[1] For layers with temporal or elevational dimensions, the Dimension element provides details like extent and resolution (e.g.,<Dimension name="time" units="ISO8601" default="P1Y"/> for yearly time steps).[1]
WMS distinguishes between named layers, which are server-defined and identifiable by their unique Name element for explicit requests, and base layers, which serve as foundational or background elements often without a specific name but inheriting properties from the hierarchy.[1] Named layers form the core of user-selectable content, while base layers might represent global references like a world outline map. Additionally, cascading layers allow a WMS server to incorporate remote layers from another WMS service, embedding them in its own hierarchy by referencing the external server's GetCapabilities response, thus enabling distributed layer composition without duplicating data.[1]
When making a GetMap request, clients select layers by specifying a comma-separated list of layer names in the LAYERS parameter (e.g., "layer1,layer2,layer3"), which determines the content to render; the order of names in this list controls the stacking sequence, with earlier layers drawn underneath later ones to manage overlaps and visibility.[1] Opacity can be applied to individual layers via vendor-specific parameters or extensions, allowing semi-transparent rendering (e.g., a value of 0.5 for 50% opacity) to blend layers effectively in composite maps.[1]
Layer metadata in the Capabilities XML includes the LatLonBoundingBox element, which provides a quick preview of the layer's extent in WGS84 latitude-longitude coordinates (e.g., minx=-74, miny=40, maxx=-73, maxy=41 for a New York area layer), facilitating initial client-side spatial filtering without full CRS processing.[1]
Styling Mechanisms
Web Map Services provide default styles for each layer, which are predefined by the server and described in the GetCapabilities response. These default styles determine the initial visual representation of the layer when no specific style is requested. Clients can select alternative server-provided styles using the STYLES parameter in the GetMap request, where the value is a comma-separated list corresponding to the ordered layers in the LAYERS parameter; an empty STYLES value (e.g., STYLES=) invokes the default style for each layer.[11] For more advanced customization, the Styled Layer Descriptor (SLD) standard enables user-defined styling of WMS layers. SLD is an XML-based encoding developed by the Open Geospatial Consortium (OGC) under document OGC 05-078r4, version 1.1.0, which extends the WMS specification to support symbolic representation including colors, symbols, and labels for geographic features and coverages. Integrated starting with WMS version 1.1.1, SLD allows clients to apply custom styles via the SLD or SLD_BODY parameters in GetMap requests, or by posting an XML document containing the SLD directly in the request body.[16] The core structure of an SLD document includes a StyledLayerDescriptor element that encapsulates one or more NamedLayer or UserLayer elements, each referencing a layer and its associated styles. For user-defined styles, the UserStyle element within a FeatureTypeStyle or CoverageStyle defines the rendering instructions, featuring a Name, Title, Abstract, and an IsDefault flag to indicate if it serves as the fallback style. Rules within UserStyle specify conditional rendering based on filters (using OGC Filter Encoding) and scale dependencies via MinScaleDenominator and MaxScaleDenominator elements, ensuring styles adapt to zoom levels and feature attributes.[16] SLD symbolization is achieved through specialized symbolizer elements tailored to geometry types. The PointSymbolizer renders point features with graphic symbols, such as icons or marks, positioned via size, rotation, and displacement properties. The LineSymbolizer styles linear features using strokes defined by color, width, opacity, and line patterns like dashes or perpendicular offsets. The PolygonSymbolizer handles area features by specifying fill patterns (solid colors, graphics, or gradients) and stroke properties for boundaries, supporting complex visualizations like hatching or textures. These components collectively allow precise control over the visual appearance, with labels integrated via TextSymbolizer for thematic annotation.[16] Style management in SLD-enabled WMS includes operations for cataloging and applying custom styles. The optional GetStyles operation retrieves a list of available named user-defined styles from the server, returning an XML response with style metadata for client selection. For ad-hoc customization, clients can submit UserDefined styles directly in GetMap requests via POST, embedding the full SLD XML in the request body to override or supplement server styles applied to selected layers.[4][16]Implementations
Server Software
Prominent server implementations for Web Map Service (WMS) include both open-source and commercial options, each offering distinct capabilities for hosting, rendering, and distributing geospatial data as map images over the web. These servers adhere to Open Geospatial Consortium (OGC) standards, enabling interoperability with various clients and data sources. Among open-source solutions, GeoServer is a Java-based platform that provides full OGC compliance for WMS, including certification for versions 1.1.1 and 1.3.0, and supports Styled Layer Descriptor (SLD) for advanced styling control.[17] It excels in environments requiring robust data management, such as serving vector and raster layers from databases like PostGIS, with use cases in environmental monitoring and urban planning applications. QGIS Server, integrated with the QGIS desktop application, enables serving WMS from QGIS project files, supporting versions 1.1.1 and 1.3.0, and is popular for community and small-team deployments due to its ease of use with familiar QGIS symbology and layouts.[12] MapServer, implemented in C for lightweight performance, supports WMS versions 1.0.0 through 1.3.0 and integrates seamlessly with scripting languages like PHP for dynamic map generation.[18] Its efficiency makes it suitable for resource-constrained deployments, such as embedding in web applications for real-time mapping in educational or small-scale GIS projects. Commercial implementations include ArcGIS Server from Esri, designed for enterprise-scale operations with WMS support across versions 1.0.0 to 1.3.0, featuring extensions like SLD for custom symbology and built-in caching to handle high-volume requests.[19] It is commonly used in large organizations for integrating with proprietary data pipelines, such as in utilities or defense sectors requiring secure, scalable map services. Oracle Spatial offers database-integrated WMS functionality, supporting versions 1.1.1 and 1.3.0 directly within Oracle Database, allowing spatial data rendering without external middleware.[20] This integration suits enterprise database environments, particularly for applications in logistics or resource management where geospatial queries are embedded in transactional systems. Key features across these servers include support for WMS 1.3.0 as a common standard for enhanced coordinate handling, cascading capabilities to proxy remote WMS layers for aggregated services, and performance optimizations like tile caching to reduce rendering overhead.[21][22] For instance, GeoServer integrates GeoWebCache for automatic tiling, while ArcGIS Server leverages service-level caching for complex layers. These implementations are deployed both on-premise for controlled environments and in cloud platforms like AWS and Azure for elastic scaling, with examples in government portals such as the USGS EarthExplorer, which utilizes WMS for public access to satellite imagery and topographic data.[23]Client Tools
Client tools for consuming Web Map Service (WMS) enable users to access, visualize, and integrate geospatial data from remote servers in various environments, from desktop applications to web and mobile platforms. These tools handle requests for map images, legends, and feature information, supporting standards like OGC WMS 1.1.1 and 1.3.0 for interoperability.[1] In desktop geographic information systems (GIS), QGIS provides robust support for adding WMS layers through its built-in WMS/WMTS plugin, allowing users to connect to remote servers by entering a service URL and selecting layers for overlay on local maps. This open-source tool facilitates layer addition, transparency adjustments, and querying via GetFeatureInfo requests directly within its interface.[24] Similarly, ArcGIS Pro enables the import of WMS layers by creating a new WMS server connection in the Catalog pane, where users can browse capabilities, select sublayers, and add them to a map for analysis and visualization.[25] For web-based applications, JavaScript libraries offer lightweight integration of WMS services. Leaflet.js supports WMS through its L.TileLayer.WMS class, which generates tiled map images by constructing GetMap requests with parameters like bounding box, layers, and styles, enabling seamless overlay on interactive maps.[26] OpenLayers, designed with OGC standards in mind, provides comprehensive WMS support via classes like ol.source.ImageWMS and ol.source.TileWMS, allowing dynamic requests for single images or tiled layers, including feature information retrieval and custom projections.[27] Mobile applications leverage WMS for on-the-go access, though support varies. Google Earth allows partial WMS overlays by adding image layers through the Add > Image Overlay menu, where users input the WMS URL and configure refresh settings to display dynamic map images on its 3D globe.[28] For custom mobile development, GDAL/OGR bindings enable WMS consumption in apps; the GDAL WMS driver supports raster access to OGC WMS servers for both tiled and untiled requests, with Java and other language bindings integrable into Android or iOS frameworks for processing geospatial data.[29] WMS integration into dashboards often occurs via web libraries or plugins that wrap HTTP requests, such as the Geomap WMS Panel for Grafana, which adds OGC WMS layers to visualizations by specifying service endpoints and layer parameters for real-time mapping displays. Handling projections in these integrations is facilitated by libraries like Proj4js, which transforms coordinates between systems (e.g., EPSG:4326 to custom projections) to align WMS images with dashboard maps, as demonstrated in OpenLayers examples.[30][31] Clients typically construct key-value pair (KVP) URLs for WMS access, ensuring compatibility with server responses.[1]Interoperability
Related OGC Standards
The Web Feature Service (WFS) standard enables direct access to vector-based geographic features and their properties, differing from the Web Map Service (WMS) which delivers pre-rendered raster map images for visualization.[32][33] While WMS focuses on generating static or dynamic images from geospatial data, WFS allows clients to query, retrieve, and interact with individual features, including their geometries and attributes, supporting applications that require detailed data manipulation.[32] A key distinction is WFS's support for transactional operations, such as creating, updating, or deleting features, which facilitates editable geospatial datasets in contrast to WMS's read-only image output.[32] The Web Map Tile Service (WMTS) complements WMS by providing a mechanism for serving pre-generated, cached map tiles optimized for high-performance delivery, rather than WMS's on-the-fly dynamic rendering.[34][33] WMTS uses a tile matrix set to define fixed grid-based images at multiple scales, reducing server processing demands and enabling faster client-side rendering, particularly in web mapping applications with frequent zooms and pans.[34] This tiled approach contrasts with WMS's flexibility in custom image generation but offers superior scalability for large-scale, repetitive map requests.[34] The Catalogue Service for the Web (CSW) facilitates the discovery and harvesting of metadata for geospatial resources, including WMS endpoints, without directly handling data delivery like WMS.[35][33] CSW allows users to search and retrieve descriptive information about services, datasets, and related objects using standardized query interfaces, enabling metadata aggregation across distributed catalogues.[35] This supports the identification and binding to WMS instances by exposing service capabilities and resource details, streamlining integration in broader geospatial workflows.[35] These standards interrelate within the Open Geospatial Consortium's (OGC) Web Services (OWS) framework, which defines common elements like service identification and operations (e.g., GetCapabilities) shared across WMS, WFS, WMTS, and CSW. WMS is frequently combined with WFS in hybrid applications to provide both visual map rendering and interactive feature editing, enhancing data interoperability and user engagement in geospatial systems.[36]Modern Extensions
Since the release of the OGC Web Map Service (WMS) 1.3.0 standard in 2006, subsequent developments have focused on enhancing interoperability, security, and integration with modern web architectures while addressing limitations in scalability and performance. The OGC API - Maps, initiated in 2019 and approved as an official standard (Part 1: Core) in September 2024, serves as a successor standard to WMS, providing a RESTful web API for requesting and serving spatially referenced maps, either static or dynamically rendered.[37][38] This approach replaces WMS's traditional request-response model with modular, resource-oriented HTTP GET operations described via OpenAPI specifications, enabling better scalability through support for tiled maps in conjunction with OGC API - Tiles and limits on map dimensions (e.g., maximum pixels up to 4,194,304) to optimize resource usage.[39] Partial migration paths from WMS exist, such as facades or proxies implemented in tools like GeoServer, which wrap existing WMS endpoints to expose them via OGC API - Maps interfaces.[38] Extensions to WMS have included non-standard wrappers for RESTful access and security enhancements through the OGC Web Services Security (OWS Security) standard. Implementations like GeoServer provide RESTful APIs for configuring and managing WMS layers, effectively wrapping core WMS operations in a REST architecture to facilitate integration with modern development workflows. For security, the OWS Security 1.0 standard (2019) adds authentication and authorization mechanisms applicable to WMS 1.3.0, including support for OAuth 2.0 Bearer tokens as an authentication method, advertised via service capabilities documents using URN identifiers likeurn:ogc:def:security:authentication:ietf:6750:Bearer.[40] This enables secure access control, such as integrating with OpenID Connect for identity federation, without altering the core WMS protocol.[40]
Current trends reflect a hybrid usage of WMS alongside emerging formats, particularly vector tiles, while signaling a gradual deprecation in favor of API-based alternatives amid persistent legacy support. WMS servers like GeoServer and MapServer have been extended to output Mapbox Vector Tiles (MVT) directly via GetMap requests, allowing hybrid rendering where raster images from WMS are combined with client-side styled vector data for interactive maps in libraries like Mapbox GL JS.[41][42] Although OGC has shifted focus to successors like OGC API - Maps, reducing the likelihood of major WMS updates, WMS remains widely supported for legacy systems due to its entrenched adoption in geospatial infrastructures.[43]
WMS faces ongoing challenges in high-traffic scenarios, primarily due to its dynamic, on-demand image rendering, which can lead to bottlenecks in response times and resource consumption under heavy loads.[44] Studies highlight the need for optimizations like caching and cloud-native deployments to mitigate these issues, as traditional WMS implementations struggle with scalability in containerized or distributed environments. Recent updates, such as the 2024 DGIWG Defence Profile of OGC WMS 1.3 (Edition 3.1.0), provide best practices to address these, including recommendations for response times under 5 seconds for standard image sizes (e.g., 470 KB), support for at least 20 requests per second, and 99.9% availability, alongside clarifications on multi-dimensional data handling for time and elevation parameters.[43]