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

Ej standardiserade kolumner i transfers.txt

Hej, varför har ni icke standardiserade kolumner i transfers.txt?
from_trip_id och to_trip_id är inte specificerade i standarden och det gör att filen inte kan importeras av t.ex. Home Assistant då ni också har flera rader där övriga fält är identiska och det tolkas som att filen är korrupt.

Kommentarer

  • Hej Ola,

    Detta är en del av Trip-to-trip transfers, en förlängning av GTFS standarden: https://developers.google.com/transit/gtfs/reference/gtfs-extensions#TripToTripTransfers

    Sen är det så att det är tillåten enligt standarden att ha extra kolumner med data, det är parser:n som ska ignorera dessa kolumner.
    Note that the GTFS readily allows for extensions to the format through the addition of extra columns and files that are ignored by the official parsers & validators
    (Källa: https://gtfs.org/reference/static/changes)

    Säg gärna till om vi kan hjälpa med något mer.

    Hälsningar,
    Bert


    Bert på Trafiklab
  • Ok, det finns alltså en spec för dessa, men det känns som ni inte riktigt förstod problemet. Problemet är ju inte de extra kolumnerna i sig, utan att slutresultatet blir en transfers.txt som innehåller ett antal identiska rader. Det beror ju i sin tur på att parsern mycket riktigt ignorerar de kolumnerna.
    Exempel, alla dessa reader är identiska så när som på from_trip_id,to_trip_id:

    from_stop_id,to_stop_id,transfer_type,min_transfer_time,from_trip_id,to_trip_id
    9022005000194002,9022005000194003,1,,55700000060689168,55700000059886520
    9022005000194002,9022005000194003,1,,55700000060689218,55700000059886557
    9022005000194002,9022005000194003,1,,55700000060689268,55700000059886594
    9022005000194002,9022005000194003,1,,55700000059894663,55700000059886594
    9022005000194002,9022005000194003,1,,55700000059894563,55700000059886520
    9022005000194002,9022005000194003,1,,55700000059894613,55700000059886557

    Så följden blir att det inte är bakåtkompatibelt med parsers som inte kan tolka de kolumnerna.
  • Hej Ola,

    Enligt specen är det fortfarande okej. Det finns ingen krav på att frop_stop_id/to_stop_id kombinationer ska vara unikt, och Googles feedvalidator kommer inte heller klaga på detta. Sen är frågan bara om det finns fall där den skulle kunna "tappa" information om det båda finns en allmänt transfer time och några trip-to-trip transfers. Vilken parser är det som inte klarar detta?

    Hälsningar,
    Bert
    Bert på Trafiklab
  • Det är Home Assistant https://www.home-assistant.io/integrations/gtfs/ och i förlängningen det python lib som används https://github.com/jarondl/pygtfs

  • Hej Ola,

    Vi har nyligen lyckats att få dessa kolumner in i GTFS standarden, så nu borde det inte längre ge problem så länge att biblioteken följer standarden. Vi har skapat en pull request på pygtfs (https://github.com/jarondl/pygtfs/pull/63) vilken som fixar problemet där, fast vi har inte fått en respons på den än. Detta borde iaf ge dig möjligheten att peka ut detta för utvecklaren av HA-integrationen.

    Hälsningar,
    Bert
    Bert på Trafiklab
  • Hej Ola,

    Nu fick pygtfs en ny release som fixar problemet.

    Hälsningar,
    Bert
    Bert på Trafiklab
  • Hej,

    Den där patchen i senaste versionen löser faktiskt absolut ingenting. Problemet är fortfarande inte de extra kolumnerna i sig, utan att det fallerar på att det finns flera rader med identiskt innehåll i transfers.txt.
    När pygtfs försöker översätta GTFS till en SQL-database så har den satt UNIQUE attribute på databas-fälten transfers.feed_id, transfers.from_stop_id, transfers.to_stop_id. Så när det finns flera rader i transfers.txt där dessa fälten är identiska så kan den inte skapa databasen.
    pygtfs måste skrivas om så att den kan tolka dessa fälten för att det ska fungera, det hjälper inte att ignorera dem (vilket gjorts hela tiden, även innan patchen).
  • Hej Ola,

    Det är patchad och testad i PyGTFS sen november, som sakt är dessa extra kolumner del av specen och är det PyGTFS som måste hantera detta.

    Själva PR finns här https://github.com/jarondl/pygtfs/pull/63/files, och den släpptes som PyGtfs 0.1.7. Där kollar PyGTFS på alla 6 kolumner.

    Om jag dock kollar i Home Assistents källkoden så verkar det som att den fortfarande använder PyGTFS 0.1.6:
    https://github.com/home-assistant/core/blob/dev/homeassistant/components/gtfs/manifest.json

    Dessa extra kolumner är del av standarden och alla 6 är definierad som composite primary key. Se https://github.com/google/transit/blob/master/gtfs/spec/en/reference.md#transferstxt för hela standarden.

    Hälsningar,
    Bert
    Bert på Trafiklab
  • Hmm. 0.1.7 är bara taggad i repositoryt, men aldrig releasead på pypi.org
    Så jag trodde 0.1.6 var den senaste.
    Så det får bli en manuell download för att testa då...
  • Det krävs fortfarande ett par små ändringar för att det ska fungera med data från trafiklab. Se PR: https://github.com/jarondl/pygtfs/pull/65

  • Hej,

    Route type 717 var tidigare taxi men stöds inte längre av Google. Vi har uppmärksammat detta tidigare och kommer fixa detta inom kort genom att byta ut 717 med 1501. Utskicket angående det följer senare i veckan.

    Hälsningar,
    Bert
    Bert på Trafiklab
  • Ok, så bra. Då kan jag ändra min PR till att bara lösa det andra problemet.

Kommentera eller skriv ett nytt inlägg

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