3. Agenda
1.Intro omTrafiklab och saker på G, Elias
2.Nyheter i GTFS Sverige 2,Tobias
3.Trainhack, Max
4.Bodius, Magnus Eldén
5.Nya datamängder från SL, Andreas
6.Demo av nya datamängder,Tobias
7.Vad är GTFS? Johan
8.Ny typ av API påTrafiklab, Björn ochVladde
9.Teaser…
10. 2018-06-13
10
Dataset (ber.klar hos ST) 2018 2019 2020 2021
Hållplatser & Stationer x x
Rutter och Linjer x x
Information om biljetter
x
Realtidsdata om p. trafik x x
Realtidsdata om störningar x x
Nyttjandegrad
x
Grafiska element
Reseplaneringstjänster
x
Försäljning av biljetter
?
Pendelparkeringar
x
18. Ny struktur för route_id
“Maintain persistent ids for stop_id, route_id, and agency_id across data iterations whenever possible”
Idag På måndag 18/6
1310 (löpnummer) 1252014100001
Pos 1-1 (1) = Alltid 1 för route_id
Pos 2-4 (252) = Länstrafiken Sörmland
Pos 5-8 (0141) = Tekniskt linjenummer
Pos 9-13 (00001) = Löpnummer eftersom en verklig linje kan delas upp på fler routes med
olika route short name, route long name och transportmedel.
19. Ny struktur för trip_id
Idag På måndag 18/6
109622 (löpnummer) 22750000002233
Pos 1-1 (2) = Alltid 2 för route_id.
Pos 2-4 (275) = SL
Pos 5-8 (0000) = Tåg har inget linjenummer
Pos 9-14 (002233) = Tekniskt turnummer eller löpnummer då samma verkliga tur delas i flera
trips pga olika perioder.
22. Ska du till
Almedalen?
Dag: Söndag 1 juli
Tid: 15:30
Plats: Ryska gränd 9, Visby
Trafiklab och Samtrafiken bjuder in till
dialogmöte i samverkan med
regeringskansliet.
Dialogmötet är en del av Sveriges
regerings bidrag till Open Government
Partnership, ett internationellt program
som lanserades av bland annat USA
under president Barack Obama.
31. VAD ÄR BODIUS?
• En webbtjänst för att sammanlänka tidsstyrda kartområden (isokroner) med annan plottbar
kartdata. Pendlingstyper är kollektivtrafik, gång, cykel eller bil
• Nuvarande version visar pendling 10 – 60 min från samtliga adresser i Sverige, via närmaste
kollektivhållplats, och med boenden från booli.se som resultat
• Det finns möjlighet att samköra upp till fyra startadresser för att t.ex. visa sitt arbete, sin partners
arbete och barnens förskola. Alla med separat möjlighet till max pendlings-tid/-typ. Resultat blir
alltid den totala nåbara ytan från sökt(a) punkt(er).
32. VARFÖR?
• Vi sökte bostad att köpa, min fru hittar inte bra i Göteborg. Sökte liknande tjänst utan resultat
• Jag arbetar som Produktägare och ville utmana mig själv att bygga något på fritiden – lära mig att
programmera
33. HUR GÅR DET TILL?
• Jag har laddat in hela GTFS-zipfilen i min databas
• Vid sökning letar jag upp den närmaste hållplatsen från sökt position, och börjar därifrån söka
• Med sökt maxtid som bas ”åker” jag sedan på alla tänkbara linjer från respektive hållplats, till det
tar slut på tid. Detta upprepar jag tills inga fler vägar finns från starthållplatsen
• Vid varje given hållplats jag besökt finns det en viss tid kvar av totala söktiden. Denna tid använder
jag för att skapa en cirkel runt hållplatsen, som indikerar att ju mer tid det är kvar, desto längre
från hållplatsen kan man ta sig till fots (det är också för att få en sökbar yta och inte bara en massa
prickar)
• Slutligen slår jag ihop alla dessa olika stora prickar till ett område
och presenterar på kartan
34. FRAMTIDEN
• Förbättra service för kollektivresenärer
• Inkludera bytestider för större noggrannhet
• Inkludera olika delar av resdygnet istället för en jämkning
• Färdigställa den autouppdatering av GTFS zip-api jag nu jobbar på eftersom mycket handpåläggning krävs vid
tabellskiften idag
• Expandera till andra länder
• Expandera med andra resultatlager
• AMS.se (för jobbsök)
• Lantmäteriet (för grönområden inom pendling)
• Etc.
• Plus mycket annat skoj såklart!
39. 10 min
20 min
30 min
40 min
50 min
60 min
Stockholm
10 min
20 min
30 min
40 min
50 min
60
min
Göteborg
10 min
20 min
30 min
40 min
50 min
60 min
Malmö
Procentuell fördelning av pendlingstid för kollektivtrafikresenärer i tre största städerna (inkl. kranskommuner)
40. TEKNIK FÖR DEN INTRESSERADE
• Mestadels C# och ASP.NET som kodspråk.
• SQL databas och Redis cache för lagring och snabb kollektivtrafikssökning
• Ett flertal samkörda api’er i applikationen
• Allt ligger i Microsoft Azure, kostnad ca 250kr/mån
48. K1
ÖPPEN DATA
• TF ska tillgängliggöra ett antal utpekade dataset och
tjänster …
• enligt utpekade standarder…
• samt vara kvalitetsgranskade
• Dataseten ska vara beskrivna enligt standard….
• och ha tillämplig licens
• Det ska också vara tydligt angivet vad man får göra och inte
göra med dataseten
• Det ska finnas SLA:er så att det blir tydligt för
tredjepartsaktörer vad som gäller
88. SAVEA Biljett-API
● Skaffa nyckel på Trafiklab kör
○ Inget specialavtal behövs!
● Sök och sälj hela SAVEA utbudet kostnadsfritt
● Tjäna pengar på “kickback”
● Sälj direkt i din tjänst / app / etc
Historiskt data sedan augusti 2012.
Tekniskt linjenummer – välja ut t.ex. Malmös stadstrafik.
Tekniskt turnummer – tågnummer då det fungerar som tekniskt turnummer och inte ska visas för resenären.
Möjligt att välja ut bara Strängnäs stadtrafik baserat på ett antal tekniska linjenummer.
I Stockholm skiljer sig annonserat och tekniskt linjenummer:
Ersättningsbussar, t.ex. för Roslagsbanan 27 blir det tekniskt linjenummer 927.
I Skåne:
- Buss 1 i Malmö (1), Kristianstad (401), Helsingborg (601), Eslöv (701) och 6 till.
För producenter som levererar tekniska turnummer på sin trafik kan de vara av intresse, t.ex. för att se att flera trips med samma tekniska turnummer egentligen är en och samma verkliga tur som är uppdelad på olika perioder.
SL levererar inte tekniskt turnummer för busstrafik utan Samtrafiken genererar löpnummer som tekniska turnummer.
Läs om detaljer på blogg.trafiklab.se.
http://gtfs.org/best-practices/
Längre nummer än tidigare. Kolla din implementation. T.ex. Javas datatyper String och long fungerar, short och int räcker inte längre till.
Vi rekommenderar starkt att inte försöka extrahera data ur de olika delarna, t.ex. tekniskt turnummer från pos 9-14 i trip_id. Se dem som slumpmässiga nummer i din impementation.
Jag har alla hållplatsers position i databas.
Sökning på bodius ger en lat/lng till arbetsplats, som jag markerar på kartan (x)
Med Redis-cache geospatiala metoder kan jag mycket snabbt hitta den närmaste hållplatsen från min position (fågelvägen så inte exakt på metern)
Från min starthållplats söker jag mig sedan utåt, eftersom jag även har alla hållplatsers interaktioner (möjliga grannar) med genomsnittlig restid baserat på samtliga tidtabellsdata där tiden inte är 0.
Jag räknar av tiden i sekunder som återstår. Om tiden är 0 eller mindre (egentligen mindre än 30 sekunder) stoppar jag uträkningen längs den aktuella vägen.
Uträkningen sker parallellt med flera trådar samtidigt för att snabba på förloppet. Beroende på hur många besökare jag har (Bodius är ju ett hobbyprojekt så har inte så mycket resurser) kan jag parallellisera upp till åtta samtidiga trådar.
Slutligen tar jag alla punkter med sin respektive tid kvar, samkör dem till en stor polygon och publicerar för användaren.