Vegnett i NVDB api

Vi har jobbet med erfaringene fra den første vegnett-prototypen vi lanserte i september 2013, og er nå stolte over å kunne lansere den første beta-versjonen av vegnettsfunksjonalitet i NVDB api’et. Formatet er GML (versjon 3.2), og applikasjonsskjemaet er basert på SOSI Vegnett 4.5. Merk at funksjonalitet og grensesnitt vil bli utviklet i nye versjoner.

Vegnett-beta i NVDB api

Vegnett-beta i NVDB api

https://www.vegvesen.no/nvdb/api/dokumentasjon/vegnett

Vi jobber hardt for å fjerne beta-stempelet fra endepunkt for å hente fagdata (data langs vegen). Det kan hende at vi ønsker å beholde beta-stempelet for veg-endepunktet litt lenger, det avhenger av erfaringene vi gjør oss nå.

NVDB api fagdata er på vei ut av beta, mens vegnett-delen av api’et er ultra-beta

Vi minner også om at det er laget en QGIS plugin for å laste ned vegnett fra den prototypen vi lanserte i fjor. For å ta i bruk det nye vegnett-endepunktet må plugin’en bygges om: I stedet for å bygge geometriske objekter i python (json-parsing i python er gøy!) må man bruke generiske GML-støtte i enten QGIS eller python. En fin test på interoperabiliteten til åpne formater og vårt nasjonale standardiseringsarbeid!

NVDB api og FME

FME — Feature Manipulation Engine — er et verktøy som geodatanerder fort blir glade i. Det er generelt et veldig kraftfullt verktøy for alle hånde datakonvertering, transformasjon, geografiske analyser og en del anna moro.

Undertegnede hadde det utrolig moro med å lage et par FME workspace-eksempler som leser data fra NVDB api. Både presentasjon og workspace eksempler er tilgjengelig her:

https://github.com/LtGlahn/vegdatalabs_fme

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

Hvor finner jeg vegnettsdata til navigasjon?

Nå også på spatialLite – format 🙂 

ftp://vegvesen.hostedftp.com/~StatensVegvesen/vegnett/

Det fremgår av filnavnet når data sist ble oppdatert. Dette skjer 6-10 ganger årlig, gjerne samtidig med Elveg-leveransen.

Data om vegnettet — til f.eks. navigasjonsformål — frigis av Kartverket og Statens Vegvesen den 1. oktober 27. september 2013. Hvorfor akkurat 1/10 27/9? Fordi frigivelsen er en del av revidert nasjonalbudsjett (vedtatt i mai), og det gjelder fra 1/10.

Tilføyelse: Kartverket og Vegvesenet markerer frislipp av kartdata (inkludert vegnett) den 27/9, derfor åpnet vi tilgangen litt før.

I Statens Vegvesen ønsker vi selvsagt å servere vegnettsdata ut gjennom NVDB api‘et, åpent og fritt tilgjengelig for alle. Dette er en smule mer interessant — og komplekst — enn å servere objekter som finnes langs vegen, slik dagens api gjør. Slikt som fartsgrenser, bomstasjoner og sånn. Vi jobber med saken, men vil ikke ha noe ferdig til 1/10.

Imidlertid er det bare rett og rimelig at vi frigjør de samme dataene som vi bruker i vår egen ruteplantjeneste, på databaseformatene ESRI geodatabase og spatialLite. Dette er et fint supplement til ELVEG datasettet (SOSI format, inndelt kommunevis). Men — frem til 1/10 er var dette dessverre bare tilgjengelig for dem med rettigheter til ELVEG, d.v.s. Norge Digitalt-medlemmer og dem som har kjøpt ELVEG-tilgang.

Ruteplantjenesten er under utvikling, og dataene vi bruker frigis under forbehold om at formater og struktur kan og vil bli endret i takt med videreutvikling av tjenesten. Og vi tar forbehold om feil og intet ansvar for konsekvensene av feil — ref betingelsene i Norsk lisens for offentlige data (NLOD).

Nettverksdataene leveres som to datasett i samme geodatabase:

Databaser bilkjøring + sykkel, ESRI nettverksdatasett.

Databaser bilkjøring + sykkel, ESRI nettverksdatasett.

Der «Route» inneholder kjørbart vegnett med bil, «Route_bike» inneholder bilvegnett + gang/sykkel

Eksempel ESRI nettverksdatasett.

Eksempel ESRI nettverksdatasett.

Egenskapsdata:

Navn Forklaring Eksempel
ATTRIBUTES NVDB Attributter, Json format json:{«Rasteplass»:[{«Navn»:»Ramsund Vest»,»X»:231447.69121681788,»Y»:6577504.174785357}]}
DT_TURIST_FT Drivetime turistveg, Fra-Til 0,531499
DT_TURIST_TF Drivetime turistveg, Til-Fra 0,531499
FROM_M Start posisjon på NVDB Referanselenke 0
FROM_Z Z verdi start lenke 6,83
FromNodeID NodeID i ruteplandatasettet 1828553
FT_BOM_LIT Bomkostnad Liten bil. Fra-Til 0
FT_BOM_STO Bomkostnad Stor bil, Fra-Til 0
FT_Fart Skiltet hastighet, Fra-Til (-1: manglende verdi) -1
FT_MINUTES Beregnet kjøretid for å passere lenken, Fra-Til(minutter) 0,531499
FYLKE_ID Fylkes Nr 7
GATENAVN Gatenavn ( ERF veger overstyrer gatenavn utenfor vegarm/rampe) Fv1005
HIERARCHY Veg Hierarki (1: 2: 3: 4:, Se nedenfor) 2
IsBikeRoad Angir om lenke er Gang/Sykkle (utfra vegstatus) 1: Gang/Sykkel 1
Medium Medium fra sosi
METER_ORG Elveg atributt, angir lengde 354,332847
OBJECT_ID ArcGIS 686103
ONEWAY N: Ingen, B: Begge, FT: Fra-Til, TF: Til-Fra B
RoadClass For network analyst (1:, 2: 3: 4: 5: 6:, Se nedenfor) 4
ROUTEID NVDB Referanse lenke ID 1828550
SHAPE ArcGIS Polyline Z
SHAPE_Length ArcGIS 354,332847
SPECIALVEG Angir om det er, Turist, Ferge, ATK strekning [FERGE]
SPERRING 0: ikke sperret, -1: Vegsperring -1
TF_BOM_LIT Bomkostnad Liten bil. Til-Fra 0
TF_BOM_STO Bomkostnad Stor bil, Til-Fra 0
TF_Fart Skiltet hastighet, Til-Fra (-1: manglende verdi) -1
TF_MINUTES Beregnet kjøretid for å passere lenken, Til-Fra(minutter) 0,531499
TO_M Slutt posisjon på NVDB Referanselenke 1
TO_Z Z verdi slutt lenke 6,83
ToNodeID NodeID i ruteplandatasettet 1741699
URL URL til infosider. Ferge og turistveg http://dit.websrv02.reiseinfo.no/fellespIISStaticTables/ruter/t/07-230.htm
VEGID VegID {F1005}
VEGNUMMER Vegnr 1005
VEGTYPE Vegtype F

 

Hierakier

1:
E ,R, Primære fylkesveger, Riksveger fra 2010,Stamveger 2009
2:
Øvrige Fylkesveger, KV
3:
PV,SV

Drivetime

driveTime = ((Length / 1000) / SpeedLimit * 60.0) * k;

k: (faktor)
Ev: 1.15
Rv: 1.15
Primär Fv, Riksveg fra 2010, Stamveg 2009: 1.22
Annen Fv: 1.25
Kv: 1.46
Pv: 1.47
Sv: 1.0, men fart satt till 15km/h

Fergestrekninger har fart satt til 15km/h

På Kommunal og Privat veg er fart begrenset til maksimalt 60km/h
Dersom fart mangler i NVDB settes den til 50km/h

Dersom det er en fjellovergang som er «spesialhåndtert» for å unngå at denne foretrekkes, så leggs denne ekstratiden fra denne på kjøretidne (normalt 5-20 minutter ekstra).

RoadType Esri:

// The network edge is of an unknown road classification.
esriRCUnknown = 0,
// The network edge represents a surface street.
esriRCStreet = 1,
// The network edge represents a highway.
esriRCHighway = 2,
// The network edge represents a highway ramp.
esriRCRamp = 3,
// The network edge represents a ferry crossing.
esriRCFerry = 4,
// The network edge is part of a roundabout intersection.
esriRCRoundabout = 5,
// The network edge represents a major road.
esriRCMajorRoad = 6,