Test av Trafikverkets API för trafikinformation

Profilbild Trafikverket

Trafikverket tillhandahåller flera öppna datatjänster, en av dessa är API:et för trafikinformation. API:et började som en renodlad tjänst för tåg, vilken senare utökades med vägdata som också finns tillgängligt i datatjänsten Datex. Vår granskning av olika API:er är ett led i arbetet att belysa hinder och behov kring nyttjande av öppna API:er från ett användarperspektiv. Tanken med testerna är att ge konstruktiv feedback till dataägarna när det gäller sådant som kan förbättras, samt visa på bra exempel och lösningar som kan inspirera andra dataägare. Läs mer om bakgrunden till varför vi granskar öppna API:er och öppna datakällor.

Trafikinformations-API:et var tillgängligt i version 1.1 när vi utförde testet och innehåller data för tåg och väg. API:et innehåller objekt för tågtrafikmeddelande (TrainMessage), tågstationer (TrainStation) och tågtidtabellsdata (TrainAnnouncement). För väg finns det bilder för trafikhändelser i form av ikoner (Icon), väglag (RoadCondition), översikt av väglag baserat på län (RoadConditionOverview), trafikhändelser och störningar (Situation) samt data från väderstationer som finns utplacerade utefter vägarna (Weather).

Snabblänk till artikelsektioner:
Licensregler och opartisk användning
Support och dokumentation
Åtkomlighet och API-strukur
Dataformat och datakvalitet
Svarstider och tillförlitlighet
Användarvänlighet
Poängsammanställning
Sammanfattning

Licensregler och opartisk användning

creative-commons Licensreglerna följer inte någon internationell standard, utan är specifika för API:et. Vad gäller nuvarande licens, så innehåller de få begränsningar om vad som får göras med tillgänglig data. Av reglerna framgår att användaren inte får bryta mot Trafikverkets policy och intressen, vad detta innebär i praktiken framgår däremot inte. Licensreglerna upplevs vaga och kunde ha varit tydligare kring viktiga frågor, som exempelvis om data får användas i kommersiella syften eller inte, om det är tillåtet att modifiera data, om licensen ska ingå i vidaredistribuering, eller om data kan ingå i produkter med mer strikta licensregler. Om man hade använt sig av de internationella licenser med tillhörande förklaring i form av lathund som finns för open source, skulle det ha varit tydligare vad som är tillåtet och inte. Vi har i kommentar från Trafikverket fått information om att en internationell standardiserad licens är på gång.

Den enda restriktion som finns angående opartiskt nyttjande av API:et är att användaren behöver ha tillgång till en e-postadress. En begränsning är att portalen enbart är tillgänglig på svenska, vilket kan utgöra ett hinder för användare utan kunskap i språket.

Support och dokumentation

Test av Västtrafiks API för kollektivtrafikFör frågor och support finns en e-postadress. Det finns också en sida för vanliga frågor och en forumsida där registrerade användare kan ställa och svara på varandras frågor. När vi kontaktade supporten via e-post, tog det en och en halv arbetsdag innan vår fråga blev besvarad. För mindre tålmodiga användare kan svarstiden vara i längsta laget, även om datatjänsten och supportfunktionen är gratis.

Dokumentationen för API:et är tydlig och överlag enkel att följa. Den beskriver hur anrop utförs och det finns användarexempel för att snabbare komma igång. Det finns också exempel på anrop med geografisk filtrering för vägrelaterade händelser inom en viss radie. API:et har en bra dokumenterad syntax som förklarar hur anrop utförs. Varje dataobjekt som finns tillgängligt via API:et har ett antal attribut (väglagsbeskrivning, stationsnamn, mm.) som också finns dokumenterade tillsammans med exempeldata. Däremot hade engelsk dokumentation varit bra för att attrahera internationella användare.

Åtkomlighet och API-struktur

compassPortalen har en egen API-konsol vilken tillåter utforskning av data utan klientprogram. Generellt sett utgör en webbaserad konsol bra möjligheter för användare att bekanta sig med syntax och data och borde alltid finnas öppet tillgängligt. Att konsol finns öppet tillgänglig på API:et för trafikinformation förklaras dock inte på portalens förstasida, vilket hade varit en fördel.

Överlag har API:et en enhetlig struktur och erbjuder goda möjligheter att söka ut den datamängd användaren är intresserad av. Detta görs genom att användaren deklarerar själv vad som skall ingå via att inkludera eller exkludera tillgängliga attribut. API:et erbjuder också möjligheter att söka ut nya eller modifierade poster av data från en given tidpunkt. Däremot erbjuder API:et inte möjligheter att prenumerera på data asynkront (PUSH) – användaren måste själv kontrollera om det finns nypublicerad data.

Dataformat och datakvalitet

cloud-computingAPI:et har två format som användaren kan välja mellan: JSON och XML, vilka båda lämpar sig väl för den hierarkiska data som erbjuds. Syntaxen för API:et följer ingen vedertagen standard men påminner om SQL, däremot nyttjas kända konventioner för geografiska referenser. Exempel på API ramverk är Swagger, JSONAPI och HATEOAS som bygger på REST arkitektur och standard.

Vid testtillfället saknades XML och JSON-schema som definierar dataobjekt och datatyper, vilket försvårar validering och hantering av data på klientsidan. Att ha scheman publicerade hade varit till nytta för utvecklare, då de flesta utvecklingsmiljöer (IDE) automatiskt genererar objekt med attribut och giltiga värden. Dataobjekt och datatyper finns däremot dokumenterade i form av brödtext.

API:et tillhandahåller grundläggande metadata, som till exempel när en specifik post senast var ändrad, vem som är källan till informationen (SJ, MTR, Trafikverket mm.) och vilket geografiskt referenssystem som nyttjas.

Dataobjektet (TrainAnnoucment) för tåg tillhandahåller inte de detaljer som användaren behöver för att själv härleda eller göra egna uppskattningar om ankomsttider. För väg finns mer detaljerad data tillgänglig, bland annat väderdata från sensorer utefter vägarna med tillhörande historiska observationer. Väderdata för vind redovisas som medelvärde och max, istället för enskilda observationer. Om enskilda vindobservation hade varit tillgänglig, hade användaren själv kunnat ta reda på medel, standardavvikelser med hjälp av historiska data.

Vid granskning av hur aktuell data är, uppskattades ankomster för försenade tåg vara publicerades med en intervall på 2-10 minuter. Detta kan komma av att det inte fanns något nytt underlag för publicering av en ny uppskattningen vid tillfället. Men för resenärer som väntar på ett försenat tåg kan denna intervall vara i längst laget, då varje minut räknas. Vi hade däremot inte möjlighet att testa hur väl uppskattningarna av störningar i tågtrafiken stämde för angivelser av ankomster/avgångar.

När det gäller vägdata har vi fått kännedom om att varningar om väggbyggen och underhåll på vägsträckor vid några tillfällen varit inaktuell eller redan varit åtgärdade. Vi hade dock inte själva möjlighet att bekräfta problemet med inaktuell angivelser för tidsperioder för vägunderhåll.

Svarstider och tillförlitlighet

runer-silhouette-running-fastDe svarstider vi har registrerat under testet har varit korta oberoende av tidpunkt på dagen. Vi delade upp testmomentet i två delar, där vi testade tåg- och vägrelaterad data var för sig. För tåg loggade vi responstider på anrop för ankomster/avgångar från en viss station, samt tidtabellsinformation för tåg som var försenat.

För vägdata gjorde vi en filtrering för vägar inom ett geografiskt område för att hämta trafikhändelser, väglag och väderdata. De anrop som tog längst tid att utföra var vägförhållanden (RoadCondition), som vid några tillfällen tog mer än 500 millisekunder att utföra. Notera att de automatiserade testerna vi genomför utgör en förhållandevis liten belastning.
Trafikinformation (Tåg) - 08:48, 17 jan 2017

Trafikinformation (Tåg) - 08:48, 17 jan 2017
Trafikinformation (väg) - 09:41, 18 jan 2017

Trafikinformation (väg) - 09:41, 18 jan 2017

Användarvänlighet

userPortalen kring API:et är förhållandevis överskådlig att navigera, men visa menyer kunde förtydligas. Förslagsvis borde  fliken ”API” istället kallas ”Dokumentation” och fliken ”Frågan” kunde till exempel betecknas ”Anrop”. Navigering för att skapa autentiseringsnyckel borde vara mer synlig, idag finns denna funktion under menyn Min sida.

Portalens användarsession är giltig över en längre tidsperiod (två dygn) vilket är bra ur ett användarperspektiv. När det gäller API:et finns det inga sessioner har vi fått förklarat vilket gör att felhantering av inaktuella sessioner på klientsidan inte behövs. API-konsolen som finns på portalen är också enkel att använda och erbjuder flera färdiga mallar för att hämta data för olika dataobjekt.

Poängsammanställning

Trafikinformation API - Trafikverket - Google Sheets

Sammanfattning

flag-iconEfter ha utvärderat och provat Trafikverkets API för trafikinformation under en period, upplever vi att både portalen och API:et är överskådliga och fungerar bra för sina ändamål. Den totala poängen är en bit över godkänt (50%) och kan med några förhållandevis enkla förbättringar närma sig väl godkänt (75%).

Ett exempel på enkel åtgärd är att nyttja internationellt gångbar licenser, vilket skulle förtydliga vad som är tillåtet och inte. Svar inom 24 timmar på frågor från användarna skulle också vara önskvärt. Samt inkludera länk till XML och JSON-schema för all publicerad data.

Exempel på åtgärder som är mer tidskrävande men som skulle göra API:et mer användbart på sikt, är att erbjuda mer detaljerad data för samtliga dataobjekt. Idag erbjuder tågdelen av API:et i stort sett bara information om tidtabeller och uppskattning av ankomster/avgångar. Det som saknas är data för att härleda varför ett tåg är försenade, som exempelvis köbildning och begränsad framkomlighet på grund av underhåll eller liknande. För att bredda användningsområdet och möjliggöra andra typer av tjänster för tåg, behövs det exempelvis data om position, hastighet, infrastrukturkapacitet, planerat och pågående underhåll, med mera.

För väg finns det mer detaljerad data som bland annat väderobservationer, aktuellt väglag och underhållsåtgärder som saltning och snöröjning. Data som skulle vara önskvärt för väg är exempelvis tillgång till aktuella snitthastigheter på vägar kring storstäder och viktiga trafikleder. Vi delar gärna med oss av ytterligare förbättringsförslag och kommentarer som vi noterat under testperioden.

Creative Commons-licensTest av Trafikverkets API för trafikinformation skapat av Clear Byte, licensierad under Creative Commons Erkännande-IckeKommersiell-DelaLika 4.0 Internationell licens.

Icon made by Freepik from www.flaticon.com, licensed by CC 3.0 BY

Lämna ett svar