Till senaste kommentaren
Detta inlägg är gammalt och kan innehålla inaktuell information.

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.


Kommentarer

  • Ja det är ju inte så lätt nu när Skånetrafiken har kommit på något så korkat som att ha massor av linjer med samma nummer, till och med två helt olika "linje 8" vid Södervärn...

    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.
  • Tillägg: för att komma åt koordinaterna måste man söka på stop_id i stops.txt
  • Ja jag hade också tänkt på möjligheten att skapa en bounding box med Malmö koordinater och kolla om stops.txt koordinaterna ligger i Malmö, men hade hoppats det skulle finnas något mindre omständligt sätt.

    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 blev fel i näst sista stycket i mitt inlägg ovan.
    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 (",").

  • Men (angående mitt exempel på en rad i en föreslagen ny "extra"-fil) om man vill att texfilen mer ska lika en normaliserad relationsdatabastabell kan man förstås lägga in flera områden på separata rader:
    12345,1280
    12345,1231
    12345,1230
  • Normaliserad relationsdatsbas är förstås bäst. Fast det är meningsfullt om Trafiklab satsar på apier som innehåller ytterligare information som inte går att utläsa ur dagens apier.
  • Hej Tomas och Markus,

    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
    Team Trafiklab

Kommentera eller skriv ett nytt inlägg

Ditt namn och inlägg kan ses av alla. Din e-post visas aldrig publikt.