Як витягти невелику площу з великого каналу GTFS?


11

Чи є інструмент, який підтримує вилучення невеликого регіону з більшого каналу GTFS? Наскільки я бачу, бібліотека Google Transitfeed містить інструмент "Злиття", але не має інструменту "Витяг / Кліп". Інші знайдені нами бібліотеки можуть лише читати та малювати дані, але не підтримують маніпуляції.

Довідкова інформація: Транзитфіл Feedvalidator показує багато помилок у моєму файлі GTFS. Я хочу отримати свій цікавий регіон для оцінки місцевої якості.


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

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

Поки що проблема полягає в тому, що вихідний контент формує (помаранчеві точки) не містить усіх вхідних точок (зелених), які знаходяться в зоні, що цікавить жовтий

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

(Джерело даних: https://transitfeeds.com/p/helsinki-regional-transport/735/latest/download )


Використовуючи "Create Aggregates" = "Ні", відрізані форми здаються завершеними

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

але зупинки точно не є

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


Чи можливо поділитися файлом форми та робочим простором, який ви використовували у наведеному вище прикладі? Я усвідомлюю, що ви не можете ділитися даними 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, які не містять координати самі по собі (наприклад, route.txt і trips.txt)?
underdark

Ви можете приєднати атрибути непросторових даних за допомогою функціонера чи столяра за допомогою офіційного довідника 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.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
Хоча це не ідеально, це може стати найкращим доступним рішенням. Виходячи з опису, я припускаю, що Трансформатор також фільтрує всі пов'язані файли, щоб містити інформацію лише про збережені маршрути.
underdark

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.