Использование 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 обеспечивает ассоциацию (см. -with-a-route-using-gtfs/13651120#13651120">мой ответ на вопрос "Как я могу перечислить все остановки, связанные с маршрутом, использующим 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
Поддержка приложения Arrivo HD для Швеции. В этом приложении, уже доступном в Риме и Лондоне, я рисую на карте остановки, одетые в проходящие мимо них линии, при нажатии на которые пользователь может увидеть прибывающие автобусы. Когда пользователь нажимает на линию, отображаются остановки линий с их местоположением, а также путь автобуса в метро. Более того, автобусы движутся по карте, имитируя реальную ситуацию. Вы можете увидеть лучше на снимках экрана в iTunes Store. - person Fabrizio Bartolomucci; 18.08.2015

Учитывая отсутствие фигур, я сгруппировал поездки на автобусе и в пункт назначения, удалив все вторые поездки с тем же автобусом и пунктом назначения. Когда я загружаю stop_times, я проверяю, существует ли строка, прежде чем вставлять ее. И я надеюсь, что что-то останется в сети...

person Fabrizio Bartolomucci    schedule 20.08.2015