Skip to main content

Ruteberegning i V4

Hva brukes ruteberegning til?

Dette brukes internt av stedfestingstjenesten blant annet. Når man bruker denne tjnesten så oppgir man start- og slutt-punkt og så finner tjenesten veglenksekvenser med start- og slutt-posisjoner man må følge på vegnettet for å komme fra a til b. Med start- og slutt-posisjon kan man sende inn lenkesekvenser eller man kan sende inn xy-punkt i UTM33. Man kan også sende inn en geometri, f.eks en linjegeometri og så få beregnet en rute som følger denne geoemtrien. Tjenesten vil finne sammenhengende vegnett for å komme fra a til b og liste opp disse som venlenksekvenser (kortform=true) eller som vegsegmenter (kortform=false).

Endepunkt man benytter for å beregne ruter er:

GET https://nvdbapiles.atlas.vegvesen.no/vegnett/api/v4/beta/vegnett/rute

eller

POST https://nvdbapiles.atlas.vegvesen.no/vegnett/api/v4/beta/vegnett/rute

POST-endepunktet anbefales for større spørringer (som for eksempel ruteberegning med store geometrier). Begge endepunkt bruker de samme parametrene. Detaljert dokumentasjon av disse finnes i her: Open-API NVDB API Les V4 - Rute


Eksempel på en ruteberegning og respons fra tjenesten

Sender man inn en ruteberegnings-forespørsel med start- og slutt-posisjon i UTM33 som dette:

https://nvdbapiles.atlas.vegvesen.no/vegnett/api/v4/beta/vegnett/rute?start=226506.69517676393,6564521.030523449&slutt=226565.63365050522,6564518.030882485&maks_avstand=10&omkrets=100&konnekteringslenker=true&detaljerte_lenker=true&behold_trafikantgruppe=false&pretty=true&kortform=true

Så får man et svar som følger:

{
"vegnettsrutesegmenter": [
{
"type": "Linje",
"veglenkesekvensid": 1148895,
"startposisjon": 0.84649793,
"sluttposisjon": 0.85527018,
"kortform": "0.84649793-0.85527018@1148895"
},
{
"type": "Linje",
"veglenkesekvensid": 1148895,
"startposisjon": 0.76608226,
"sluttposisjon": 0.84649793,
"kortform": "0.76608226-0.84649793@1148895"
}
],
"metadata": {
"antall": 2,
"lengde": 58.88219928860109,
"status": 2000,
"status_tekst": "KOMPLETT"
}
}

Ting å tenke på når man skal gjøre ruteberegning

Når man skal ruteberegne er det noen ting man må ha i bakhodet:

  • Når man beregner en rute fra a til b eller via geometri, så legges det på et ytre rektangel/et område rundt for ruteberegningen. Dette bestemmes med parameter omkrets og angis i meter. Om parameter ikke angis, så settes det til 100 meter. Det er ikke hensiktsmessig å sette denne verdien høy. Om du setter omkrets til 1000, så vil ruteberegningen hente inn 1000 meter med ekstra kart i nord, 1000 meter med ekstra kart i sør og tilsvarende i vest og øst.
  • Parameter maks_avstand forteller hvor mange meter unna punktet kan være for å treffe en veglenke. Dette angis i meter. Om ingen verdi angis, blir verdien 10.
  • Parameter konnekteringslenker angir om man vil ha med konnekteringslenker. Det er anbefalt å sette denne til true (som også er standardverdi).
  • Om du ikke bare vil ha vegtrase, men ruteberegne over kjørebane så må du sette parameter detaljerte_lenker=true.

Vi anbefaler å bruke dette nettstedet for forskjellige valgmuligheter du har for å beregne ruter:

https://nvdb-vegdata.github.io/nvdb-visrute

Du kan beregne rute på forskjellige måter

Bergne rute med startlenke og sluttlenke

Oppgi parameter start=postisjon@veglenkesekvensid og slutt=postisjon@veglenkesekvensid.

Bergne rute med start- og slutt-posisjon

Oppgi parameter start=UTM33-koordinat og slutt=UTM33-koordinat

Eksempel:

start=226506.69517676393,6564521.030523449&slutt=226565.63365050522,6564518.030882485&maks_avstand=10&omkrets=100&konnekteringslenker=true

Beregne rute med geometri

Oppgi geometri-parameteret med geometriens WKT, for eksempel:

Med GET:

geometri=LINESTRING Z(226778.2 6564468.6 5, 226747.1 6564470.1 5, 226717.5 6564466.4 5, 226705.9 6564462.7 6.2, 226687.2 6564462.9 6, 226657.7 6564460.7 6, 226628.5 6564459.5 6, 226611.3 6564459.6 6.2)

Med POST:

{
...
"geometri": "LINESTRING Z(226778.2 6564468.6 5, 226747.1 6564470.1 5, 226717.5 6564466.4 5, 226705.9 6564462.7 6.2, 226687.2 6564462.9 6, 226657.7 6564460.7 6, 226628.5 6564459.5 6, 226611.3 6564459.6 6.2)"
...
}

Merk at når man beregner via geometri så er det slik at geometrien er ment som en hjelpelinje for å styre rutebergeningen gjennom et område. Det betyr at punktene i geometrien du bruker vil ruteberegningen finne næremeste punkt ned på veglenkene.