Vi elsker spørsmål — det gir oss føling med behovene der ute, og vi lærer masse av å svare på dem. Men av og til må vi svare nei:
Jeg lurte altså på om det var mulig å få ut trafikkdata (ÅDT) på bomstasjonene i tillegg til de andre variablene som ligger tilgjengelig på bomstasjonsdatasettet hos DIFI.
Grunnen til at vi svarer nei er at det skal svært gode grunner til at vi oppretter nye sekundære datasett. Det beste er å hente data direkte fra NVDB api’et eller fra Vegkart (der man også kan laste ned cvs og excel). Vi kan heller bidra med tips, tricks og vink, samt selvsagt forbedre tjenestene våre. Bomstasjon-datasettet er i en særstilling, det ble lansert før NVDB api’et og er så populært at vi må vedlikeholde det.
En svakhet ved NVDB api’et (og vegkart) er at vi ikke kan gjøre spørringer på objekter som er knyttet til samme sted — for eksempel trafikkmengde der det står bomstasjoner. Denne logikken må i dag skrives på klientsiden.
Dette spørsmålet er en ypperlig anledning til å gi et kodeeksempel på hvordan man finner vegobjekter som deler posisjon i vegnettet.
Prinsippet er at man først henter det minste dataasettet (bomstasjoner). Deretter finner man veglenkene til hver bomstasjon.
"veglenker": [ { "id": 625504, "fra": 0.162819, "til": 0.162819, "direction": "WITH", "felt": "2#4K", "sidepos": "NULL" } ]
Veglenke ID, til og fra brukes til å søke etter trafikkmengde på akkurat den samme posisjonen for denne veglenka. Dette inngår i lokasjonselementet i NVDB api’ets søkefunksjon. I tillegg angis vi objekt ID etc på vanlig måte. Formattert for lesbarhet ser kallet slik ut
https://www.vegvesen.no/nvdb/api/sok?kriterie={'lokasjon': {'veglenker': [{ 'fra': 0.706074, 'til': 0.706074, 'id': 1811554} ]}, 'objektTyper': [{ 'start': 0, 'id': 540, 'antall': 1} ]}
Fjerner vi formatteringen og gjør litt URL encoding får vi lenke til et gyldig søkeeksempel (nettleseravhengig; google chrome gir deg en pent formattert xml).
Hoppsann — her fant vi visst en bug i ny versjon av API’et
Det viser seg at siste API-versjon (produksjonssatt 10.9) returnerer en liste der det samme objektet finnes to ganger. Indekseringsfeil, feilen rettet 17.9.
Men 18 bomstasjoner mangler trafikkmengde!
Det er ikke alle veglenker som har trafikkmengde. Ett eksempel er dette krysset ved Lysaker:
Manglende data er kodet som «-9999».
Hvor finner jeg data og kode?
På Github, selvsagt. Og det er mulig å laste ned en CSV-fil generert den 10.9.2014.
Vi har behold de samme egenskapene som for bomstasjonene på Difi’s datahotell, men har lagt på noen nye:
bomstasjonId - NVDB ID til denne bomstasjonen aadtTotal - ÅDT, total, d.v.s. årsdøgntrafikk aadtLGV - ÅDT, andel lange kjøretøy aadtYear - ÅDT, gjelder for aadtId - NVDB ID til denne trafikkmengdeforekomsten
Med NVDB ID er det enkelt å se nærmere på det enkelte vegobjekt. For eksempel bomstasjonen i Drammensveien med ID 86574496
https://www.vegvesen.no/nvdb/api/vegobjekter/objekt/86574496
… og vårt pythonscript har allerede funnet at på denne veglenka har vi denne trafikkmengden:
https://www.vegvesen.no/nvdb/api/vegobjekter/objekt/328461107
Vi ville ikke vært geodatafolk om vi ikke hadde lagt til rette for visning på kart
Derfor skriver vi også to geojson-filer: En som er identisk med bomstasjoner.csv, og en som viser trafikkmengde som strekningsobjekter. (På desktop har github en enkel kartvisning av disse objektene.