• No results found

Kapitel 6 – Slutsats

5.2 Problem

Detta projekt har haft flera problem som under hösten har fördröjt utvecklingen med flera veckor. I detta delkapitel ges en mer detaljerad förklaring av de problem och motgångar som stöttes på under projektets gång, och vilka konsekvenser dessa har haft på projektet.

GDPR-skyddade data och tillgång till API:er

Ett problem som stöttes på från SJ var inhämtningen av data över tågens positioner mm. Tanken från början var att använda SJ:s data över de tåg som idag på något sätt samlade in GPS-information. Dessvärre blev väntan på att få tillgång till API:erna lång (enda fram till december) och under tiden hade ett byte skett till att hämta data från andra källor (Tidigare omnämnda Oxyfi). Det som försvårade mycket var att data som hämtades in kunde innehålla information om personal och detta minskade möjligheterna att få tillgång till den då den var GDPR-skyddad.

Annat som försvårade tillgång till datan var att vi ständigt skickades runt till flertalet olika personer. När frågan om tillgång till API:erna ställdes så skickades frågan vidare till näste person i ledet. Inom kort så hade det blivit till en ond cirkel med många samtal och mail fram

45

och tillbaka mellan oss och trafikledningen, där resultatet var många veckors väntan och till slut ingen tillgång till någon data alls.

API:er som inte ville fungera

Redan de första veckorna i september hittades ett till synes väl fungerande API för ett webbgränssnitt som kunde rita ut punkter på en karta. Detta API tillhandahölls av MapBox, och kartan som användes hämtade MapBox från Open Street Map. Efter att ha först läst på om API:ets funktionalitet under en vecka påbörjades testning av API:et för att se huruvida det fungerade som det skulle. Under några veckor experimenterades det med realtidsuppdaterande exempeldata som MapBox refererade till i sina manualer. Först så testades själva kartan i sig, för att se om den överhuvudtaget gick att rendera i webbläsaren. Detta verkade fungera mycket bra, så testningarna fortsatte med att försöka få en punkt att röra sig på kartan. Detta fungerade även det, så tester med den existerande exempeldata som tillhandahölls började genomföras.

Samtidigt som dessa tester gjordes börjades det även experimenteras med olika kartdesigner för att kunna ta bort så mycket onödig information som möjligt för att kunna få ett enkelt och prestandavänligt gränssnitt som användaren sedan kan jobba med. Prestandan är i det här fallet mycket viktig då flera animerade punkter kan komma att göra programmet långsamt och till synes oresponsivt. MapBox erbjuder sina användare att kunna redigera de färger som kartobjekten har, samt att till och med ta bort objekt från kartan helt och hållet. Detta var något som önskades att användas till åtminstone en av de flera vyer som var planerade att implementeras, där prioriteringen enbart skulle ligga på att visa räls, tåg, trafikplatser, samt att kunna urskilja mellan land och vatten.

Med hjälp av tilesets och datasets kan punkter i GeoJSON-format på förhand ritas ut på kartan och därmed öka prestandan på kartan och på så sätt kunna rita ut så många trafikplatser som möjligt utan att prestandan tar för mycket stryk. Ett godtyckligt antal punkter fick därför ritas ut först för att testa funktionaliteten och prestandan av kartan. Detta gjordes innan inhämtningen av alla trafikplatsers koordinater, namn och annan information från trafikverkets sida och deras API:er.

När såväl detta sedan testades i samband med testningen av realtidsdatan och de manuellt angivna trafikplatserna verkade inga konkreta problem uppstå. Däremot gick allt snett när testningen av egen realtidsdata började. Denna så kallade realtidsdata var i själva verket en

46

GeoJSON-sträng, kopierad från den exempeldata som redan använts vid tidigare tester, inlagd i en GeoJSON-fil som låg i en lokal mapp på datorn. När bytet skedde till den lokala filen istället för exempeldatan ville punkten inte längre ritas ut. Flertaliga försök med olika filtyper så som JSON och HTML testades med till ingen nytta. Filerna testades även att läggas upp på en webbserver som vi hade temporär tillgång till men inte heller det verkade fungera. Länge undersöktes det om det möjligtvis kan ha varit en websocket av något slag som pushade upp datan, men exempeldatan visade sig ligga på ett HTTPS-server vilket gjorde att vi fick börja leta efter andra lösningar på problemet.

Vid det här laget hade redan halva oktober passerat och fram till början på november försökte en lösning hittas på detta problem men förgäves hittades inga lösningar vare sig på MapBox egna webbsida, dokumentation eller tutorials. Inte heller fanns det någon lösning på flertalet programmeringsinriktade webbforum. Vid det här laget hade implementationen av inhämtning av data från trafikverket påbörjats. Dessutom hittades ett API för inhämtning av tågpositioner på www.trafiklab.se genom Oxyfi och deras verktyg (som nämndes i förra delkapitlet) så att kunna hämta hem faktiska data gavs en högre fokus än innan. Sökandet efter lösningar till MapBox-problemet fortsatte bredvid.

Så sent som i början på december hittades till sist PubNub, ett API specialiserat på att kunna rita ut flertalet olika punkter på en karta från realtidsdata. PubNub skulle fungera på både MapBox och Google Maps. Med tanke på de kartfunktionaliteter som MapBox hade valdes det att försöka få det att fungera med MapBox. Problem uppstod dock ganska fort då det uppdagades att PubNub var gjord för en äldre, numera otillgänglig, version av MapBox. Det resulterade i att kartan fick till slut istället göras i Google Maps. Kort därefter fanns till slut en fungerande karta med statiska tåg- och stationsmarkörer. Koden för realtidsuppdateraren hade inte skrivits ännu.

Så till sist i mitten på december lyckades tågen till slut att röra på sig på kartan. Ett annat problem uppstod istället då det upptäcktes att tågens koordinater på kartan inte stämde överens med vad de egentligen borde ha. Efter en lång dag med att samla in koordinater från olika tåg landet över, genom att hämta deras koordinater när de stannat vid stationer och sedan jämfört dessa koordinater mot varandra så insågs ganska fort att problemet låg i att Google Maps koordinater och Oxyfi:s koordinater var på olika format. Google Maps använde sig av grader

47

och decimaler, medan Oxyfi använde sig av grader, minuter och decimaler. Efter att Oxyfi:s koordinater konverterats om i tåglokaliseraren lyckades kartan till sist att fungera som den skulle.

48

6 Slutsats

Här summeras projektet genom att presentera en helhetsbild av hur det har gått och även förslag på hur systemet kan vidareutvecklas.

Related documents