Jak wyodrębnić mały obszar z dużego kanału GTFS?


11

Czy istnieje narzędzie, które obsługuje wyodrębnianie małego regionu z większego kanału GTFS? O ile widzę, biblioteka Google Transitfeed zawiera narzędzie Scal, ale nie zawiera narzędzia Wyodrębnij / Klip. Inne biblioteki, które znalazłem, mogą tylko odczytywać i drukować dane, ale nie obsługują manipulacji.

Informacje podstawowe: Transitfeed Feedvalidator pokazuje wiele błędów w moim pliku GTFS. Chcę wyodrębnić mój region zainteresowania, aby ocenić lokalną jakość.


Rekomendacje na Twitterze wskazały mi FME, który ma zarówno czytnik GTFS, jak i pisarz. Mój prosty obieg pracy składa się z czytnika GTFS (lewy dolny róg), czytnika Shapefile (górny lewy, dla obszaru zainteresowania), maszynki do strzyżenia i programu zapisującego GTFS dla danych wyjściowych (na razie zapisuję tylko pliki stop i kształty, ale ostatecznie „ Chcę wszystkie pliki):

wprowadź opis zdjęcia tutaj

Problem polega na tym, że zawartość kształtów wyjściowych (pomarańczowe punkty) nie zawiera wszystkich punktów wejściowych (zielonych), które znajdują się w żółtym obszarze zainteresowania:

wprowadź opis zdjęcia tutaj

(Źródło danych: https://transitfeeds.com/p/helsinki-regional-transport/735/latest/download )


Przy użyciu „Utwórz agregaty” = „Nie” przycięte kształty wydają się kompletne

wprowadź opis zdjęcia tutaj

ale przystanki na pewno nie są

wprowadź opis zdjęcia tutaj


Czy można udostępnić plik kształtu i przestrzeń roboczą użytą w powyższym przykładzie? Zdaję sobie sprawę, że nie możesz udostępniać samych danych GTFS.
Ken Bragg

Czerwone liczby w obszarze roboczym wskazują funkcje, których nie można przyciąć. Dwukrotne kliknięcie otworzy je w inspektorze danych, dzięki czemu zobaczysz, jakie są. Zgaduję, że są to elementy bez geometrii.
Ken Bragg

Tak, o ile mogę stwierdzić, są to wszystkie funkcje z plików niegeometrii.
podmrok

Odpowiedzi:


6

Powinno to być możliwe w FME 2016. Ponieważ nie możemy zapisywać agregatów do GTFS, konieczne jest ustawienie w Clipperie „Utwórz agregaty” = „Nie”, aby zapobiec tworzeniu przez agregaty FME agregatów, gdy przycięty obiekt powoduje powstanie wielu elementów. Obszar roboczy, z którym testowałem, jest tutaj: https://www.dropbox.com/s/b02hd7shefybtmw/gtfs2gtfs.fmw?dl=0 Na podstawie przykładowych danych z Helsinek tutaj: https://t.co/wAZHmUS5HN wprowadź opis zdjęcia tutaj


Dziękuję, będę musiał spróbować ponownie w biurze. Przy okazji, czy jest wystarczająca „czarna magia” / logika, aby przyciąć również pliki GTFS, które same nie zawierają współrzędnych (np. Route.txt i trips.txt)?
podmrok

Możesz połączyć atrybuty danych nieprzestrzennych za pomocą funkcji łączenia lub łączenia z oficjalną dokumentacją developers.google.com/transit/gtfs/reference, ale nie wszystkie dane z Helsinek są zapełnione, więc połączenia nie będą w pełni działać.
Mapperz

Tak, jak wskazuje @Mapperz, musimy użyć transformatora FeatureMerger, aby połączyć przycięte geometrie z elementami nieprzestrzennymi. Na przykład wycieczki można znaleźć, używając FeatureMerger, aby dołączyć do shap_id, a następnie można znaleźć rekordy kalendarza, łącząc się z trip na service_id. Zacząłem przez to pracować tutaj: dropbox.com/s/b02hd7shefybtmw/gtfs2gtfs.fmw?dl=0
Ken Bragg

1
Widzę problem i myślę, że rozwiązanie ;-) Atrybut parent_station na przystankach w przykładowych danych z Helsinek ma pewne spacje (jak dopuszcza to specyfikacja), ale wydaje się, że są to białe znaki, więc FME ich nie napisze, ponieważ nie nie spełniają typu danych zdefiniowanego przez FME. Wymuszamy liczbę całkowitą lub zerową. Możesz to naprawić za pomocą transformatora AttributeManager, aby ustawić atrybut na null, jeśli nie jest liczbą całkowitą. Zobacz zrzut ekranu tutaj: screencast.com/t/dvsWfoYe
Ken Bragg

2
Jeśli powyższe nie pomoże, z przyjemnością będziemy z tobą bliżej współpracować za pośrednictwem pomocy Bezpiecznego oprogramowania ( safe.com/support ) i możemy opublikować tutaj streszczenie, gdy wszystko rozwiążemy. Lub kontynuuj tutaj, jeśli wolisz.
Ken Bragg,

5

Jeśli znasz trasy w interesującym Cię regionie, GTFS Transformer może dać ci znacznie mniejszy GTFS.

W ten sposób usunie wszystkie podróże, kształty, postoje, stop_times i kalendarze, które nie obejmują zachowanych tras.

Jeśli chcesz usunąć route_id 1 i zachować route_id 3, plik transformacji wyglądałby mniej więcej tak:

{"op":"retain","match":{"file":"routes.txt","route_id":"1"}}
{"op":"remove","match":{"file":"routes.txt","route_id":"3"}}

1
Chociaż nie jest to idealne, może to być najlepsze dostępne rozwiązanie. Na podstawie opisu zakładam, że Transformer filtruje również wszystkie powiązane pliki, aby zawierały tylko informacje o zachowanych trasach.
podmrok

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.