Hur ska man hitta alla GTFS route_id som avser Malmös stadsbussar?
Skånetrafikens agency_id är 276 men jag hittar inget bra sätt att använda GTFS-filerna för att hitta alla route_id för Malmös stadsbussar.
Nedan är ett exempel med tre rader ur GTFS-filen routes.txt :
route_id,agency_id,route_short_name,route_long_name,route_type,route_url
594,276,1,,700,http://www.resrobot.se/
1348,276,1,,700,http://www.resrobot.se/
5534,276,1,,700,http://www.resrobot.se/
Raderna ovan är identiska förutom route_id.
Genom att joina med trips och titta på fältet trip_headsign kan man konstatera att route_id 1348 och 5534 innehåller kommunens namn Lund respektive Helsingborg.
(t.ex. "Lund Flygelvägen" och "Helsingborg Dalhem")
När det gäller stadsbuss med route_id 594 så innehåller INTE (alltid) fältet 'trips.trip_headsign' delsträngen "Malmö".
För den ena ändhållplatsen står det 'Malmö Elinelund' men för den andra ändhållplatsen står det "Kristineberg Syd" d.v.s. därmed går det inte att tillförlitligt hitta Malmös stadsbussar genom att söka efter strängen "Malmö" i fältet trip_headsign.
Nedan är ett exempel med tre rader ur GTFS-filen routes.txt :
route_id,agency_id,route_short_name,route_long_name,route_type,route_url
594,276,1,,700,http://www.resrobot.se/
1348,276,1,,700,http://www.resrobot.se/
5534,276,1,,700,http://www.resrobot.se/
Raderna ovan är identiska förutom route_id.
Genom att joina med trips och titta på fältet trip_headsign kan man konstatera att route_id 1348 och 5534 innehåller kommunens namn Lund respektive Helsingborg.
(t.ex. "Lund Flygelvägen" och "Helsingborg Dalhem")
När det gäller stadsbuss med route_id 594 så innehåller INTE (alltid) fältet 'trips.trip_headsign' delsträngen "Malmö".
För den ena ändhållplatsen står det 'Malmö Elinelund' men för den andra ändhållplatsen står det "Kristineberg Syd" d.v.s. därmed går det inte att tillförlitligt hitta Malmös stadsbussar genom att söka efter strängen "Malmö" i fältet trip_headsign.
Följ inlägget
0
följare
Du får helt enkelt söka på koordinater i stop_times. Stadsbussar i Malmö bör ha samtliga koordinater mellan 55.5 och 55.65 och mellan 12.85 och 13.15. Om bara vissa av koordinaterna för en viss trip_id är inom området är det en regionbuss.
Som så mycket annat var det enklare med det gamla GTFS-systemet. Där var Malmös stadsbussar de linjer som hade route_id på formen 276_?_?LT eller 276_??_?LT, medan 276_???_?LT var övriga bussar.
Men eftersom ingen från Trafiklab ännu har svarat på min fråga får jag väl anta att det i dagsläget inte finns något bättre sätt.
Det är dock inte önskvärt att många ska behöva implementera en egen sådan lösning för att mappa busslinjer med hjälp av koordinater.
Det vore bättre om Trafiklab gör det och sedan tillhandahåller resultaten.
Om det inte går att lösa på ett bra sätt inom befintliga GTFS-strukturer så skulle Trafiklab kunna skapa en "extra"-fil med mappningar mellan route_id och geografiska områden.
Angående "extra"-fil syftar jag på att det redan idag finns filer som inte ingår i GTFS t.ex. "extra/trafikverket_stops.txt" och "extra/agency_stops.txt" enligt dokumentation på sidan om "GTFS Sverige 2"
https://www.trafiklab.se/node/14435/documentation
En ny "extra"-fil skulle kunna innehålla mappningar mellan route_id och de geografiska områden som trafikeras av en linje/route.
Det skulle då kanske vara lämpligt att återanvända SCB's länskoder och kommunkoder, t.ex. "12" för Skåne län och "1280" för Malmö.
https://www.scb.se/sv_/Hitta-statistik/Regional-statistik-och-kartor/Regionala-indelningar/Lan-och-kommuner/Lan-och-kommuner-i-kodnummerordning/#01
Om en route_id trafikerar mer än en kommun eller mer än en kommun skulle man kunna tänka sig att flera områden anges med ett annat separator-tecken (t.ex. ";") istället för den vanliga separatorn (",").
Exempel: Om en busslinje med route_id 12345 (påhittat id) skulle trafikera både kommunerna Malmö (1280) , Burlöv (1231) och Staffanstorp (1230) skulle en rad i en sådan "extra"-fil kunna se ut på följande sätt:
12345,1280;1231;1230
Det borde ha stått så här:
Om en route_id trafikerar mer än en kommun ELLER MER ÄN ETT LÄN skulle man kunna tänka sig att flera områden anges med ett annat separator-tecken (t.ex. ";") istället för den vanliga separatorn (",").
12345,1280
12345,1231
12345,1230
Vi har funderat igenom detta och kommit fram till samma sak som ni, dvs att man måste se att en bussturs samtliga hållplatser har koordinater i Malmö för att avgöra att det är en Stadstrafik-tur. Linjer med linjenummer på tre siffror kan man bortse ifrån eftersom de är regionsbussar.
Tobias