Come estrarre una piccola area da un grande feed GTFS?


11

Esiste uno strumento che supporta l'estrazione di una piccola regione da un feed GTFS più grande? La libreria Transitfeed di Google contiene uno strumento Unisci ma nessuno strumento Estrai / Clip, per quanto posso vedere. Altre librerie che ho trovato possono solo leggere e tracciare dati, ma non supportano la manipolazione.

Informazioni di background: Transitfeed Feedvalidator mostra molti errori per il mio file GTFS. Voglio estrarre la mia regione di interesse per valutare la qualità locale.


I consigli su Twitter mi hanno indicato FME che ha sia un lettore GTFS che uno scrittore. Il mio semplice flusso di lavoro è costituito da un lettore GTFS (in basso a sinistra), un lettore Shapefile (in alto a sinistra, per il poligono dell'area di interesse), un clipper e uno scrittore GTFS per l'output (scrivendo solo i file di stop e di forme per ora, ma alla fine io ' Voglio tutti i file):

inserisci qui la descrizione dell'immagine

Il problema finora è che il contenuto delle forme di output (punti arancioni) non contiene tutti i punti di input (verde) che si trovano nell'area gialla di interesse:

inserisci qui la descrizione dell'immagine

(Fonte dei dati: https://transitfeeds.com/p/helsinki-regional-transport/735/latest/download )


Utilizzando "Crea aggregati" = "No", le forme ritagliate sembrano complete

inserisci qui la descrizione dell'immagine

ma le fermate sicuramente non lo sono

inserisci qui la descrizione dell'immagine


È possibile condividere il file di forma e l'area di lavoro utilizzata nell'esempio sopra? Mi rendo conto che non puoi condividere i dati GTFS stessi.
Ken Bragg,

I numeri rossi nell'area di lavoro indicano funzionalità che non è stato possibile ritagliare. Facendo doppio clic su di esso, li aprirai nella finestra di ispezione dei dati in modo da poter vedere quali sono. Immagino che siano caratteristiche senza geometria.
Ken Bragg,

Sì, queste sono tutte le funzionalità dei file non geometrici, per quanto ne so.
underdark

Risposte:


6

Ciò dovrebbe essere possibile in FME 2016. Poiché non possiamo scrivere aggregati su GTFS, è necessaria un'impostazione nel Clipper "Crea aggregati" = "No" per impedire a FME di creare aggregati quando la funzione ritagliata risulta in più pezzi. L'area di lavoro con cui ho provato è qui: https://www.dropbox.com/s/b02hd7shefybtmw/gtfs2gtfs.fmw?dl=0 Basato sui dati di esempio di Helsinki qui: https://t.co/wAZHmUS5HN inserisci qui la descrizione dell'immagine


Grazie, dovrò riprovare in ufficio. A proposito, c'è abbastanza "magia nera" / logica per avere anche i file GTFS che non contengono coordinate da soli (es. Route.txt e trips.txt) ritagliati?
underdark

Puoi unire gli attributi di dati non spaziali con un'impresa produttrice o un falegname con il riferimento ufficiale developers.google.com/transit/gtfs/reference ma non tutti i dati di Helsinki vengono popolati, quindi i join non funzioneranno completamente.
Mapperz

Sì, come sottolinea @Mapperz, è necessario utilizzare il trasformatore FeatureMerger per unire le geometrie troncate con caratteristiche non spaziali. Ad esempio, è possibile trovare i viaggi utilizzando FeatureMerger per unirsi su shap_id e quindi i record del calendario possono essere trovati unendo i viaggi su service_id. Ho iniziato a lavorare su questo qui: dropbox.com/s/b02hd7shefybtmw/gtfs2gtfs.fmw?dl=0
Ken Bragg

1
Vedo il problema e penso la soluzione ;-) L'attributo parent_station sugli arresti nei dati di esempio di Helsinki ha alcuni spazi vuoti (come consentito nelle specifiche) ma sembrano essere spazi bianchi quindi FME non li scriverà perché non soddisfa il tipo di dati definito da FME. Stiamo imponendo numeri interi o null. È possibile risolvere questo problema utilizzando il trasformatore AttributeManager per impostare l'attributo su null se non è un numero intero. Guarda la schermata qui: screencast.com/t/dvsWfoYe
Ken Bragg

2
Se quanto sopra non aiuta, saremo lieti di collaborare con te più da vicino tramite il supporto del software sicuro ( safe.com/support ) e possiamo pubblicare un riepilogo qui quando avremo risolto tutto. O continua qui se preferisci.
Ken Bragg,

5

Se conosci le rotte che si trovano nella tua regione più intima, GTFS Transformer può darti una GTFS molto più piccola.

In tal modo, rimuoverà tutti i viaggi, le forme, le fermate, i tempi di arresto e i calendari che non sono inclusi nei percorsi conservati.

Se desideri rimuovere route_id 1 e mantenere route_id 3, il tuo file di trasformazione sarà simile a:

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

1
Sebbene non sia l'ideale, potrebbe essere la migliore soluzione disponibile. Sulla base della descrizione, suppongo che il Transformer filtra anche tutti i file correlati in modo da contenere solo informazioni sulle rotte conservate.
underdark

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.