Hvor står skiltet?

Jeg fikk en rutebeskrivelse over telefon, men fikk ikke helt med meg eksakt hvor og i hvilken retning jeg skulle svinge av fra E6, og både lydkvalitet og uvant dialekt var barrierer mot effektiv kommunikasjon.

Det som berget situasjonen var opplysningen om «trur det er skiltet til Hovin» — og litt kreativ bruk av vegkart.

Objekttype skiltplate med filter Tekst = Hovin gir 5 treff i aktuelt område, resten var trivielt.

Vegkart-søk på skilt med teksten "Hovin" i Trøndelag

Skilt med teksten «Hovin» i Trøndelag

Lenke til dette søket.

Er vegen kommunal eller privat?

I vegkart kan man klikke på en veg og få opp en såkalt vegreferanse.

Vegreferanse vist i Vegkart

Vegreferanse

Her får du opp en litt i overkant kryptisk kode:  «KV 4500 H1 m713»

Den første bokstaven («K» ) forteller deg at vegen er kommunal, mens tallet 4500 er selve vegnummeret. For skogsbilveger er første bokstav «S», private veger har en «P», mens europa-, riks-, og fylkesveger har «E», «R» eller «F». Resten av koden er grundig forklart her: Nasjonalt vegreferansesystem – håndbok v830

Men hvordan kan jeg få et kart som viser hvilke veger som er kommunale og private?

Med den nye versjonen av vegkart kan du nå søke på flere ganger på samme objekt. Kombinert med egenskapsfilter kan du for eksempel søke tre ganger på objektet «vegreferanse» med filter for vegkategori lik kommunal, privat og skogsbilveg, og dette vil bli tegnet opp med ulike farger i kartet. For eksempel slik:

Vegkart-søk for å vise private v.s. kommunale veger - og skogsbilveger

Vegkart-søk for å vise private v.s. kommunale veger – og skogsbilveger

Lenke til dette søket

Visst finnes det verktøy der det er mer intuitivt og kjappere å få fram kart over kommunale versus private veger. Vi har absolutt ingen ambisjon om at vegkart skal være førstevalg til absolutt alt — noen oppgaver er og blir mer rett fram i andre verktøy, og det er slik det skal være.

Vi vil først og fremst vise at vegkart nå kan brukes på nye og mer kreative måter, med enda smartere spørringer.

Tilføyelse: Vegreferanse er på mange måter spesiell, og den eneste objekttypen som har egenskapen Vegkategori som vi kan utnytte på akkurat denne måten. Hvis vi ønsker å avgrense søk etter andre typer data til f.eks. kommunale veger eller fylkesveger må vi gjøre ting på en litt annen måte. Vi sier litt mer om dette i dette innlegget.

Beta-testingens brutale ansikt

Sukk … så skjedde det igjen. Smidig og greit skulle vi rulle ut nye versjoner av vegkart og NVDB api, med masse nye, kjekke funksjoner. Og dette skulle naturligvis skje uten at brukerne merket annet enn at ny versjon plutselig kom på plass… Vi må tydeligvis bruke beta-perioden aktivt til å perfeksjonere både det ene og det andre.

Oppgradering av node tar ca halvannet døgn eller noe — søkeindeksen må bygges opp fra scratch. Ett av poengene med flere noder er jo nettopp at disse nodene IKKE er synlige mens dette foregår. Dette har vi tydeligvis ikke fått til denne gangen, feil noder blir eksponert ut på adressen https://www.vegvesen.no/nvdb/api/.Da er det ikke så forferdelige mye spennende vegdata på https://www.vegvesen.no/vegkart/vegkart/  heller .

Vi tror og håper alt virker som normalt igjen ganske snart. Men erfaringene har vel lært oss at det ikke er lurt å love noe.

Hva er forbindelsen mellom ELVEG, VBASE og NVDB?

Vegnettsdataene FKB veg, Elveg og Vbase bruker alle elementet TRANSID som unik nøkkel på akkurat denne vegstrekningen. Bruken av TransID er eldre enn NVDB, men NVDB er i dag orginalkilden til både TransID (og øvrige vegnettsdata). Disse TransID’ene vedlikeholdes i NVDB under navnet Transportlenke. NVDB ID’en til et transportlenke-objekt er identisk med transID-verdien i Elveg, Vbase eller FKB veg. Dermed er det trivielt å hente data ut fra det nye NVDB-api’et.

Et transportlenke-objekt i NVDB har vegreferanse (vegnummer, parsellnummer) og meterverdier (til-fra). Vegreferanse er en av tre mulige måter å søke opp vegstrekninger i NVDB (de to andre er geometri og ID til veglenken, ref http://api.vegdata.no/verdi/vegreferanse.html  ). Vegreferanser stammer fra tiden før presis satelittnavigasjon, og er en menneskelig forståelig måte å navigere vegnettet på. Interesserte kan lese mer om dette fascinerende temaet i den utmerkede håndbok v830 – anbefalt lesning!

Det å bruke vegreferanse som koblingsnøkkel har et par ulemper: Vegnettsendringer blir ikke håndtert på en robust måte, i tillegg til at kommunenummer og vegnummer kan endres ved et pennestrøk. Men bruken av vegreferanse er veldig innarbeidet. Som «dynamisk» oppslagsnøkkel funker det helt greit. Men ønsker du systemintegrasjon med persistent koblingsnøkkel mot NVDB bør du bruke NVDB ID til objektet — eller veglenkeID og posisjon.

Eksempel fra Elveg-SOSI versjon 4.0  (Eigersund kommune, Elveg-leveranse 1.9.2013)

.KURVE 2:
..OBJTYPE VegSenterlinje
..KVALITET 60 200
..DATAFANGSTDATO 20001206
..TRANSID 145816634
..KOMM 1101
..VNR K V 100
..VPA 1 28 48
..VKJORFLT 1#2
..VFRADATO 19500101
..NØH
652134340 -1759380 8560 ...KP 1
..NØH
652134680 -1759020 8570
652134930 -1758660 8590
652135270 -1758190 8620
652135580 -1757820 8650 ...KP 1

TransID’en kan da søkes opp i NVDB slik: https://www.vegvesen.no/nvdb/api/v2/vegobjekter/539/145816634.xml

Begrepet «TransID» eksisterer for øvrig ikke lenger fra og med Sosi 4.5. I stedet brukes de generelle Sosi-mekanismene for identifikasjon – slik:

..IDENT
...LOKALID 145816634
...NAVNEROM NVDB_Transportlenker

Hvordan laste vegnett fra NVDB inn i QGIS med 6 linjer Python

I dag ble Kartverkets og Statens vegvesens skattekister åpnet, et frislipp mange har ventet på lenge. Vi hadde gleden av å presentere en ny prototype for dataleveranser av vegnett, hvor vegnettet kan hentes på GeoJSON-format gjennom en REST-basert webtjeneste: http://vegnett.vegdata.no/ Prototypen er lagt i graven

Kombinasjonen GeoJSON og REST kan gi mange muligheter i GIS-verktøy, spesielt de som har integrasjon mot språk som Python. Dette innlegget beskriver hvor enkelt og raskt det er å importere vegnettet inn klienten Quantum GIS (QGIS), som er basert på åpen kildekode.

APIet som tilbyr vegnett har foreløpig ikke mange paremetere, siden det kun er en prototype. En bruker har følgende valg:

  • Hent vegnettet innenfor hele Norge, innenfor et bestemt fylke, eller innenfor en bestemt kommune.
  • Hent vegnettet innenfor én eller flere vegkategorier: Europaveg (E), RIksveg (R), Fylkesveg (F), Kommunalveg (K), Privatveg (P), Skogsbilveg (S)

For å importere vegnettet inn i QGIS, er det ønskelig å lage en funksjon i Python som oppretter et nytt vektorlag. Funksjonen skal ha tre innparametere:

  1. Lokasjon
  2. Vegkategorier
  3. Lagnavn
def lag(sted, vegkategori, navn):
    api = 'http://vegnett.vegdata.no/nvdb/api/vegnett/' 
    uri = api+sted+'.json?kategori='+vegkategori

    lag = QgsVectorLayer(uri, navn, "ogr")
    QgsMapLayerRegistry.instance().addMapLayer(lag)

UTDATERT – denne vegnetts-prototypen eksisterer ikke lengre. Vegnettsendepunktet til NVDB api V1 kan brukes i stedet. Eksempel 

Merk at NVDB api’et V2 har fått nytt vegnett-endepunkt.

Ovenfor er den ferdige funksjonen, med 5 linjer Python-kode, pluss et mellomrom for å øke lesbarheten. De tre øverste linjene er selvforklarende.

Den nest nedeste linjen laster et vektorlag fra APIet, ved hjelp av OGR-biblioteket: http://www.qgis.org/en/docs/pyqgis_developer_cookbook/loadlayer.html

Den nederste linjen registrerer laget i QGIS sitt brukergrensesnitt: http://www.qgis.org/en/docs/pyqgis_developer_cookbook/canvas.html

Funksjonen kan kalles på følgende måte:

lag('17/19', 'ERF', 'Levanger ERF')

Koden ovenfor laster ned alle europa-, riks- og fylkesveger i Levanger kommune. Lokasjon angis ved hjelp av fylke- og kommunenummer. For en rask referanse, kan dere benytte samme liste som APIet prototypen benytter: http://vegnett.vegdata.no/js/lokasjon.js

Nedenfor er et utsnitt fra QGIS etter at koden ovenfor er kjørt.

vegnett-prototype

Med den grunnleggende funksjonen i boks, er det lett å utvide med mer avanserte spørringer etter data. Funksjonen nedenfor henter hele vegnettet i en bestemt fylke eller kommune, og oppretter samtidig ett lag for hver vegkategori.

def lag_kategorier(sted, navn):
    vegkategorier = ['e', 'r', 'f', 'k', 'p', 's']

    for kategori in vegkategorier:
        lag(sted, kategori, navn+' '+kategori)

 

Prototyp: Last ned vegnett fra NVDB api

Nedlastingsløsning for vegnettsdata.

Det skal være like enkelt å laste ned vegnett som alle andre NVDB data!

 

Fredag 27. september 2013 ble sentrale kartdata frigitt av Kartverket og Statens vegvesen, inkludert Norges digitale vegnett fra Nasjonal vegdatabank (NVDB). Dette betyr at produktet Elveg, som inneholder alle kjørbare veger og deres egenskaper, nå kan lastes ned kostnadsfritt. I tillegg frigjør vi — som annonsert tidligere — de samme vegnettsdataene vi bruker i vegvesenets ruteplantjeneste.

Lenke til vegnett-prototyp: http://vegnett.vegdata.no/

Vi ønsker å gjøre informasjonen fra NVDB så lett tilgjengelig som mulig. For å møte den økende etterspørselen etter våre data, vil vi utvikle en tidsriktig og fremtidsrettet webtjeneste hvor dere fritt kan velge de informasjonselementene dere er interesserte i. Det er allerede lansert et API hvor de fleste fagdata (fartsgrenser, skilt, rekkverk med mer) kan hentes, men der er foreløpig ikke indrefileten i NVDB; selve vegnettet, tilgjengeliggjort.

Vi har testet ut (geo)json i QGIS, med dynamisk nedlasting fra dette API’et. Funker helt utrolig nydelig!

“Vegnett prototype” er første steg på veien til å lage en enkel webtjeneste som levererer på vegnettet på maskinlesbare. Dette en prototype vi lanserer for å først og fremst få tilbakemeldinger på hvordan tjenesten bør utformes. Datasettet vil derfor inneholde feil og mangler, da det ikke er vårt aller nyeste datagrunnlag, og er heller ikke kvalitetssikret i like stor grad som Elveg-produktet. Datasettet vil heller ikke bli oppdatert i prototype-perioden.

Informasjon fra Nasjonal vegdatabank tilgjengeliggjøres under Norsk lisens for offentlige data. Dette betyr at Informasjonen kan, med de begrensningene som følger av lisensen, brukes til ethvert formål og i en enhver sammenheng. Informasjonen kan inneholde feil og utelatelser, og Statens vegvesen gir ingen garantier for informasjonens innhold eller aktualitet.

Ved bruk av informasjon fra Nasjonal vegdatabank, skal følgende tekst alltid oppgis: «Inneholder data under norsk lisens for offentlige data (NLOD) tilgjengeliggjort av Statens vegvesen.»

NVDB-haien eter vegdata til frokost

NVDB-entusiaster med husdyret sitt. F.v Magnus, Jan, Hilde og Espen.

NVDB-entusiaster med husdyret sitt. F.v Magnus Haugsand, Jan Kristian Jense, Hilde Øfsti og Espen Sveen.

NVDB og geodata er så heldige at vi har hyggelige lokaler i den svært hyggelige byen Trondheim. Vi synes oppriktig synd på de fleste av våre vegdirektorat-kolleger, som stues inn i ei fæl murblokk i en lite lukrativ Oslo-forstad. Ulempen med vår ellers knallfine lokalisering er at vi kan bli litt lite synlige internt — og det måtte vi gjøre noe med.

Selvsagt griper vi enhver anledning til å kjøre en fjernstyrt heliumballong-hai i arbeidstiden!

Derfor hadde vi NVDB-dag på vegdirektoratet, Brynseng torsdag 19.9. Seks foredrag med rundt 100 — eller var det 80? — deltagere, friske diskusjoner og utallige spørsmål og kommentarer på stand og på foredrag — og vi fikk vist oss frem blant de ca. 600 kollegene våre i murblokka. Grundig.

Lunchtid - haien leter etter ferske vegdata til NVDB.

Lunchtid – på leting etter ferske vegdata til NVDB.

Vi har selvsagt i ettertid konstruert sabla gode begrunnelser, myter og historikk om hvorfor maskotten vår er akkurat en NVDB-hai og ikke for eksempel en ugle, Odins kloke ravner eller hvorfor ikke en NVDB-hamster?

Sannheten er kort og godt at Hilde tok med på jobb den bursdagspresangen hun aldri fikk prøveflydd hjemme – og haien ble prompte adoptert som NVDB-maskott: Den er dritkul, den fungerer sinnsvakt bra som blikkfang og isbryter i sosiale sammenhenger, og er dessuten kjempeartig å fly rundt med i den digre kantina på Brynseng. Og ikke koster den for mye heller.

Direktør Lars Erik Hauer har intim nærkontakt med den svært sultne NVDB-haien.

Direktør Lars Erik Hauer har intim nærkontakt med den svært sultne NVDB-haien før frokost. Best å servere ferske vegdata!

Vi synes det er svært hyggelig at vår maskot vekker engasjement hos toppledelsen. For eksempel kan du her se video av da direktør Lars Erik Hauer først (nesten) ble angrepet og etterpå tok kontroll over haien.

Hvordan finner jeg skilt med elg og julenisser?

Hvordan kan jeg finne posisjonen til alle elg-skilt i Norge via vegatabankens API? 🙂 Hva med løpende nisse med sekk-skilt?

Se opp for elg!

Fare for elg!
@ http://www.flickr.com/photos/antoinettejanssen/7016975067/ etter CC-lisens

Skilt er relativt komplisert å finne ut av – men håndbok 050 Trafikkskilt er til god hjelp. Det er også verdt å merke seg at vi skiller mellom skiltpunkt (fundamentet, om du vil) og skiltplate (selve tegningen). Ett skiltpunkt kan ha ett eller flere skiltplater som datterobjekter.

Elgskiltet er en skiltplate der egenskapen Skiltnummer HB-050 er satt lik 146.1 – Elg. I moderne nettlesere får du adskillig hjelp med å velge lovlige blant lovlige verdier for disse feltene. Her er f.eks. søk på elgskilt i Elverum (vegkart). Tilsvarende søk i API’et:

https://nvdbapiles-v3.atlas.vegvesen.no/vegobjekter/96?segmentering=true&egenskap=(5530%3D8867)&kommune=3420&inkluder=lokasjon%2Cmetadata%2Cegenskaper%2Cgeometri%2Cvegsegmenter

Hvis du tør kan du jo prøve å hente elgene direkte i nettleseren din: https://nvdbapiles-v3.atlas.vegvesen.no/vegobjekter/96?segmentering=true&egenskap=(5530%3D8867)&kommune=3420&inkluder=lokasjon%2Cmetadata%2Cegenskaper%2Cgeometri%2Cvegsegmenter

… men dette vil ikke funke i alle nettlesere.

Men hvor finner vi Julenissen???

Ryktene florerer om at det er observert julenisser i datakatalogen natt til 25. desember, men dette har ikke latt seg verifisere innenfor normal arbeidstid. Vi er nødt til å konkludere med at julenisser ikke er en gyldig objekttype i datakatalogen. Men det står da beviselig et julenisseskilt i Drøbak (der julenissen bor):

Annen fare - julenisse (c) julehus.no

Annen fare – julenisse
(c) julehus.no

Etter litt detektivarbeid har vi funnet ut at denne skiltplaten har nummer 156 – Annen fare og teksten Julenisse. Og ja – som dere ser  (vegkart-søk etter julenisseskilt) finnes det bare en forekomst i NVDB

 

Hvorfor er vegkart og NVDB api uten data?

Tilføyelse 19.08.2013 kl 1106: SOLR ute av drift ca en times tid, oppe igjen ca 1130. 

TILFØYELSE 15.08.2013 kl 0942: Alt virker igjen nå! 

Kortversjonen er at vi har gjort noen brutale erfaringer med hvordan man IKKE skal oppgradere SOLR søkeindeks hvis man skal unngå driftsavbrudd — og ikke minst betydningen av presis dokumentasjon på slike rutiner. Vi har nettopp rullet ut en ny versjon av vegkart og NVDB api’et. Disse tjenestene kjører på flere servere (noder) med lastbalansering. Alt er tilrettelagt for at vi kan oppgradere en node av gangen og dermed ha en ny versjon i gang uten at brukerne merker noe som helst.

Ved denne oppgraderingen har det vært flere ting som har gått galt:

  • Oppgradering av SOLR versjon ble gjort på alle noder samtidig (ikke en av gangen). 
  • Vi opprettet nye datastore, men uten å sikre oss at det var 100% samsvar mellom konfigurasjonsfil for søkeindeks og ny datastore. Når (noen av) søkefunksjonene ikke finner et gyldig datastore så returneres 0 treff.
  • Indeksering av NVDB fra scratch er tidkrevende, det tar opp mot halvannet døgn. (Men dette pleier vi gjøre uten at brukerne merker noe annet enn at dataene er litt ferskere og oppdatert — det er en av grunnene til å ha drift på flere noder samtidig.). Men fordi ny SOLR versjon ble rullet ut på samtlige noder samtidig var vi nødt til å kjøre prosessen fra scratch — på samtlige noder, samtidig. Kombinert med de andre problemene (og litt feilretting og sånn) blir dette fort vekk et driftsavbrudd på flere døgn.

En annen måte å si det på er at vi har brukt beta-perioden aktivt for å perfeksjonere driftsrutiner… Episoder som denne er svært lærerike, og både dokumentasjon og rutiner er nå svært mye mer skuddsikre enn de var på mandag.

Det ironiske er at det er nettopp denne versjonen av api’et som skal sikre at du har ferskest mulige data til enhver tid! Med inkrementell (kontinuerlig) oppdatering av søkeindeksen går det ikke mange sekundene fra oppdatering i NVDB orginaldatabasen til dataene er indeksert og tilgjengelig i nvdb api’et. (Eksakt hvor mange sekunder avhenger av hvor store datamengder vi snakker om, kanskje 10-30 sekunder i de fleste tilfellene og opp mot noen minutter hvis det må re-indekseres mange objekter samtidig).

Trafikkmengde (ÅDT) per 2013.08.06

Det tar TID å endre innarbeide vaner og metoder. Sist uke ble vi spurt veldig pent om vi kunne lage de samme dataene som i fjor og forfjor. Rent prinsippielt burde vi kanskje tvunget alle til å hente slike data fra vegkart og/eller api‘et, men så er det noe med å revolusjonere verden i små steg, respekt for at andre enn oss kan være i tidsnød og at vi generelt liker å føle oss snille.

I hvert fall, siden vi ble spurt veldig pent laget vi et datasett med ÅDT tall for europa-, riks-, fylkes- og kommunale veger på ESRI geodatabase (gdb-format) gyldig per 6. august 2013. Det finner du her (last ned).

Tilføyelse 13.08: Vi har også konvertert disse trafikkmengedatene til det åpne formatet spatialLIte. (last ned). Eller browse mappen på vår ftp-server ftp://vegvesen.hostedftp.com/~StatensVegvesen/trafikkmengde/ 

Merk at vi har opprettet et eget attribute domain for å få menneskelig lesbare egenskapsnavn. De fleste verktøy vil automatisk bruke disse navnene (f.eks. alle ESRI produkter). Men spatialLite-dataene viser egenskapsnavnene for selve tabellene, og disse er nok ikke så veldig intuitive uten kjennskap til NVDB datakatalog. (Dette gjelder også hvis man åpner gdb-dataene i f.eks. FME). De mest relevante egenskapene er

TADT_4623: Selve ÅDT verdiene (årsdøgntrafikk). 
AR_4621: Hvilket år ÅDT-tallet er beregnet for.
ALNGX_4624: Andel lange (>5.6m) kjøretøy, i prosent.

Tallverdiene i egenskapsnavnet er ID til denne egenskapen i NVDB datakatalog. Hva dette betyr kan du slå opp i api’et, f.eks. slik: https://www.vegvesen.no/nvdb/api/datakatalog/egenskapstype/4623 . Hver  objekttype har sitt sett med egenskaper, hvilke som gjelder for trafikkmengde kan du finne ut her https://www.vegvesen.no/nvdb/api/datakatalog/objekttyper/540. Eventuelt kan du finne de samme kodene i den offisielle datakatlogen (java-program).

Merk også at dette datasettet kun inkluderer de strekningene på ERFK-vegnettet som har trafikkdata (per 6. august 2013). Du får altså ikke et komplett vegnett ved å laste ned disse dataene.

Bruk av dataene skjer (som alltid) etter Norsk lisens for offentlige data.