Web Map Service (WMS)

Introduksjon

NVEs geografiske fagdata er tilgjengelig fra karttjenestene som du finner på denne siden, enten det er for å se på dataene eller laste dem ned til din egne maskin. Karttjenestene og datasettene er åpne for alle.

Bruk av WMS-tjeneste

Kilde skal oppgis ved bruk.

Format

Dataene leveres enten via

Eller kan lastes ned fra http://nedlasting.nve.no/gis/.

WMS tjenester

Ny WMS tjeneste = Ny WMS
WMS tjeneste avsluttes = WMS avsluttes
Web Map Service, til bruk i kartapplikasjoner og kartverktøy.
WMS adresser

Eksempler

Leaflet

I dette eksempelet viser vi hvordan det er mulig å bruke WMS tjenestene våre i Leaflet til å vise ulike kartlag som beskriver nedbørfelt i Norge. Fremgangsmåten vil være den samme uansett hvilke kartlag man ønsker å vise, og man kan enkelt bytte ut kartlagene som vi bruker i eksempelet med andre kartlag.

For å vise WMS kartlag i Leaflet må man benytte seg av L.tileLayer.wms. For å lage et nytt WMS kartlag med L.tileLayer.wms må gi inn to parametere til metoden. Det første parameteret er URLen til WMS tjenesten man ønsker å bruke. I dette tilfellet ønsker vi å se på nedbørfelt, og fra oversikten som ligger her kan vi se at adressen til GetCapabilities dokumentet til tjenesten er følgende: http://wms3.nve.no/map/services/Nedborfelt/MapServer/WMSServer?request=GetCapabilities&service=WMS.

Leaflet har ikke funksjonalitet til å lese WMS GetCapabilities dokumenter, og vil heller ha en peker direkte til WMS tjenesten. Vi tar derfor bort siste del av URLen som requester getCapabilities, slik at vi sitter igjen med følgende adresse: http://wms3.nve.no/map/services/Nedborfelt/MapServer/WmsServer?.

Det andre parameteret som må sendes inn til L.tileLayer.wms er innstillingene for WMS kartlaget. Det finnes mange ulike innstillinger man kan sette her (se detaljert beskrivelse av dette her). I dette tilfellet ønsker vi kun å sette noen få innstillinger. Først setter vi innstilingen layers for å definere hvilke kartlag fra WMS tjenesten vi ønsker å vise (de ulike kartlagene vi har å velge mellom er definert i GetCapabilities dokumentet). I dette tilfellet ønsker vi å vise kartlagene Vassdragsomrade og Nedborfelt til hav. I tillegg ønsker vi at kartlaget skal benytte seg av png som format på kartflisene som returneres, skru på gjennomsiktigheten til laget, samt sette en attribution som viser at dataene er fra NVE.

Vi sitter da igjen med følgende kode:

var wmsLayer = L.tileLayer.wms('http://wms3.nve.no/map/services/Nedborfelt/MapServer/WmsServer?', {
  layers: ['Vassdragsomrade', 'Nedborfelt til hav'],
  transparent: true,
  format: "image/png",
  attribution: "NVE"
}).addTo(map);
https://jsfiddle.net/218aazpa/5/embedded/

OpenLayers

I dette eksempelet viser vi hvordan det er mulig å bruke WMS tjenestene våre i OpenLayers til å vise et kartlag som beskriver vassdragsområder i Norge. Fremgangsmåten vil være den samme uansett hvilke kartlag man ønsker å vise, og man kan enkelt bytte ut kartlaget som vi bruker i eksempelet med et eller flere andre kartlag.

For å vise WMS kartlag i OpenLayers må man benytte seg av ol.source.TileWMS. For å lage et nytt WMS kartlag med denne metoden må man gi inn et options objekt som parameter til metoden. Dette objektet beskriver innstilligene til kartlaget. I vårt tilfelle må vi sette url opsjonen til å peke til WMS tjenesten vi skal bruke. Fra oversikten som ligger her kan vi se at adressen til GetCapabilities dokumentet til tjenesten er følgende (etter at vi tar bort getCapabilities requesten fra urlen): http://wms3.nve.no/map/services/Nedborfelt/MapServer/WmsServer?.

Vi bruker denne adressen som verdi for url opsjonen. I tillegg må vi spesifisere at vi ønsker å vise et konkret kartlag fra tjenesten, nemlig Vassdragsomrade. Dette definerer vi i opsjonen params, ved hjelp av propertien LAYERS. Til slutt ønsker vi også å sette attribusjonen til kartet til «NVE».

Vi sitter da igjen med følgende kode:

new ol.layer.Tile({
          source: new ol.source.TileWMS({
            url: 'http://wms3.nve.no/map/services/Nedborfelt/MapServer/WmsServer?',
            params: {'LAYERS': 'Vassdragsomrade'},
            attributions: “NVE”         
          })
 })
https://jsfiddle.net/z1ooce6p/4/embedded/

ArcGIS API for Javascript

I dette eksempelet viser vi hvordan det er mulig å bruke REST tjenestene våre i ArcGIS API for Javascript til å vise ulike kartlag som beskriver breflate i Norge. Fremgangsmåten vil være den samme uansett hvilke kartlag man ønsker å vise, og man kan enkelt bytte ut kartlagene som vi bruker i eksempelet med andre kartlag.

For å vise kartlag fra våre REST tjenester i ArcGIS API for Javascript må man lage et nytt ArcGISDynamicMapServiceLayer . Som parametere til dette må man (1) legge ved urlen til karttjenesten man ønsker å bruke, og (2) eventuelle innstillinger man måtte ønske i form av et options objekt. I vårt tilfelle ønsker vi å vise breflater i Norge, og vi bruker derfor følgende url til tjenesten (denne finner vi i oversikten som ligger her): http://gis3.nve.no/map/rest/services/Bre/MapServer.

I innstillingene vi sender inn til ArcGISDynamicMapServiceLayer må vi i vårt tilfelle definere at vi kun ønsker å vise noen av kartlagene som ligger i tjenesten, nærmere bestemt Breflate og Hovedbreflate. Hvis man ser på beskrivelsen av tjenesten som ligger på http://gis3.nve.no/map/rest/services/Bre/MapServer så ser vi at disse lagene henholdsvis har indeksene 4 og 14.

For å fortelle tjenesten at vi kun ønsker å se disse lagene må vi sette opp ImageParameters for kartlaget, spesifisere indeksene til de lagene vi ønsker å vise i imageParameters.layerIds, og at vi kun ønsker å vise disse lagene ved å sette imageParameters.layerOption til ImageParameters.LAYER_OPTION_SHOW (les mer om dette her).

Vi sitter da igjen med følgende kode:

var imageParameters = new ImageParameters();

imageParameters.layerIds = [4,14];

imageParameters.layerOption = ImageParameters.LAYER_OPTION_SHOW;

var dynamicMapServiceLayer = new ArcGISDynamicMapServiceLayer("http://gis3.nve.no/map/rest/services/Bre/MapServer", {"imageParameters" : imageParameters});
https://jsfiddle.net/9a0nugu5/embedded/