Web Map Service

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

Web Map Service (WMS) - stworzony przez Open Geospatial Consortium (OGC) standard udostępniania map w postaci rastrowej za pomocą interfejsu HTTP.

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 | edytuj kod]

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 | edytuj kod]

Pierwszą wersję standardu WMS (1.0.0) OGC wydało w kwietniu 2000 roku[1], kolejną (1.1.0) - w czerwcu 2001[2]. Trzecia wersja (1.1.1) wydana została w styczniu 2002[3]. Najnowsza wersja 1.3.0 wydana została w marcu 2006 roku[4]; jest to ten sam dokument, co ISO 19128[5].

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 | edytuj kod]

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[4]. 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 | edytuj kod]

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 | edytuj kod]

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 | edytuj kod]

  • REQUEST = GetCapabilities
  • SERVICE = WMS

Parametry dodatkowe[edytuj | edytuj kod]

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

Przykładowe zapytanie[edytuj | edytuj kod]

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

Odpowiedź na zapytanie[edytuj | edytuj kod]

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 | edytuj kod]

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 | edytuj kod]

  • 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_styli] - 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 | edytuj kod]

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

http://localhost/wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&LAYERS=pl92:budynki,pl92:drzewa_lisc_92&STYLES=Default,Default&BBOX=633551.3706279991,486512.54312255606,634764.7590243809,487739.65151950344&WIDTH=506&HEIGHT=512&CRS=EPSG:2180&FORMAT=image/png&TRANSPARENT=true

Odpowiedź na zapytanie[edytuj | edytuj kod]

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 | edytuj kod]

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 | edytuj kod]

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

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

http://localhost/wms?service=WMS&request=GetFeatureInfo&version=1.3.0&i=50&j=50&layers=WOJEWODZTWA&query_layers=WOJEWODZTWA&info_format=text/xml&styles=&crs=EPSG:4326&bbox=49,14,54,24&format=image/png&width=255&height=255

Odpowiedź na zapytanie[edytuj | edytuj kod]

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.

Zobacz też[edytuj | edytuj kod]

Przypisy

Linki zewnętrzne[edytuj | edytuj kod]