Hvordan får jeg NVDB-data inn i kartsystemet mitt?

Hvordan kan jeg få NVDB-data inn i kartsystemet mitt? Enten som ferdige kartlag (f.eks. WMS), eller som redigerbare data.

Sosi eksport fra vegkart NB! Kun små datamengder, ikke multilinje-geometri

Oppdatering 19.10.2020: P.t. har vi en del iriterende begrensninger med sosi eksport:

  • Pga ytelsesproblemer avgrenser vi datamengden i dette uttaket, sjekk antall unike objekter og at dette stemmer med antall objekt i Vegkart.
  • Enkelte abstrakte objekttyper (f.eks. fartsgrense, trafikkmengde) er stedfestet på mange lenkesekvenser, dvs geometrien blir multiLineString, som dagens sosi eksport ikke takler særlig bra. 

Versjon 3 av vegkart tilbyr eksport av SOSI prikkformat. Gjør vegkart-søket etter ditt favorittobjekt. I boksen , og klikk høyrepil «>» der det står «antall objekter», så får du frem nedlastingsalternativene CSV, SOSI eller API.

Klikk på høyrepil for å ekspandere infoboks om søket ditt

Klikk på høyrepil for å ekspandere infoboks om søket ditt

Infoboks om vegkart-søket ditt er utvidet til å vise de første 15 treffene og alternativene last ned CSV, SOSI eller lenke til dette søket i NVDB api.

Utvidet resultatboks som viser de første 15 treffene og ulike alternativ for nedlasting av data: CSV, SOSI prikk og NVDB api.

Beklager – ingen WMS kartlag (foreløbig)

WMS – tjenester med de mest brukte kartlagene vil komme, vi finpusser på geoserver-oppsettet og dataflyten internt, men her er det et par snublefeller vi må fikse. Vi oppdaterer artikkelen med detaljer så snart vi har det tilgjengelig.

Vegnett eller fagdata?

NVDB api V2 tilbyr såkalt segmentert vegnetthvor veglenkene er kombinert med vegreferanseinformasjon (vegnummer, hovedparsell, meterverdier).

Vegnettet i NVDB i rå, ubearbeidet form (lenker, noder og porter) vil først bli tilbudt fra V3 av NVDB api’et (scroll ned for å finne info om V3). Men dette er kun relevant for hardcore NVDB-entusiaster. Det mest praktiske er gjerne å kombinere vegnett med andre typer fagdata. For navigasjon trenger man for eksempel envegskjøring, svingerestriksjoner, fartsgrenser og en del andre ting. Ferdige datasett tilrettelagt for navigasjon finner du her (elveg og ruteplan).

NVDB vegnett i rå, ubearbeidet form er kun for hardcore vegnettsentusiaster! Vi andre trenger mer lettvint anvendbare vegnettsprodukt.

Noen fagdata er heldekkende, dvs de finnes på alle deler av vegnettet. Laster du f.eks ned 532 Vegreferanse eller 105 fartsgrense får du samtidig en grei representasjon av vegnettet — ikke anvendbart til navigasjon, men nyttig til mange andre formål.

Arcgis Pro addin

For arcgis Pro har vi en add-in som leser data direkte fra NVDB api, hent den her. Løsningen skulle også fungere for Arc Map > 10.4.1, men p.t. (oktober 2020) er det noen problemer med å få add-in til å fungere i arc map.

Denne addin er en utvidelse til arcgis pro som henter data med gammelt vegreferansesystem fra NVDB api V2 og vi kommer neppe til å bygge dem om til å bruke versjon 3 – med mindre vi får drahjelp fra noen som tar utfordringen? Kildekode  Hvis ikke dør denne plugin samtidig med NVDB api V2.

Nedlastingstjeneste Arcgis Pro

Vår leverandør Geodata A/S har utviklet en nedlastingsløsning som tar over etter arcgis plugin. Dette er en geoprosesseringstjeneste som de tilbyr sine kunder. Kontakt dem direkte for tilgang.

Qgis Python-konsoll

Via Python-konsollet til Qgis kan du interaktivt søke og laste ned både veglenker og øvrige NVDB-data til kartflaten. https://github.com/LtGlahn/nvdbapi-V3/blob/master/README_qgis.md

Hent fagdata til QGIS med CSV-dump fra Vegkart

Gjør Vegkart-søket ditt, klikk der det står «treff» og last ned CSV-fil. Denne kan du legge til QGIS med et par museklikk.

  1. Lag -> Legg til Lag -> Legg til skilletegn tekstlag
  2. Velg filnavn og juster et par innstillinger, ref liste og skjermdump nedenfor. QGIS husker hva du gjorde forrige gang, så du trenger stort sett kun fikle med dette én gang.
  3. Klikk «Legg til».

NB! Denne løsningen har p.t. (okt-2020) en dynamisk avgrensing på antall objekt. Store datauttak, evt middels store datauttak i perioder med høy belastning, kan bli trunkert! Sjekk antalle unike NVDB-Id’er opp mot søkeresultatet i Vegkart for å være sikker på at dumpen din ikke ble trunkert.

Innstillinger:

  • Filnavn
  • Tegnsett: latin1 (eller hvis du har norsk PC-oppsett så pleier «system» funke bra)
  • Under filformat: semikolon som separator
  • Brukerdefinerte skilletegn: » (dobbelt anførselstegn) i boksene Sitat og Avbryt
  • Geometry definition: Well known text (WKT)
  • Gemetrifelt: geometri
    • Les nederst i artikkelen om snublefeller mhp geometrityper og hva du evt oppnår med å velge kolonnen «Geometri, Punkt», «Linje» eller «Flate» når de finnes
  • Geometritype: Oppdag
  • Geometry CRS: EPSG:25833 – ETRS89 / UTM sone 33N
Typiske QGIS-innnstillinger for å lese inn CSV-dump fra Vegkart.

Typiske QGIS-innnstillinger for å lese inn CSV-dump fra Vegkart.

Python

Minst to vegvesen-kolleger har laget egne bibliotek for å søke mot NVDB api og håndtere svarene derfra. Samt litt anna snacks:

import pandas as pd
myDf = pd.read_csv( 'datadump-fra-vegkart.csv', encoding='latin1', sep=';')

FME

Her er et par gode eksempler github.com/LtGlahn/nvdbapi-v3-FME  og her litt  løsrevne eksempler

Geometri er snublefelle for import av NVDB fagdata

Alle NVDB-data er knyttet til vegnettet, enten i punkt eller langs en strekning (evt flere strekningeR).

Punktdata – f.eks. bomstasjon, skiltplater og belysningspunkt – er knyttet til vegnettet i et punkt på vegens senterlinjer. Å beskrive ett punkt med koordinater for X, Y og Z (høyde) er trivielt, og sklir rett inn i alle kartsystem vi har prøvd til nå.

Strekningsdata, for eksempel fartsgrenser, er knyttet til vegnettet på en eller flere strekninger langs senterlinja. Ikke alle kartsystem er like glade for å møte en slik blanding av enkle linjer (LinesString) og grupper av linjer (MultiLineString) i samme datasett. Se definisjonen av Well Known Text, den gir en god innføring.

Hvis det er kronglete at datasettet har en blanding av enkle- og multilinjer så kan man gå rundt problemet ved å erklære at alle linjer er MultiLineString. Mange av «Multi»-gruppene vil da kun har ett eneste medlem, men det er greit.

Alternativet er å splitte datasettet to, en tabell med enkle linjer og en med multi-linjer. Mange kartsystem gjør en av delene automatisk når det trengs.

Egengeometri eller ei?

Men det meste av vegustyr blir aldri montert på noen senterlinje – det står på siden av vegen (evt over eller under). Derfor har vi innført såkalt egengeometri, det vil si koordinatene for den fysiske plasseringen. Eldre data er gjerne registrert uten egengeometri (f.eks. mye holdeplassutrustning), mens nyere vegutstyr som regel har egengeometri. Egengeometri – hvis den finnes – er alltid i tillegg til stedfesting på vegnettet (i punkt eller strekning, se over).

  • Egengeometri er en egenskap med ett av disse navnene:
    • Geometri, Punkt
    • Geometri, Linje
    • Geometri, Flate.
  • Eller hvorfor ikke alle 3 på en gang? Trær i NVDB har denne valgfriheten
  • Hvis du vil skille objekter med og uten egengeometri fra hverandre kan du bruke filtre som Geometri, Punkt har verdi

Selv synes vi at NVDB sin modell er genial og fleksibel, men dette skaper en del kluss for dem som skal håndtere data.

Det er du som bestemmer!

Det er du som som må velge hvilken geometri-representasjon som passer best til dine formål!

Jeg velger vegnetts-geometri

Vegnettsgeometri er på mange måter det enkleste: Da får du linjer eller punkt plassert på senterlinja. Sjekkliste:

  • Stedfesting – Punkt eller strekning?
  • Punkt = trivielt
  • Strekninger:
    • Takler kartsystemet ditt at du blander inn et par MultiLineString blant LineString? Hvis ikke bør du splitte alle multi i sine enkelte LineString. Eventuell bruk valget inkluder=vegsegmenter i kallene til NVDB api’et, og lag en forekomst per vegsegment.
  • For vegkart CSV-dump skal du velge kolonnen «geometri».

Jeg velger egengeometri!

Ofte er det snasent å vite fysisk plassering i terreng, ved siden av vegen, evt i vegkanten eller kjørebanen. Sjekkliste:

  • Hvilken egengeometri-variant finnes? Sjekk datakatalog-definisjonen, let etter egenskapene
    • Geometri, flate
    • Geometri, linje
    • Geometri, punkt
  • Velg den egengeometri-varianten du vil ha, og fôr den inn i kartsystemet ditt.
  • Objekter uten egengeometri?
    • For søket ditt – finnes det objekter uten data for egengeometri? Vil du inkludere dem? Da må du håndtere dem etter oppskriften for vegnettsgeometri, se over. Ett tricks kan være å ha to vegkart-søk / NVDB api – søk:
      • Ett søk med filteret Egengeometri, flate (linje, punkt) har verdi
      • Ett søk med filteret Egengeometri, flate (linje, punkt) har ikke verdi
    • En annen mulighet er å laste ned alt og sortere ut dem som mangler data for egenskapsverdien Egengeometri, flate (linje, punkt)