WebMapService (WMS)
WebMapService, w skrócie WMS, jest otwartym standardem opublikowanym przez Open Geospatial Consortium (OGC) umożliwiającym udostępnianie map rastrowych przez internet w odpowiedzi na zapytania HTTP. WMS definiuje sposób wymiany danych geoprzestrzennych między serwerem mapowym a klientem, z uwzględnieniem parametrów takich jak układ współrzędnych, warstwy, styl, rozdzielczość i format wyjściowy.
Historia
Pierwsza wersja WMS została wydana w 2000 roku jako WMS 1.0.0. Standard był rozwijany w kolejnych latach, a najważniejsze wersje to WMS 1.1.0 (2001), WMS 1.1.1 (2002) oraz WMS 1.3.0 (2006). Wersja 1.3.0 wprowadziła obsługę układów współrzędnych opartych na systemie EPSG oraz zmieniła kolejność parametrów wymiany (np. CRS → CRS w 1.3.0). Aktualnie najpowszechniej używaną wersją jest WMS 1.3.0, choć niektóre implementacje nadal obsługują starsze wersje.
Podstawowe zasady działania
Komunikacja w ramach WMS odbywa się wyłącznie za pośrednictwem protokołu HTTP. Klient, najczęściej przeglądarka lub aplikacja GIS (np. QGIS czy ArcGIS), wysyła zapytanie GetMap z zestawem parametrów, a serwer zwraca mapę w postaci obrazu rastrowego (np. image/png, image/jpeg) lub dokumentu wektorowego (np. application/vnd.ogc.gml w przypadku WFS).
- GET vs. POST – zapytania
GetMapmogą być realizowane metodąGET(parametry w URL) lubPOST(parametry w treści żądania). - Parametry obowiązkowe –
LAYERS,STYLES,CRS(lubSRSw wersji 1.1.1),BBOX,WIDTH,HEIGHT,FORMAT. - Obsługa układów współrzędnych – serwer może udostępniać te same warstwy w różnych układach, a klient określa żądany układ za pomocą parametru
CRS.
Struktura odpowiedzi
Odpowiedź serwera WMS zawiera zazwyczaj:
- Obraz rastrowy w wybranym formacie (PNG, JPEG, GeoTIFF).
- Opcjonalnie warstwę maski (ang. transparent mask) przy użyciu kanału alfa.
- W nagłówkach HTTP informacje o wersji, typie treści (
Content-Type) oraz ewentualne komunikaty o błędach.
Standardy i powiązane usługi
WMS jest częścią rodziny standardów OGC, które obejmują również:
- Web Feature Service (WFS) – wymiana danych wektorowych.
- Web Coverage Service (WCS) – udostępnianie danych geoprzestrzennych w formie rastrów (np. zdjęcia satelitarne).
- Web Map Tile Service (WMTS) – dostarczanie map w postaci predefiniowanych kafelków, co zwiększa wydajność.
- Catalogue Service for the Web (CSW) – katalogowanie usług i zasobów geoprzestrzennych.
Implementacje serwerów WMS
Na rynku dostępnych jest wiele otwarto‑źródłowych oraz komercyjnych implementacji WMS, m.in.:
- GeoServer – serwer oparty na języku Java, szeroko stosowany w projektach otwarto‑źródłowych.
- MapServer – projekt w języku C, wspiera zarówno WMS, jak i WMTS oraz inne usługi OGC.
- ArcGIS Server – komercyjna platforma firmy Esri, oferująca rozbudowane możliwości zarządzania usługami GIS.
- QGIS Server – wykorzystuje silnik QGIS do publikacji map w formacie WMS.
Zastosowania
WebMapService znajduje zastosowanie w wielu dziedzinach, takich jak:
- Planowanie przestrzenne – udostępnianie map bazowych i warstw tematycznych dla urzędów i samorządów.
- Systemy informacji o zagrożeniach – szybkie wyświetlanie danych dotyczących powodzi, pożarów czy wstrząsów sejsmicznych.
- Turystyka i nawigacja – integracja map topograficznych w aplikacjach mobilnych.
- Badania naukowe – dostęp do danych satelitarnych i pomiarowych w ramach projektów międzynarodowych.
Bezpieczeństwo i kontrola dostępu
Standard WMS nie definiuje mechanizmów autoryzacji, dlatego w praktyce wykorzystywane są:
- Uwierzytelnianie HTTP Basic lub Digest.
- Tokeny OAuth 2.0 (integracja z REST API).
- Filtry IP i reguły firewall.
W niektórych wdrożeniach stosowane są także SAML i Kerberos w celu zapewnienia jednokrotnego logowania (SSO).
Przykładowe zapytanie GetMap
GET /wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap
&LAYERS=ortofoto,granice_administracyjne
&STYLES=,&CRS=EPSG:4326
&BBOX=49.0,14.0,50.0,15.0
&WIDTH=800&HEIGHT=600
&FORMAT=image/png
HTTP/1.1
Host: example.com
W odpowiedzi serwer zwraca nagłówek Content-Type: image/png oraz binarne dane obrazu.
Wersje i kompatybilność
Choć najnowsza wersja WMS (1.3.0) jest zalecana, wiele starszych aplikacji wciąż operuje na wersjach 1.1.1 i 1.1.0. Dlatego serwery często oferują obsługę kilku wersji jednocześnie, umożliwiając klientom wybór najodpowiedniejszej.