Till senaste kommentaren

Frågor om problem med SL GTFS Realtime-feed i kartprojekt

Hej Trafiklab Support,

Jag hjälper min 13-årige son att utveckla en Leaflet-baserad karta för att visa SL-bussar i realtid i Stockholm, som ett privat projekt för lärande och nöje. Vi använder GTFS Realtime-feeden (`https://opendata.samtrafiken.se/gtfs-rt/sl/VehiclePositions.pb`) och det statiska GTFS-datasettet (`sl.zip`, extraherat till `sl_gtfs`) för att mappa `tripId` till linjenummer (`tripMapping.json`, 65239 mappingar). Vi använder också `sl_extra/trips_dated_vehicle_journey.txt` för att validera `tripId`-värden. Vi har tagit hjälp av AI för att bygga och felsöka, men trots flera försök har vi inte lyckats lösa alla problem. Vi skulle uppskatta er expertis för att förstå följande frågor.

**Problembeskrivning**:

1. **Misstänkta GPS-positioner (bussar i vatten)**:
- 60 bussar rapporteras på positioner i vatten, t.ex.:
- Fordon: `ID=9031001002500147`, `TripID=14010000691795265`, `LineNumber=19`, `Lat=59.3146858215332`, `Lon=18.073415756225586` (Skeppsholmen).
- Fordon: `ID=9031001001007216`, `TripID=14010000686200791`, `LineNumber=3`, `Lat=59.307647705078125`, `Lon=18.075700759887695` (Skeppsholmen).
- Dessa `tripId`-värden är giltiga i `sl_extra/trips_dated_vehicle_journey.txt` (t.ex. `14010000691795265` mappar till `Noptis ID=9015001038400068`, `14010000686200791` till `Noptis ID=9015001000301049` för 2025-06-27). Detta tyder på GPS-fel i `VehiclePositions.pb`. Är detta ett känt problem, och finns det några rekommendationer för att hantera det?

2. **Lågt antal bussar i tjänst**:
- Endast 544 bussar rapporteras som i tjänst (av totalt 1021 fordon) den 27 juni 2025 kl. 10:44 CEST, vilket verkar lågt jämfört med SL:s flotta på cirka 2 000 bussar. Är detta förväntat (t.ex. på grund av tid på dygnet) eller indikerar det en ofullständig feed?

3. **Fordon utanför Stockholms gränser**:
- 430 fordon är utanför de definierade gränserna (`lat: 59.2–59.5`, `lon: 17.9–18.2`), t.ex.:
- Fordon: `ID=9031001003007210`, `TripID=14010000689029797`, `Lat=59.20056915283203`, `Lon=17.62034797668457`.
- Fordon: `ID=9031001003007223`, `TripID=14010000670243700`, `Lat=59.188201904296875`, `Lon=17.577163696289062`.
- Dessa `tripId`-värden är giltiga i `sl_extra` (t.ex. `14010000689029797` mappar till `Noptis ID=9015001000100044`). Är vissa av dessa fordon på legitima förorts- eller regionlinjer (t.ex. till Märsta eller Nynäshamn), eller är detta också GPS-fel?

4. **Saknade `AgencyID`-värden**:
- Alla fordon i feeden har `AgencyID=N/A`, trots att `sl`-feeden är specifik för SL. Är detta förväntat, eller bör `vehicle.vehicle.agencyId` vara ifyllt i `VehiclePositions.pb`?

5. **Saknade `RouteID` och `ScheduleRelationship`**:
- Många fordon, särskilt de utanför gränserna, har `RouteID=N/A` och `ScheduleRelationship=N/A` (t.ex. `ID=9031001003007210`). Är detta förväntat för vissa turer, eller indikerar det ofullständig data?

6. **Täckning av `sl_extra`**:
- Filen `sl_extra/trips_dated_vehicle_journey.txt` innehåller mappingar för `tripId` till `Noptis ID` (t.ex. `14010000690108121` till `9015001063911757`, `LineNumber=639`). Täcker denna fil alla SL-relaterade `tripId`-värden, eller kan vissa turer (t.ex. oschemalagda, `ScheduleRelationship: ADDED`) saknas?

**Bifogade data**:
- **Konsolloggar** (27 juni 2025, 10:44 CEST):
```
Total vehicles: 1021, Displayed: 583, In-Service: 544, Out-of-Service: 39, Skipped (missing position): 0, Skipped (out of bounds): 430, Skipped (extremely out): 8, Suspicious positions: 60, Invalid RouteIDs: 0, Invalid TripIDs: 0
Suspicious position (Skeppsholmen): ID=9031001002500147, TripID=14010000691795265, ScheduleRelationship=N/A, AgencyID=N/A, Lat=59.3146858215332, Lon=18.073415756225586
Vehicle out of Stockholm bounds: ID=9031001003007210, TripID=14010000689029797, RouteID=N/A, ScheduleRelationship=N/A, AgencyID=N/A, Lat=59.20056915283203, Lon=17.62034797668457
Displaying vehicle: ID=9031001003005319, LineNumber=471, InService=true, OutOfBounds=false, Suspicious=false, AgencyID=N/A
```
- **Exempel på urklippsdata** (från tre bussar):
- **Misstänkt position**:
```
Status: In Service (Suspicious: Skeppsholmen)
Line Number: 19
Trip ID: 14010000691795265
Route ID: N/A
Vehicle ID: 9031001002500147
Vehicle Label: N/A
Agency ID: N/A
Bearing: N/A
Latitude: 59.3146858215332
Longitude: 18.073415756225586
Schedule Relationship: N/A
Noptis ID: 9015001038400068
```
- **Ur tjänst**
```
Status: Out of Service
Line Number: 9031001003003126
Trip ID: N/A
Route ID: N/A
Vehicle ID: 9031001003003126
Vehicle Label: N/A
Agency ID: N/A
Bearing: N/A
Latitude: N/A
Longitude: N/A
Schedule Relationship: N/A
Noptis ID: N/A
```
- **Utanför gränser**
```
Status: In Service (Out of Bounds)
Line Number: Unknown
Trip ID: 14010000689029797
Route ID: N/A
Vehicle ID: 9031001003007210
Vehicle Label: N/A
Agency ID: N/A
Bearing: N/A
Latitude: 59.20056915283203
Longitude: 17.62034797668457
Schedule Relationship: N/A
Noptis ID: 9015001000100044
```
- **Utdrag från `sl_extra/trips_dated_vehicle_journey.txt`**:
```
14010000686200791,20250627,9015001000301049,1049
14010000690108121,20250627,9015001063911757,11757
14010000693442487,20250627,9015001078700044,44
14010000689029797,20250627,9015001000100044,44
```

Vi skulle uppskatta er hjälp med att förstå dessa problem och förslag på hur vi kan förbättra kartan. Finns det alternativa API:er (t.ex. SL Transport API) som kan ge mer tillförlitliga positioner eller linjenummer? Tack för ert stöd i detta lärandeprojekt för min son!

Vänliga hälsningar,
Daniel, förälder till 13-åring
Daniel

Kommentarer

  • Gällande punkt 3 så är boundsen för Stockholm troligen för restriktiva I förhållande till SLs trafikområde som sträcker sig hela vägen till Öregrund på somrarna.

    (Röda cirklar är båtar ur trafik med ogiltigt noptis vehicle journey gid)

    Sigurd Stenberg
  • Hej Daniel,
    Var roligt att ni kör ett projekt tillsammans, jag ska försöka svara så gott jag kan.

    Fråga 1:
    Den första turen är en tunnelbana påväg till Hagsätra, när jag googlar koordinaterna som du skickade så hamnar jag på Medborgarplatsen på söder vilket verkar stämma bra med linjen. Den andra turen är en buss till KS och koordinaterna visar Ringvägen vid Skanstull vilket också stämmer bra med turens rutt. Kan du dubbelkolla att eran karta visar rätt position för koordinaterna ni matar den med?

    Fråga 2:
    Här skulle jag behöva lite mer info, hur får du fram att en tur inte skulle vara i tjänst? Vilken fil handlar det om? Eller fick ni bara fram 544 positioner totalt?

    Fråga 3:
    Som Sigurd skriver så är boundsen ni använder alldeles för restriktiva. Den inkuderar till exempel varken Upplands Väsby, Rosersberg eller Märsta om man tittar norrut. Stockholms region inkluderar även Södertälje (dit båda dina exempel på bussar är på väg), Nynäshamn och Norrtälje. Sen finns det ju även linjer som sträcker sig utanför gränsen t ex igen som Sigurd skriver buss till Öregrund och det finns ju även pendeltågen som kör hela vägen till Uppsala.

    Fråga 4:
    Vad jag ser så finns agency på alla linjer (routes) och jag gjorde några spot-checkar där det definitivt finns agencies kopplade till fordonspositioner, kan ni se över eran koppling mellan fordonspositioner och det statiska datat?

    Fråga 5:
    Route id används för det mesta endast när turen inte finns med i tidtabellsdatat, t ex när det är en "added" tur (extrainsatt tur). Men du kan ju alltid hitta route_id via det statiska datat (tidtabellsdatat). Att hela turen saknas (och därmed schedule_relationship) vet jag inte riktigt vad det beror på, de kommer från SLs system men dessa kan du bortse från då de inte går att koppla ihop med tidtabellsdatat.

    Fråga 6:
    `sl_extra/trips_dated_vehicle_journey.txt` innehåller bara trip-id för schemalagda turer.

    Hopps det hjälper er lite på vägen.

    Mvh
    Sofie
    Sofie på Trafiklab

Kommentera eller skriv ett nytt inlägg

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