WMS er kanskje ikke et begrep som er kjent for alle, men for GIS-mennesker begynner det å bli noe man må forholde seg til. Jeg skal i denne artikkelen prøve å beskrive hvordan man kan sette opp sin egen kartklient og wms-tjener for å vise data fra forskjellige kilder, alt med Open Source produkter og fritt tilgjengelige data.
Jeg vil først beskrive noen av standardene som brukes, og deretter beskrive noen av programmene som brukes. Til slutt vil jeg beskrive noen kilder til åpne kartdata og vise noen eksempler.
Hva er WMS?
Web Map Service (WMS) er en standard for utveksling av kartinformasjon over internett. Det er en standard utarbeidet av Open Geospatial Consortium (OGC), som driver med standarder for geografisk informasjon på nett. WMS er en web-service for kartdata, den returnerer et kartbilde når man sender en request.
Et enkelt eksempel vil for eksempel kunne se slik ut:
Dette bildet blir hentet via et WMS-kall til en wms-tjener, med parametere for hvilket område jeg vil ha, projeksjon, høyde og bredde på bildet etc.. Urlen vil typisk se slik ut:
http://geomatikk.eksplisitt.net:8081/geoserver/wms?service=wms&version=1.1.1&request=GetMap&
layers=topp:norge_utm33&srs=EPSG:32633&
bbox=-99438.22,6426073.41,1121927.04,7962739.19&
width=256&height=256&format=image/png
Det å se bildet i seg selv er ikke så gøy. Det finnes diverse kartklienter som får til pan og zoom etc på grunnlag av en slik wms. En av disse klientene er Open Source klienten OpenLayers, en JavaScript klient som tar seg av slikt. Wmsen presentert over i OpenLayers vil kunne se ut som i dette eksempelet.
Få tak i WMS-tjenester
For å kunne sette opp en slik karttjener må man ha tilgang til data, eller mer spesifikt en wms. GeoNorge har en samling slike wms’er med diverse informasjon. Desverre er dataene fra Statens Kartverk ikke frie, så vi får ikke tilgang til bakgrunnsdata. Imidlertid har andre organisasjoner data ute, for eksempel Direktoratet for naturvernforbundet. Fra listen finner vi: “Villreinområder fra Naturbase. I tillegg også en del andre villreinrelaterte tema.” Vi ser her at den har en WMS-url som er:
http://dnweb12.dirnat.no/wmsconnector/com.esri.wms.Esrimap/WMS_NB_Villrein
For å få mer informasjon om denne WMSen kan vi kjøre et getCapabilities-kall. Dette returnerer et XML-dokument som beskriver tjenesten. Vi kjører dette:
http://dnweb12.dirnat.no/wmsconnector/com.esri.wms.Esrimap/WMS_NB_Villrein?service=wms&request=getCapabilities
.
Her får vi en del info om selve tjenesten, før vi lengre ned ser
<Layer queryable="0" opaque="0" noSubsets="0">
<Title>WMS_NB_Villrein</Title>
<SRS>EPSG:4326</SRS>
<SRS>EPSG:32633</SRS>
<SRS>EPSG:4267</SRS>
<SRS>EPSG:4269</SRS>
<SRS>EPSG:32632</SRS>
<SRS>EPSG:32633</SRS>
<SRS>EPSG:32634</SRS>
<SRS>EPSG:32635</SRS>
<SRS>EPSG:32636</SRS>
<LatLonBoundingBox minx="5.6955424716" miny="58.7163126769" maxx="8.997812589" maxy="61.1780439641"/>
<BoundingBox SRS="EPSG:32633" minx="-1751.06" miny="6556703.12" maxx="323569.09" maxy="6983009.97"/>
Dette er informasjon om selve WMSen. Her får vi vite hvilke projeksjoner den støtter (beskrevet med EPSG-koder, for en liste se: spatialreference.org). Vi får også vite boundingBoxer, dvs området wmsen dekker.
Lengre ned finner vi:
<Layer queryable="1">
<Name>Villreinomrader</Name>
<Title>Villreinomrader</Title>
<SRS>EPSG:4326</SRS>
<LatLonBoundingBox minx="-0.9519691343" miny="57.7522859367" maxx="31.9406987594" maxy="71.5611319472"/>
</Layer>
Vi ser at layeret er queryable, dvs at vi kan spørre etter det. Det heter “villreinområder” og er primært i projeksjonen med EPSG:4326 (dette er lat-long). Men siden vi har listen over vet vi at vi kan få det i alle de oppgitte projeksjonene. For å teste dette kan vi prøve å sende en request:
http://dnweb12.dirnat.no/wmsconnector/com.esri.wms.Esrimap/WMS_NB_Villrein?
service=wms&version=1.1.1&request=GetMap&
layers=Villreinomrader&srs=EPSG:32633&
bbox=-99438.22,6426073.41,1121927.04,7962739.19&
width=256&height=256&format=image/png
Som gir dette resultatet:
Ikke spesielt imponerende, men ved å bruke OpenLayers kan vi kombinere denne wmsen med oversiktskartet over Norge vi brukte ista, da får vi et kart som vist her: Villreinområder i Norge.
Egne data
Bakgrunnskartet over Norge kjører på en egen WMS-tjener, satt opp med OpenSource programmet Geoserver. Kartdataene er en del av Vector Map (VMAP) Level 0 som er i Public Domain (dvs gratis tilgjengelig, bla.a. her). Prosessen med å velge ut hva man vil ha her og å sette opp GeoServer tar jeg ikke med her, kanskje det blir en egen artikkel om det er interesse?
Google Maps er nok kjent for de fleste, og mashups med Google maps er utbredt. Imidlertid kan man også vise Google sine kartdata i OpenLayers, som beskrevet her. Du må da ha en Google Maps API Key. Det å kombinerer villrein-WMSen med Google sine sattelittbilder er ikke helt greit, da Google kjører sin egen pojeksjon. Prøver vi på dette får vi et ganske rart resultat: Google Maps, Villrein.
Det man skal være klar over er at Google sine kartdata ikke leveres som en WMS, men i et eget format (slik jeg har forstått det).
Dette er uansett kun en kort innføring. Vil du lære mer anbafaler jeg å se på kildekoden til eksemplene her, og eventuelt skaffe deg boka: GIS for Web Developers av Scott Davis.
Eventuelt kan du jo prøve å spørre meg i kommentarfeltet 😉 Håper uansett noen sitter igjen med en følelse av hva WMS er og hva det kan brukes til.