Bruk Vegkart for å komme i gang med NVDB api

En godt skjult hemmelighet er hvordan webapplikasjonen vegkart gjør livet enklere for deg som skal i gang med å høste ferske NVDB data direkte fra NVDB api. Vegkart gjør at du kommer i gang fortere, enklere og med langt mindre plunder!

Gjør deg kjent med data i Vegkart!

Dette burde være opplagt, men det er mange som overser nytten av å gjøre seg kjent med datasettet, både før man programmerer, og underveis i prosessen. Mange tabber og mye knot hadde vært unngått med å bare grave litt rundt og få litt føling med datasettet

  • Hva finnes, og hvor finnes det data? Er det forskjell i dekning mellom f.eks. de ulike delene av landet? Eller finnes data kun på hovedvegene? Har kun et fåtall av kommunene lagt inn data på det kommunale vegnettet?
  • Bruk også datakatalogen i vegkart til å lære mer om mulige egenskaper på de objektene du ønsker.
  • De egenskapene du ønsker å bruke — finnes de? Selv om din drømmeegenskap er definert i datakatalogen betyr det ikke nødvendigvis at det finnes data lagt inn i NVDB.

Et kjapt vegkart-søk lærer deg mye om hva som finnes i NVDB, hvor det finnes og hva det kan brukes til!

Vegkart gir deg et ferdig søkeobjekt!

NVDB api’et søkefunksjon er et kraftfullt verktøy, men kan være litt plundrete å komme i gang med.

Nå er det vesentlig enklere enn før – ny oppskrift her!

 

Oppskriften nedenfor ble utdatert i vegkart-versjon lansert oktober-2015 – men vi har erstattet den med en ny og vesentlig enklere metode.

Bak stien https://www.vegvesen.no/nvdb/api/sok? skal man føye til nøkkelordet og verdien kriterie={søkeobjekt}. Vi synes selvsagt vi har vært grasat flinke til å skrive dokumentasjon og veiledning med flere eksempler på hvordan man bygger opp et søkeobjekt — men innser at mange plundrer med dette.

Vegkart er redningen — i stien til ditt favorittsøk i Vegkart er det nemlig gjemt et søkeobjekt!

Ved å kopiere søkeobjekt fra nettleserens adressefelt kan datautforsking i Vegkart anvendes direkte som ditt første søkeeksempel mot NVDB api. La oss si at du søker etter bomstasjoner med takst under 30 kroner i et spesielt vakkert geografisk område:

Vegkart-søk Hvor er bomstasjonene der det ikke koster mer enn 30 kr å passere?

Hvor er bomstasjonene der det ikke koster mer enn 30 kr å passere?

Lenken til dette vegkart-søket er såkalt URL encodet, det vil si at spesialtegn som krøllparanteres er erstattet med prosentkoder. Mange teksteditorer kan dekode dette direkte, eller man kan finne online URL dekodere på nett. For eksempel denne.

meyerweb URL encoder/decoder. Fiffig online verktøy for å oversette prosentkode-grøt til lesbar tekst.

meyerweb URL encoder/decoder. Fiffig online verktøy for å oversette prosentkode-grøt til lesbar tekst. Merk disclaimeren!

Når jeg setter inn et par linjeskift og mellomrom så blir det jo bortimot lettlest:

https://www.vegvesen.no/vegkart/vegkart/#!/
kartlag:geodata/
vegreferanse:260452.12090424:6556932.0971975/
sok:{
     "lokasjon": {
         "bbox": "262973,7033178,287844,7046873"
     },
     "objektTyper": [{
         "id": 45,
         "antall": "15000",
         "filter": [{
             "type": "Takst liten bil",
             "operator": "<=",
             "verdi": ["30"]
         }]
    }]
}

Den våkne leser har selvsagt for lengst oppdaget at alt bak sok: er det JSON søkeobjektet som vi har beskrevet i dokumentasjonen. Alt som gjenstår er å føye til teksten

{«lokasjon»:{«bbox»:»262973,7033178,287844,7046873″},»objektTyper»:[{«id»:45,»antall»:»15000″,»filter»:[{«type»:»Takst liten bil»,»operator»:»<=»,»verdi»:[«30»]}]}]}

bak lenken https://www.vegvesen.no/nvdb/api/sok?kriterie= 

Som da selvsagt blir https://www.vegvesen.no/nvdb/api/sok?kriterie={«lokasjon»:{«bbox»:»262973,7033178,287844,7046873″},»objektTyper»:[{«id»:45,»antall»:»15000″,»filter»:[{«type»:»Takst liten bil»,»operator»:»<=»,»verdi»:[«30»]}]}]} Lenken er klikkbar, men ettersom du da gjør en spørring uten å angi riktig media-Type så er du ikke garantert at resultatet kan vises i din nettleser (ms-ie pleier spørre deg hva du vil gjøre med den json-fila du nettopp fikk, mens Google chrome pleier laste ned og vise XML formattert i nettleser).

Avhengig av klienten du bruker og nettverket ditt kan det hende du må URL encode denne lenken før den brukes — gjør gjerne det, for sikkerhets skyld!

I tillegg til å formattere spørring korrekt skal klientene oppgi ønsket Media-type, det vil si en såkalt http-header der du ber om nvdbdata som enten JSON eller  XML. Se dokumentasjonen.

kreditering — Open Street Map i bakgrunnskart VegKart

I Vegkarts bakgrunnskart bruker vi nå data fra Open Street Map for å vise vegnettet utenfor Norges grenser. Dette skal selvsagt behørig krediteres.

Utenfor Norges grenser viser vi nå data fra Open Street Map

Utenfor Norges grenser viser vi nå data fra Open Street Map

Vi har lagt inn kreditering av Open Street map — sammen med norske bidragsytere (NVDB, Geovekst og kommunene) som et lite tekstfelt i utkanten av kartflaten på Vegkart. Akkurat slik som det skal gjøres:

Eksempel på gyldig OSM akkreditering.

Eksempel på gyldig OSM kreditering. Slik skal vi ha det i Vegkart!

Dessverre vil det ta TID før denne endringen blir satt i produksjon. Men i løpet av 3 måneder skal alt være på plass. Vi kan også føye til at korrekt kreditering inngår i metadata fra bakgrunnskart-tjenesten vi bruker.

Har kun halvparten av ulykkene geometri?

Et vegkart-søk gir kjapt svaret at kun halvparten av ulykkene har egenskapen «Geometri, punkt».

Vegkart-søk - er det virkelig slik at kun halvparten av ulykkene har koordinater?

Har kun halvparten av ulykkene geometri?

Men dette kan da umulig stemme… hvis vi ikke vet hvor ulykken er så kan vi heller ikke knytte den til riktig veg, få statistikk for ulykker per kommune, langs E6 og så videre.

Selvfølgelig er det ikke slik at halvparten av ulykkene ikke er stedfestet

Forvirringen skyldes at ikke alle objekter har det vi kaller egengeometri. Da får man ut koordinater som en egen attributt til objektet, i listen over egenskaper

<egenskap>
<id>5123</id>
<navn>Geometri, punkt</navn>
<verdi>POINT (270201.0 7038482.0)</verdi>
</egenskap>

Alle objekter i NVDB er stedfestet på vegnettet. Detaljene står i lokasjons-objektet, lengre ned.

<lokasjon>
<egengeometri>true</egengeometri>
<fylke nummer="16" navn="SØR-TRØNDELAG"/>
<geometriUtm33>POINT (270201 7038482)</geometriUtm33>
<geometriWgs84>POINT (10.397118021702223 63.40058266939705)</geometriWgs84>
<kommune nummer="1601" navn="TRONDHEIM"/>
<kontraktsomrader>
<kontraktsomrade navn="1606 TrondheimMalvik 2010-2015"/>
</kontraktsomrader>
<politiDistrikt nummer="20" navn="Sør-Trøndelag"/>
<region nummer="4" navn="MIDT"/>
<riksvegruter>
<riksvegrute nummer="6A" navn="RUTE6A"/>
</riksvegruter>
<vegAvdeling nummer="16" navn="Sør-Trøndelag"/>
<vegReferanser>
<vegReferanse>
<fraMeter>403</fraMeter>
<fylke>16</fylke>
<hp>12</hp>
<kategori>E</kategori>
<kommune>0</kommune>
<nummer>6</nummer>
<status>V</status>
</vegReferanse>
</vegReferanser>
<veglenker>
<veglenke til="0.150519" sidepos="NULL" id="72811" fra="0.150519" direction="WITH"/>
</veglenker>
</lokasjon>
<versjonsId>1</versjonsId>
</vegObjekt>

Ulykker uten egengeometri vil mangle parameteren <egengeometri>true</egengeometri>, ellers er lokasjonsobjektet likt. Det beskriver eksakt hvilken veglenke som ulykken skjedde på. Vegnummer, meterverdi og hp-inndeling – og for den saks skyld kommunenummer – kan bli endret gjennom vegutbygging eller administrative vedtak, men veglenke er en persistent koblingsnøkkel på tvers av disse endringene.

Referansegeomerti  – den posisjonen som står i lokasjonsobjektet – er på vegen senterlinje. Dette gir god mening for f.eks. fartsgrenser og trafikkmengde, mens f.eks. et skilt som regel er plassert godt utenfor vegkroppen. Den fysiske posisjonen blir best beskrevet med egengeometri.

I NVDB har vi et par hundre tusen trafikkulykker registrert gjennom cirka 40 år. Rutiner for stedfesting har endret seg ganske mye gjennom disse årene. Datakilde kan være så mangt, som legevakt, sykehus, politi eller Vegvesenets egne folk. Stedfestingen vil derfor ha varierende presisjon, og noen ganger har vi rett og slett ikke nok opplysninger til å gi hverken egengeometri eller knytte ulykken til riktig veg (hvorfor krasher så mange i Nordmarka?)

Cycling in Norwegian Tunnels

Where I can find the map with norway tunnels where cyclists are not allowed to travel?

We strongly encourage you also to investigate other sources of information that are more tailored to the needs of cyclists, but we will of course do what we can with the tools we have. The Norwegian Public Road Administration (NPRA) are rather proud of our efforts toward an open government / open data policy.

The rerverse question is much easier to answer: In which tunnels is it legal to bicycle?  Tunnels registered in Norwegian Road data base should have the attribute sykkelforbud (=cycle restriction), with one of the two values Either Ja ( = sorry, no biking allowed) or Nei ( = No cycling restriction). Finding those tunnels is pretty straight forward in our web application vegkart:

Map screenshot from our web application Vegkart showing cycling is allowed along this part county road 50 in Aurland

Cycling in tunnels along this part county road 50 in Aurland is allowed.

There is one little snag: A tunnel in our road database is defined as a point object. What you and I think of as a tunnel — a man-made pipe caved through rock — is called tunnelløp. We define tunnels this way because a modern tunnel can be a very complicated high-tech construction with any number of pipes.

But what about finding the tunnels I can’t ride a bike in? Is that simply the reverse, i.e. sykkelforbud = Ja. 

Sykkelforbud = Ja (sorry, no biking here)

In a perfect world it would be that simple. But there are plenty of tunnels built long before anyone in the NPRA gave any thought to the idea that someone would actually want to ride a bike through a road tunnel. It is a fairly new concept that biking should be allowed in some tunnels, but not in others. So, we have plenty of tunnels where the property sykkelforbud is not defined. Can you legally ride a bike in those tunnels? Hard to say from my position at the keyboard. But here’s a map showing all combinations:

Sykkelforbud = Har ikke verdi (Undefined)
Sykkelforbud = Ja (explisitely forbidden) 
Sykkelforbud = Nei (Cycling allowed)
Biking restriction undefined (har ikke verdi), not allowed (sykkelforbud=Ja) and allowed (sykkelforbud=nei).

Biking restriction undefined (har ikke verdi), not allowed (sykkelforbud=Ja) and allowed (sykkelforbud=nei).

Link to this vegkart-query.

And yes, you may find this map a bit messy. Please bear in mind that our web application Vegkart is not made for tourists – it is a general tool to find and show any kind of road related object, developed for and by the NPRA.

One last note: Traffic signs take precedence over our road data base, so please respect any «No cycling» — sign.

No cycling allowed.

No cycling allowed.

No cycling or walking

No cycling or walking

Hvorfor krasjer så mange i Nordmarka?

Zoomer du inn på Nordmarka og søker på trafikkulykke får du 5.570 treff:

NVDB har 5.570 trafikkulykker midt i skauen i Nordmarka

Hvordan klarer folk å krasje midt i svarte granskauen?

Lenke til dette vegkart-søket

Dette må jo være feil…? Jepp, og årsaken er at vi i Vegvesenet ikke har klart å knytte riktig ulykke til riktig veg. Det er mange kilder til ulykkesdata (helsevesen, politi etc), og svært få av dem som rapporterer er vegnettsnerder. Det er vrient å få en fornuftig stedfesting ut av beskrivelser som «påkjørt i gangveg, Stabekk».

Vi har ennå ikke fått gjennomslag for at håndbok v830 Nasjonalt vegreferansesystem bør være pensum på politi- og sykepleierhøgskolen… men så er vi nok alene om å synes at det er litt for få vegnettsnerder i verden.

Selv uten stedfesting er dette viktige data som skal inngå i statistikk over antall registrerte ulykker. Da må de inn i NVDB, og da må de ha en vegnettstilknytning. Løsningen vår er langt fra perfekt: Vi knytter dem til vegnummer 99.999, og legger denne fiktive vegstubben langt utenom allfarveg. Det gir litt pussige utslag når vi plotter data på et kart, men det må vi inntil videre leve med.

Smertefri oppgradering møter brutal virkelighet

Tilføyelse 08:58 12/5: Vegkart er ustabilt, vi regner med at det ikke er langvarig.

Tilføyelse 09:17 29/4: Vegkart er ørlite grann ustabilt, og kan innimellom være utilgjengelig. Som regel blir Vegkart tilgjengelig igjen etter kort tid (og viser at rutinene for avviksdetektering og restart fungerer!). Vi jobber med å finne og fjerne årsaken til stabilitetsproblemene. Men NVDB api fungerer!

Tilføyelse 09:08 25/4: Vegkart friskmeldt. (Men visning av flyfoto fungerer ikke!). For å få flyfoto til å fungere må vi a) å få ordnet nytt oppsett på kartverkets BAAT tjener, b) justere vår egen konfigurasjon ørlite grann. Enkelt å fikse (uten nedetid!), men regner nok med at det tar et par dager — det er mange aktører som hver må gjøre en liten justering.

Tilføyelse 08:40 25/4: Vi var litt for raske med å friskmelde vegkart. Konfigurasjonen må justeres litt. Vi har en kvikk fiks som vi regner med vil løse problemet, håper det kan gå fort å få det på plass. API’et fungerer normalt.

Tilføyelse 10:50 24/4: Både NVDB API og vegkart fungerer normalt. Eneste unntak er visning av flyfoto i vegkart (ny funksjonalitet), pga endringer i konfigurasjonsoppsett. (Vår tilgang til Norge Digitalt-tjenester må justereres etter ny konfigurasjon, og det tar trolig noen dager)    

Tilføyelse 10:50 24/4: Hverken NVDB API eller vegkart er tilgjengelig. 

Tilføyelse 09:36 24/4: Vegkart fungerer ikke, men NVDB api fungerer fungerte normalt; Situasjonen stabiliserte seg onsdag ettermiddag, og alt så ut til å virke i både vegkart og NVDB api. Men — torsdag morgen sluttet vegkart å fungere pga et konfigurasjonsproblem. Vi regner med at dette skal la seg løse raskt..

Tilføyelse 15:36 23/4: Vi jublet litt for tidlig; det mangler manglet tydeligvis noen objekttyper, f.eks fikk vi null treff på trafikkmengde. FIKSA i løpet av onsdag ettermiddag.

Tilføyelse 14:54 23/4: Alt ser ut til å virke normalt igjen. Vi beklager ulempen, og krysser fingrene…

Vi ruller ut ny versjon av Vegkart og NVDB api’et. Dette skal skje uten at brukerne merker noe som helst — annet enn at vi har gjort en del flotte forbedringer.

Dessverre gikk det ikke slik i dag. Eksakt hvorfor vet vi ikke helt, vi kommer tilbake med mer info når vi vet hva som gikk galt, og når ting kommer på lufta igjen. Sist gang dette skjedde måtte vi vente på at total re-indeksering skulle bli ferdig, og det tok dengang cirka halvannet døgn.

Vi beklager på det sterkeste de ulempene dette medfører. Beta-perioden skal brukes aktivt til å perfeksjonere driftsrutiner — men uten at det gir denne typen ulemper for brukerne våre.

KOSTRA-rapportering for kommunal veg

KOSTRA-rapportering er en oppgave som krever mye ressurser av offentlig forvaltning. En av de vanskelige tingene er å telle riktig lengde på vegnettet — selv internt i Vegvesenet sliter vi med det. I vår iver etter å fornye, forbedre og forenkle har vi selvsagt tenkt på hvordan dette kan gjøres mer elegant.

I vegkart og NVDB api’et får man summert opp lengden til alle strekningsobjekter i et søk (det inngår i responsen fra api’et søkefunksjon). Slik sett kunne man brukt et hvilket som helst heldekkende datasett (f.eks. fartsgrenser) til å finne lengden på vegnettet. Vi vegdata-nerder anbefaler at man bruker vegreferanse, men det er et par fallgruber: Vi tar ikke med såkalt «fiktiv veg», og søket avgrenses til vegstatus «eksisterende veg».

Eksakt hvorfor det er slik blir litt for omfattende å gå inn på nå, men interesserte anbefales å begynne lesningen i den aldeles utmerkede håndbok v830 Nasjonalt vegreferansesystem.

For alle andre så holder det å vite at dette vegkart-søket gir deg lengden på kommunale veger i Arendal kommune. Tallet du er ute etter er 239.419 meter (per 9/5 2017), som du ser i Vegkart.

Vegkart-søk for KOSTRA-rapportering. Vegreferanse på kommunalveger med filter: Vegtype forskjellig fra "Fiktiv veg" og vegstatus lik "Eksisterende veg" og "konnekteringslenke forskjellig fra konnekteringslenke" (dvs vi tar IKKE med konnekteringslenker i søket)

Disclaimer: Jeg aner ikke om KOSTRA rapportering også omfatter private veger og skogsbilveger. I så fall er det trivielt å føye dem til i søkefeltet.

For lokalpatrioter utenfor Arendal er det selvsagt trivielt å skifte ut den vakre sørlandsbyen med sin egen favorittkoummune: Klikk på «x», en bak Arendal, klikk på en ledig plass i søkefeltet og skriv ditt kommunenavn. Press Enter.

Voila, instant KOSTRA-rapportering!

NVDB gjør åpen forvaltning

Vi som synes det er artig med vegdata og sånn synes det er kjempeartig at de nye tingene vi gjør  — er nettopp den typen digitalisering som Storting og regjering ønsker fra forvaltningen. At vi kan gjøre det — i stedet for å snakke om det — er selvsagt kjempemoro.

Åpne data er bra — åpen forvaltning er fantastisk!

På mange måter slipper Nasjonal Vegdatabank (NVDB)  ekstremt billig unna fra det felles digitaliseringsprosjektet: Andre etater må sikre at svært sensitive personopplysninger ikke havner på avveie, samtidig som data flyter elegant mellom fagsystem og etater. Vi vegnerder skal bare bygge moderne grensesnitt mot vårt felles register over vegnettet. Med ytterst få unntak er dette offentlig informasjon som bør, kan og skal være åpent tilgjengelig.

NVDB api’et inngår i en modernisering av Vegvesenets tekniske infrastruktur. Det nye API’et gjør at vi kan fornye, forenkle og forbedre, med svært gode resultater — og vi er bare så vidt i gang:

  • Hva skal NVDB inneholde? Informasjonen i NVDB har en nøkkelrolle i planlegging av samferdsel (på alle tidshorisonter!), og i forvaltning og drift av vegnettet. Balansegangen mellom hva som skal lagres i NVDB og hva som hører hjemme i andre fagsystem er krevende, og krever et godt hode og evne til samarbeid på tvers av fagmiljø og avdelinger.
  • Vi vil servere et topologisk, navigerbart vegnett i API’et. (Vi mekket en kjapp prototyp til frigjøringen av kartdata H-2013, bare for å vise hvordan vi tenker).
  • Skrivefunksjoner for fagdata basert på REST prinsipper. Dette er faktisk litt tøffere enn det høres ut som, f.eks. har en moderne tunnel relasjoner til flere tusen andre vegobjekter – eksempel. Krevende, men moro! 
  • Ny vegnettseditor.
  • Skrivefunksjoner for vegnett (dette tar vi til sist).

Dette gjør vi fordi vi trenger disse moderniseringene internt i Vegvesenet — men det er en fryd og fornøyelse å kunne tilby de samme grensesnittene til resten av samfunnet.

Dette er åpen forvaltning i praksis — og det er vi stolte av!

A little note to oor our international fans

We (the Norwegian Road Administration) have received some intriguing questions about the API to the Norwegian Road Data Base. Unfortunately for Non-Norwegian programmers, all documentation is in Norwegian only. Hopefully, this very brief introduction may motivate you to learn a very beautiful language. (It aint that hard – even the children here speak it fluently). Or perhaps we some day should adapt to the other 99.93% of the population and provide documentation in English…

Update 2020: Use version 3 of NVDB api https://nvdbapiles-v3.atlas.vegvesen.no/dokumentasjon/

Update 2020: You may also enjoy this English summary: https://nvdbtransportportal.vegdata.no/

Virtually all data in the Norwegian Road Data (NVDB) base are available under the Norwegian Licence for Open Government Data (NLOD), without carge.

If you want road data for navigational purposes you should have a look at the data we use in our own route planner (esri and spatialLite formats).

Besides the road network itself, the NVDB has of lots of data attached to the road network (think of those as anything road related found along the topological network). We have more than 300 different types of objects tied to the road network: Speed limits, toll station, traffic flow, traffic accidents, curvature, … the list goes on. Those objects are all defined in our data catalogue. (The official version is a java program, you’ll find a link to it here, most of you will probably prefer our unofficial web version). And (virtually) all of those data are available through our road database (NDRB) api.

The data structure in the NVDB API may seem a little complex at first, in particular if you expect everything to have a straightforward name – value data structure. Each object has a list of egenskaper  (propertiesplural), containing any number of  the element egenskap (property, singular). Each egenskap (property) has an ID, a name (navn), a value (verdi) and a link to it’s own definition in the data catalogue.

To find what it actually costs to pass the station you’d search through the list of egenskaper  for the egenskap  with ID = 1820 and inspect that value (verdi). You’d probably expect the value to be in Norwegian Kroner, and you’d be right — which is confirmed by the tag enhet (unit).

And don’t forget the API’s twin companion Vegkart, which is a web application that shows data directly from our API. Seeing the objects location and probing their properties might be helpful to those unfamiliar with our API. Your successful Vegkart-query contains a download-link that takes you directly to NVDB api.

Toll station at Klett, south of Trondheim, Norway.

Toll station at Klett, south of Trondheim, Norway.

Any results from a successful Vegkart query can be downloaded (as csv or SOSI), but with some caveats.

Vegkart og NVDB API er oppdatert

Det ble i dag installert en ny versjon av både Vegkart i NVDB API. Leveransen har hatt fokus på å feilrettinger og utvidete søkemuligheter i Vegkart.

Endringer i Vegkart:

  • Det er nå mulig å søke innenfor én eller flere riksvegruter
  • Det er nå mulig å søke innenfor én eller flere kontraktsområder
  • Feilretting: Maptiles blir ikke lenger plassert feil i IE10 ved rask zooming

Endringer i NVDB API:

  • Det er nå mulig å søke innenfor én eller flere riksvegruter i /sok-endepunktet
  • Det er nå mulig å søke innenfor én eller flere kontraktsområder i /sok-endepunktet
  • Feilretting: Noen objekter inneholder ikke lenger referanse til feil morobjekt
  • Feilretting: /omrader-endepunktet inneholder CORS-headere