2015-08-18 5 views
0

Я пытаюсь получить часть пути транзитной службы из набора файлов GTFS. Файл trips.txt на самом деле представляет пути, умноженные для расписаний, так что многие строки для каждого пути описаны в GTFS documentation. Как я могу получить уникальные поездки по пути и особенно уникальные ссылки на остановки?Использование Google GTFS для получения уникальных маршрутов

ответ

1

От «path» Я предполагаю, что вы имеете в виду, что в языке GTFS есть форма : Физический путь, за которым следует транзитный автомобиль в реальном мире.

Для списка уникальных поездок формы (если у вас есть данные GTFS загружены в реляционной базе данных), требуется только запрос, как это:

SELECT * FROM trips WHERE shape_id = <shape_id>; 

Примечание Вы можете дополнительно фильтровать service_id для составления списка только поездок в будние дни, например.

Создание списка остановок для фигуры сложнее, так как нет прямой связи между формой и остановкой в ​​GTFS. Скорее, остановки связаны с отдельными поездками, а таблица stop_times обеспечивает ассоциацию (см. my answer to "How can I list all the stops associated with a route using 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.

Для того, чтобы делать то, что я считаю, что вы хотите сделать, вы должны

  • Fetch список поездок по выбранному маршруту (от trips.txt).

  • Из этого списка, применять эвристические методы для определения , которые поездки эквивалентны в транзитной пользователя ума — поездках, которые следуют один и тому же «пути» (форма), путешествие в том же направлении, посетить те же или аналогичный набор остановок в том же порядке и работать в те же дни (от calendar.txt), например — и групповые эквивалентные поездки вместе в ковши.

  • Для каждого ведра эквивалентных поездок создайте список остановок вместе с картами, расписаниями или описаниями по желанию.

Обратите внимание, что вообще вы можете использовать headsign в поездке, чтобы определить, какая ветвь маршрута следует и, следовательно, какой путь он будет принимать и остановки он будет посещать. Я бы не предполагал, что это абсолютно надёжно; вам нужно будет проверить свои данные, чтобы увидеть, можете ли вы надежно объединить поездки вместе таким образом.

+0

Спасибо, но, во-первых, к сожалению, хранилище Trafiklab для Скандинавии, над которым я работаю, даже не имеет форм, как вы можете видеть на https://www.trafiklab.se/api. На самом деле у меня было чувство, что это могло бы помочь. Я также думал о headigns, но это также объединяло бы линии с одним и тем же пунктом назначения, но с другим началом и/или контуром. На самом деле, меня не интересует, какой автобус проходит в день подачи, поскольку я беру эту информацию из компонента реального времени. Однако это бьет меня, как стандарт не охватывал такую ​​простую информацию. –

+0

Также я не уверен в том, что стандарт говорит о информации в реальном времени, учитывая, что я сосредоточен на загрузке информации и на какую информацию они связаны. В случае, если они связаны с полномасштабными поездками, если я обтекаю его, я бы нашел шины реального времени без линии для подключения. –

+0

Итак, каков конечный результат, который вы пытаетесь создать? –

0

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