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.

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.

Løsning for Arc Map / arcgis Pro

For Arc Map > 10.4.1 og arcgis Pro  har vi en add-in som leser data direkte fra NVDB api, hent den her.

Løsning for QGIS

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».

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 vegkart CSV-dump

Typiske QGIS-innnstillinger for å lese inn vegkart CSV-dump

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

https://github.com/LtGlahn/Nvdbapi_v2_FME

Geometri er snublefelle for import av NVDB data

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)