Използване на Google GTFS за получаване на уникални маршрути

Опитвам се да получа пътеките част от транзитна услуга от набор от GTFS файлове. Файлът trips.txt всъщност представя маршрутите, умножени за разписанията, така че много редове за всеки път, както е документирано в GTFS документация. Как мога да получа уникални пътувания за маршрут и особено уникални връзки към спирки?


person Fabrizio Bartolomucci    schedule 18.08.2015    source източник


Отговори (2)


Под „път“ предполагам, че имате предвид това, което на езика на GTFS е форма: физическият път, следван от транзитно превозно средство в реалния свят.

За списък с уникални пътувания за форма (ако приемем, че вашите GTFS данни са заредени в релационна база данни), имате нужда само от заявка като тази:

SELECT * FROM trips WHERE shape_id = <shape_id>;

Имайте предвид, че може да искате да филтрирате допълнително по service_id, за да създадете списък само с пътувания през делничните дни, например.

Генерирането на списък от спирки за форма е по-трудно, тъй като няма пряка връзка между фигура и спирка в GTFS. По-скоро спирките са свързани с отделни пътувания, като таблицата stop_times предоставя асоциацията (вижте моят отговор на "Как мога да изброя всички спирки, свързани с маршрут, използващ GTFS?"). След като изберете пътуване, което ви интересува, можете да получите списък на спирките, които посещава, по ред, със заявка като тази:

SELECT DISTINCT stop_id, code, name
    FROM stop_times
    INNER JOIN stops ON stops.id = stop_times.stop_id
    WHERE trip_id = <trip_id>
    ORDER BY stop_sequence;

Но подозирам, че нищо от това не е това, което искате. Подозирам, че си мислите (въз основа на опита си като транспортен пътник), че трябва да има само няколко различни „пътеки“, които следва всеки транзитен маршрут, и трябва да можете да стигнете до този малък брой пътеки и, да речем, автоматично генерира карта за всеки един с ясно посочени спирки. За съжаление това не съвпада добре нито с начина, по който транзитните системи работят на практика, нито с начина, по който са моделирани от GTFS.

За да направите това, което вярвам, че искате да направите, ще трябва

  • Изтеглете списък с пътувания за въпросния маршрут (от trips.txt).

  • От този списък приложете евристика, за да определите кои пътувания са еквивалентни в съзнанието на транзитния потребителпътувания, които следват същия „път“ (форма), пътуват в същата посока, посещават същия или подобен набор от спира в същия ред и работи в едни и същи дни (от calendar.txt), например и групира еквивалентни пътувания заедно в кофи.

  • За всяка група еквивалентни пътувания генерирайте списък със спирки заедно с карти, разписания или описания по желание.

Имайте предвид, че като цяло можете да използвате главния знак на пътуването, за да определите кое разклонение от маршрут следва и следователно кой път ще поеме и спирките, които ще посети. Не бих предположил обаче, че това е напълно надеждно; ще трябва да проверите данните си, за да видите дали можете надеждно да групирате пътуванията заедно по този начин.

person Community    schedule 18.08.2015
comment
Благодаря, но първо, за съжаление хранилището на Trafiklab за Скандинавия, върху което работя, дори няма форми, както може да видите на trafiklab.se/api. Всъщност имах чувството, че това може да е от полза. Мислех също за надписи, но това също ще групира заедно линии с една и съща дестинация, но различно начало и/или път. В интерес на истината не се интересувам толкова кой автобус минава през даден ден, тъй като вземам тази информация от компонента в реално време. Чудно ми е обаче как стандартът не покрива толкова проста информация. - person Fabrizio Bartolomucci; 18.08.2015
comment
Също така не съм сигурен какво казва стандартът за информацията в реално време, като досега се фокусирам върху зареждането на информацията и към коя информация са свързани. В случай, че са свързани с пълните пътувания, ако го рационализирам, ще намеря автобуси в реално време без линия за връзка. - person Fabrizio Bartolomucci; 18.08.2015
comment
И така, какъв е крайният резултат, който се опитвате да постигнете? - person ; 18.08.2015
comment
Поддръжката на приложението in Arrivo HD за Швеция. В това приложение, което вече е налично в Рим и Лондон, рисувам спирки на картата, облечени с линиите, минаващи покрай тях, при щракване върху които потребителят може да види пристигащите автобуси. Когато потребител щракне върху линия, спирките на линиите се показват с тяхното местоположение, както и пътя на автобуса в метрото. Освен това автобусите се движат по картата, симулирайки реалната ситуация. Може да видите по-добре от екранните снимки в iTunes Store. - person Fabrizio Bartolomucci; 18.08.2015

Като се има предвид липсата на форми, в крайна сметка групирах пътуванията с автобуса и дестинацията, като премахнах всяко второ пътуване със същия автобус и дестинация. Когато зареждам stop_times, проверявам дали редът съществува, преди да го вмъкна. И дано остане нещо в нета...

person Fabrizio Bartolomucci    schedule 20.08.2015