Web Map Service
Web Map Service (WMS) – stworzony przez Open Geospatial Consortium (OGC)[1] standard udostępniania w Internecie danych geograficznych (map) w postaci rastrowej[2].
W zapytaniu do serwera WMS podaje się parametry mapy (żądane warstwy, obszar geograficzny, układ współrzędnych). W odpowiedzi przesyłany jest obraz mapy (np. w formacie JPEG, PNG, GIF), wygenerowany przez serwer na podstawie danych zawartych w bazach danych (np. PostGIS) lub plikach (np. GML, ESRI shapefile).
Zasada działania
W celu wyświetlenia map użytkownik łączy się z serwerem WMS przy pomocy klienta WMS (najczęściej jest to specjalny program). Klient pobiera z serwera metadane, w których znajduje się lista dostępnych warstw, obsługiwane formaty, systemy współrzędnych itp. Użytkownik wybiera interesujące go warstwy, a program wysyła do serwera zapytanie o gotowy wycinek mapy o zadanych wymiarach i położeniu.
Wersje
Pierwszą wersję standardu WMS (1.0.0) OGC wydało w kwietniu 2000 roku[3], kolejną (1.1.0) – w czerwcu 2001[4]. Trzecia wersja (1.1.1) wydana została w styczniu 2002[5]. Najnowsza wersja 1.3.0 wydana została w marcu 2006 roku[6]; jest to ten sam dokument, co ISO 19128[7].
Klient WMS może dowiedzieć się od serwera, które wersje protokołu obsługuje. Służy do tego zapytanie GetCapabilities. Jeśli w zapytaniu
- nie podano numeru wersji lub
- numer wersji jest nieznany serwerowi i jednocześnie wyższy niż najniższy znany serwerowi
to serwer odpowiada podając najwyższy mniejszy od podanego wspierany numer (lub po prostu najwyższy).
Jeśli
- numer wersji jest nieznany serwerowi i jednocześnie niższy niż najniższy znany serwerowi
to serwer odpowiada podając najniższy wspierany numer.
Zapytania
Informacje w tej sekcji dotyczą standardu w wersji 1.3.0, chyba że zaznaczono inaczej. |
Określonych jest kilka zapytań obsługiwanych przez serwer WMS (standardowo przesyłane metodą GET, opcjonalnie też metodą POST, protokołu HTTP). Dwa z nich muszą być obsługiwane obowiązkowo[6]. Rodzaj zapytania określa się za pomocą obowiązkowego parametru request.
WMS podstawowy (ang. Basic WMS)
- GetCapabilities - pozwala uzyskać metadane - opis zawartości serwera, dostępnych wartości parametrów (np. dostępnych warstwach, odwzorowaniach / układach geograficznych?)
- GetMap- zapytanie o mapę (obraz rastrowy)
WMS rozszerzony (odpytywany) (ang. Queryable WMS) – prócz zapytań podstawowych obsługuje
- GetFeatureInfo - zapytanie o dane dotyczące konkretnego punktu na mapie - zwraca informacje o atrybutach obiektów znajdujących się w danym punkcie
W odpowiedzi na zapytanie serwer zwraca odpowiedź w formacie domyślnym bądź podanym w parametrze format lub wyjątek z informacją o błędzie (np. o niepoprawnych wartościach parametrów).
Parametry
Kolejność parametrów zapytania nie jest istotna.
Wielkości liter nie są rozróżnialne w nazwach parametrów (request jest równoważne REQUEST i Request), ale już wartości parametrów są wrażliwe na duże i małe litery (warstwa o nazwie Rzeki nie jest tą samą co warstwa o nazwie rzeki).
GetCapabilities
Zapytanie obsługiwane obowiązkowo. Wykorzystywane do negocjacji między klientem a serwerem w celu ustalenia obsługiwanej wersji standardu oraz aby pobrać metadane usługi.
Parametry obligatoryjne
- REQUEST = GetCapabilities
- SERVICE = WMS
Parametry dodatkowe
- VERSION = [wersja] - służy m.in. do negocjacji obsługiwanych wersji; domyślnie: 1.3.0
- FORMAT
- UPDATESEQUENCE
Przykładowe zapytanie
http://sdi.geoportal.gov.pl/WMS_ORTO/WMService.aspx?REQUEST=GetCapabilities&SERVICE=WMS \_________________________________________________/ \_________________________________/ adres serwera parametry zapytania
Odpowiedź na zapytanie
Odpowiedzią na poprawne zapytanie GetCapabilities jest dokument XML zgodny z odpowiednim XML Schema (XML Schema dla WMS znajdują się w załączniku dokumentacji, a także na stronie http://schemas.opengis.net/wms/1.3.0/). Odpowiedź zawiera między innymi takie elementy jak:
- Service - zawiera metadane dotyczące całości usługi: nazwę, tytuł, opis, słowa kluczowe, informacje kontaktowe i inne.
- Capability - metadane o konkretnych usługach, zwłaszcza udostępnianych warstwach i stylach
- Layer - metadane o warstwach. Niektóre z nich są konieczne przy tworzeniu zapytania GetMap. Zawiera między innymi:
- Name - nazwa warstwy lub grupy warstw (używany w komunikacji maszyna-maszyna)
- Title - tytuł (wyświetlany użytkownikowi)
- Abstract - opis
- KeywordList - lista słów kluczowych
- Style - style
- CRS - układy współrzędnych w jakich jest dostępna warstwa (w wersjach 1.0.0, 1.1.0 i 1.1.1 odpowiadający parametr to SRS)
- BoundingBox - prostokąt ograniczający
- Queryable - odpytywalność - czy serwer udostępnia operację GetFeatureInfo dla danej warstwy
- Layer - metadane o warstwach. Niektóre z nich są konieczne przy tworzeniu zapytania GetMap. Zawiera między innymi:
GetMap
Zapytanie obsługiwane obowiązkowo. Określa parametry żądanej mapy, odpowiedzią powinna być ta mapa w postaci rastrowej lub wyjątek usługi.
Parametry obligatoryjne
- REQUEST = GetMap
- SERVICE = WMS
- VERSION = 1.3.0 (lub inna)
- LAYERS = [lista_warstw] - nazwy warstw mapy (parametr Name warstwy), jedna lub więcej rozdzielanych przecinkami
- STYLES = [lista_stylów] - style, w jakich ma być wyświetlona mapa; tyle, ile jest żądanych warstw, rozdzielane przecinkami; każdy styl z listy dotyczy odpowiadającej warstwie z listy layers
- CRS = [namespace:identyfikator] - układ współrzędnych, np. EPSG:2180 (układ Polska 1992), CRS:84 (WGS 84 longitude-latitude)
- BBOX = [minx,miny,maxx,maxy] - prostokąt ograniczający (BoundingBox) w jednostkach i orientacji układu współrzędnych (parametru crs)
- WIDTH = [szerokość] - szerokość obrazka mapy w pikselach
- HEIGHT = [wysokość] - wysokość obrazka mapy w pikselach
- FORMAT = [format] - format mapy, np. image/png, image/gif
Parametry dodatkowe
- TRANSPARENT = [true/false] - czy tło mapy ma być przezroczyste; potrzebne gdy chcemy nałożyć kilka warstw na siebie; domyślnie: false (tło nieprzezroczyste)
- BGCOLOR = [color] - kolor tła mapy, w szesnastkowym formacie rgb; domyślnie: 0xFFFFFF (białe)
- EXCEPTIONS = [format] - format, w jakim powinny być zgłaszane wyjątki w przypadku nieprawidłowego zapytania; domyślnie: XML
- TIME = [time] - mapa z danego czasu; np. dla godzinnych map pogody
- ELEVATION = [elevation] - wysokość; np. dla map stężenia ozonu w atmosferze na różnych wysokościach
Przykładowe zapytanie
wms.gdos.gov.pl/geoserver/wms?service=WMS&request=GetMap&VERSION=1.1.1&FORMAT=image/gif&WIDTH=400&HEIGHT=300&LAYERS=gdos_int:Rezerwaty&SRS=EPSG:2180&BBOX=734500,191000,738500,194000&styles=rezerwaty
Odpowiedź na zapytanie
Odpowiedzią na poprawne zapytanie GetMap jest rastrowy obraz mapy, składający się z podanych warstw w zadanych stylach, w określonym układzie współrzędnych, o granicach określonych prostokątem ograniczającym, w podanym formacie i z określoną przezroczystością.
Jeśli zapytanie było niepoprawne, odpowiedzią jest wyjątek z informacją o błędzie, w podanym formacie.
GetFeatureInfo
Zapytanie obsługiwane opcjonalnie. Pozwala uzyskać więcej informacji o obiekcie na zwróconym wcześniej rysunku mapy.
Zazwyczaj programy-klienci pozwalają kliknąć na wyświetlonej mapie (pobranej za pomocą WMS GetMap) w interesujący punkt, a następnie za pomocą zapytania GetFeatureInfo zapytać serwer WMS o dany punkt.
GetFeatureInfo wymaga większości parametrów wymaganych do GetMap, plus informacji o wskazanym miejscu (punkt (I, J)). Na tej podstawie oblicza współrzędne punktu (I,J), a następnie zwraca informacje dotyczące znajdujących się w tym miejscu obiektów.
Parametry obligatoryjne
- REQUEST = GetFeatureInfo
- SERVICE = WMS
- VERSION = 1.3.0 (lub inna)
- LAYERS = [lista_warstw] - nazwy warstw mapy (parametr Name warstwy), jedna lub więcej rozdzielanych przecinkami
- CRS = [namespace:identyfikator] - układ współrzędnych, np. EPSG:2180 (układ Polska 1992), CRS:84 (WGS 84 longitude-latitude)
- BBOX = [minx,miny,maxx,maxy] - prostokąt ograniczający (BoundingBox) w jednostkach i orientacji układu współrzędnych (parametru crs)
- WIDTH = [szerokość] - szerokość obrazka mapy w pikselach
- HEIGHT = [wysokość] - wysokość obrazka mapy w pikselach
- FORMAT = [format] - format mapy, np. image/png, image/gif
- QUERY_LAYERS = [lista_warstw] - nazwy odpytywanych warstw mapy (parametr Name warstwy), jedna lub więcej rozdzielanych przecinkami; warstwy te muszą być "odpytywalne" (queryable)
- INFO_FORMAT - typ MIME, w jakim ma być zwrócona odpowiedź, np. "text/xml" oznacza formatowanie XML
- I = [num], J=[num] - współrzędne punktu którego dotyczy zapytanie; jednostki: piksele na obrazie mapy; (0,0) oznacza lewy górny róg obrazka, I rośnie w prawo, a J w dół
Parametry dodatkowe
- FEATURE_COUNT = [no] - maksymalna liczba obiektów na pojedynczej warstwie, o których informacja ma być zwrócona; domyślna wartość: 1
- EXCEPTIONS = [format] - format, w jakim powinny być zgłaszane wyjątki w przypadku nieprawidłowego zapytania; domyślnie: XML
Przykładowe zapytanie
http://wms.gdos.gov.pl/geoserver/wms?service=WMS&request=GetFeatureInfo&VERSION=1.1.1&QUERY_LAYERS=Rezerwaty&x=200&y=200&info_format=text/plain&WIDTH=400&HEIGHT=300&SRS=EPSG:2180&BBOX=734500,191000,738500,194000&FORMAT=image/gif&WIDTH=400&HEIGHT=300&LAYERS=gdos_int:Rezerwaty
Odpowiedź na zapytanie
W odpowiedzi na zapytanie GetFeatureInfo powinna być w formacie podanym w parametrze INFO_FORMAT. Natura odpowiedzi zależy od dostawcy usługi, ale powinna dotyczyć obiektu najbliższego punktowi (I,J).
Zależnie od dostawcy i INFO_FORMAT odpowiedzią może być np. lista obiektów i ich atrybutów, albo obiekt w formacie wektorowym.
Przypisy
- ↑ Scharl i Tochtermann 2007 ↓, s. 225.
- ↑ Scharl i Tochtermann 2007 ↓, s. 4.
- ↑ 00-028 OpenGIS Web Map Server Interface Implementation Specification - 1.0.0 (ang.). [dostęp 2012-06-24].
- ↑ 01-047r2 Web Map Service Implementation Specification - 1.1.0 (ang.). [dostęp 2012-06-24].
- ↑ 01-068r3 Web Map Service Implementation Specification - 1.1.1. (ang.). [dostęp 2012-06-24].
- ↑ a b 06-042 OpenGIS Web Map Server Interface Implementation Specification - 1.3.0 (ang.). [dostęp 2012-06-24].
- ↑ OpenGIS Web Map Service Implementation Specification (ang.). [dostęp 2012-06-24].
Bibliografia
Arno Scharl , Klaus Tochtermann (red.), The Geospatial Web, London: Springer London, 2007, DOI: 10.1007/978-1-84628-827-2, ISBN 978-1-84628-826-5 (ang.).
Linki zewnętrzne
Media użyte na tej stronie
Autor: Krezka, Licencja: CC0
Rastrowy obraz mapy - odpowiedź serwera na poprawne zapytanie GetMap (Web Map Service)