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 tiltrue
(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.