Как извлечь небольшую область из большого потока GTFS?

11

Есть ли инструмент, который поддерживает извлечение небольшого региона из большего потока GTFS? Насколько я вижу, в библиотеке Transitfeed от Google есть инструмент Merge, но нет инструмента Extract / Clip. Другие библиотеки, которые я нашел, могут только читать и отображать данные, но не поддерживают манипуляции.

Справочная информация: Transitfeed Feedvalidator показывает много ошибок для моего файла GTFS. Я хочу извлечь свой регион интереса, чтобы оценить местное качество.


Рекомендации в Твиттере указали мне на FME, у которого есть и читатель GTFS, и писатель. Мой простой рабочий процесс состоит из считывателя GTFS (внизу слева), считывателя Shapefile (вверху слева, для многоугольника области интереса), ограничителя и записывающего средства GTFS для вывода (пока только пишу файлы остановок и фигур, но в итоге я захочу все файлы)

введите описание изображения здесь

Пока проблема заключается в том, что содержимое выходных фигур (оранжевые точки) не содержит все входные точки (зеленые), которые находятся в желтой области интереса:

введите описание изображения здесь

(Источник данных: https://transitfeeds.com/p/helsinki-regional-transport/735/latest/download )


Используя «Создать агрегаты» = «Нет», обрезанные фигуры кажутся завершенными

введите описание изображения здесь

но остановки определенно не

введите описание изображения здесь

Подземье
источник
Можно ли поделиться файлом формы и рабочим пространством, которое вы использовали в приведенном выше примере? Я понимаю, что вы не можете поделиться данными GTFS.
Кен Брэгг
Красные цифры в рабочей области обозначают объекты, которые нельзя вырезать. Двойной щелчок по нему откроет их в инспекторе данных, чтобы вы могли увидеть, что они из себя представляют. Я предполагаю, что это объекты без геометрии.
Кен Брэгг
Да, это все, что есть в файлах, не связанных с геометрией, насколько я могу судить.
Подземье

Ответы:

6

Это должно быть возможно в FME 2016. Поскольку мы не можем записывать агрегаты в GTFS, необходима настройка в Clipper "Create Aggregates" = "No", чтобы запретить FME создавать агрегаты, когда урезанный элемент приводит к нескольким частям. Рабочее пространство, с которым я тестировал, находится здесь: https://www.dropbox.com/s/b02hd7shefybtmw/gtfs2gtfs.fmw?dl=0 На основе данных примера из Хельсинки здесь: https://t.co/wAZHmUS5HN введите описание изображения здесь

Кен Брэгг
источник
Спасибо, мне придется попробовать это в офисе. Кстати, достаточно ли «черной магии» / логики, чтобы обрезать также файлы GTFS, которые сами не содержат координат (например, rout.txt и trips.txt)?
Подземье
Вы можете объединить атрибуты непространственных данных с помощью Featuremerger или Joiner с официальной ссылкой developers.google.com/transit/gtfs/reference, но не все данные Хельсинки заполнены, поэтому объединения не будут работать полностью.
Mapperz
Да, как указывает @Mapperz, нам нужно использовать трансформатор FeatureMerger, чтобы объединить обрезанные геометрии с непространственными объектами. Например, поездки можно найти с помощью FeatureMerger для присоединения к shap_id, а затем записи календаря можно найти, объединив их с trip по service_id. Я начал работать над этим здесь: dropbox.com/s/b02hd7shefybtmw/gtfs2gtfs.fmw?dl=0
Кен Брэгг
1
Я вижу проблему, и думаю, что решение ;-) Атрибут parent_station на остановках в образце данных Хельсинки имеет некоторые пробелы (как это разрешено в спецификации), но они кажутся символами пробела, поэтому FME не будет писать их, потому что они не не соответствует типу данных, определенному FME. Мы применяем целое или нулевое значение. Это можно исправить с помощью преобразователя AttributeManager, чтобы установить для атрибута значение null, если оно не является целым числом. Смотрите снимок экрана здесь: screencast.com/t/dvsWfoYe
Кен Брэгг
2
Если вышеперечисленное не поможет, мы будем рады более тесно сотрудничать с вами через поддержку Safe Software ( safe.com/support ), и мы можем опубликовать резюме здесь, когда мы все решим . Или продолжайте здесь, если хотите.
Кен Брэгг
5

Если вы знаете маршруты, которые находятся в вашем регионе интересов, GTFS Transformer может дать вам гораздо меньшую GTFS.

При этом будут удалены все поездки, фигуры, остановки, остановки и календари, которые не включены в сохраненные маршруты.

Если вы хотите удалить route_id 1 и сохранить route_id 3, ваш файл преобразования будет выглядеть примерно так:

{"op":"retain","match":{"file":"routes.txt","route_id":"1"}}
{"op":"remove","match":{"file":"routes.txt","route_id":"3"}}
Тони Лейдиг
источник
1
Хотя это и не идеально, это может оказаться лучшим доступным решением. Основываясь на описании, я предполагаю, что Transformer также фильтрует все связанные файлы, чтобы содержать только информацию о сохраненных маршрутах.
Подземье
1

Я только что натолкнулся на twalcari / gtfs-filter , симпатичную утилиту для фильтрации GTFS по ограничивающим рамкам, времени и / или (классическим) режимам перемещения.

Хольгер Брух
источник