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 edytuj

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 edytuj

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 edytuj

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 edytuj

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 edytuj

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 edytuj

  • REQUEST = GetCapabilities
  • SERVICE = WMS

Parametry dodatkowe edytuj

  • VERSION = [wersja] - służy m.in. do negocjacji obsługiwanych wersji; domyślnie: 1.3.0
  • FORMAT
  • UPDATESEQUENCE

Przykładowe zapytanie edytuj

 http://sdi.geoportal.gov.pl/WMS_ORTO/WMService.aspx?REQUEST=GetCapabilities&SERVICE=WMS
 \_________________________________________________/ \_________________________________/
              adres serwera                               parametry zapytania

Odpowiedź na zapytanie edytuj

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

GetMap edytuj

 
Przykładowa odpowiedź na zapytanie Get Map; dwie warstwy (budynki i drzewa) oraz przezroczyste tło

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 edytuj

  • 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 edytuj

  • 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 edytuj

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 edytuj

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 edytuj

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 edytuj

  • 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 edytuj

  • 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 edytuj

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 edytuj

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 edytuj

Bibliografia edytuj

Linki zewnętrzne edytuj