GtfsMaker è uno script per generare automaticamente i GTFS per il trasporto pubblico di Matera partendo dalle informazioni contenute su OpenStreetMap e gli orari degli autobus dell'azienda di trasporti Miccolis.
GTFS è uno standard de facto che descrive gli orari e le informazioni geografiche associate al trasporto pubblico. Questi dati sono in un formato facilmente interpretabile da un computer e quindi possono essere usati per sviluppare molte applicazioni di interesse per la comunità.
Esempi di applicativi open source dove possono essere caricati i dati GTFS:
La finalità di questo progetto è costruire uno strumento di semplice utilizzo per tenere aggiornate le informazioni sul trasporto pubblico di Matera. Poiché Miccolis gestisce il trasporto pubblico in molte città del sud Italia, speriamo che questo lavoro possa tornare utile anche altrove. Se abitate in una di queste città e siete interessati, siamo disposti a collaborare molto volentieri!
La qualità e la ricchezza di informazioni e dettagli del dataset può essere migliorata con il tempo grazie ai contributi della comunità di mapper OpenStreetMap di Matera.
Al momento solo il file miccolis/timetables/by_line.txt (grazie Alberto!) è generato a mano. Gli altri dati siamo riusciti a ricavarli automaticamente da OpenStreetMap e dagli orari di Miccolis. Il parser per estrarre i dati da Miccolis si trova qui.
I dati su OpenStreetMap sono stati caricati da diversi volenterosi che si sono offerti di passare qualche ora a bordo degli autobus di Matera armati di uno smartphone e tanta pazienza! Abbiamo una pagina wiki su OSM in cui teniamo traccia dei progressi nella mappatura.
La qualità del dataset è da valutare sul campo: c'è ancora molto lavoro da fare per avere un dataset pulito e senza errori. Alcune informazioni sono mancanti su OpenStreetMap e alcune informazioni informali descritte negli orari di Miccolis non sono state tradotte in GTFS. In ogni caso lo script riporta anche quali sono i dati mancanti e gli eventuali problemi. Queste informazioni potrebbero essere di aiuto per i mapper al fine di capire dove è necessario intervenire.
Il dataset prodotto da questo script si trova a questo link. Però è sempre meglio eseguire lo script ogni volta perché in questo modo vengono integrate informazioni fresche da OpenStreetMap.
Lo script richiede come prerequisito NodeJS e git.
$ git clone https://github.com/unmonastery/GtfsMaker.git
$ cd GtfsMaker/
$ npm install
Per generare una nuova versione di file GTFS prendendo dati aggiornati da OpenStreetMap:
$ grunt compile
Il risultato del comando è visibile nella directory gtfs.
Se alcune informazioni sono mancanti su OSM, lo script lo segnala. In questo modo possiamo aiutare la comunità di OpenStreetMap a capire dove è necessario intervenire. Ad esempio,
stop 2509490275 does not have tags.ref in route 3797255 (Linea 6/B)
Significa che la fermata OSM con id 2509490275 non ha il tag tags.ref (i.e. il numero di palo nella convenzione che abbiamo seguito). Inoltre indica il numero della relazione di tipo route di cui fa parte la fermata.
Per validare i gtfs prodotti utilizziamo il validatore FeedValidator che può essere eseguito con questo comando:
$ grunt validate
Viene generato un file validation-results.html che mostra i problemi attuali del gtfs generato.
Poiché il validatore è molto severo e alcune applicazioni potrebbero non accettare i gtfs se non passano il test del validatore, abbiamo scritto un piccolo script per "pulire" i dati gtfs ed eliminare le parti mancanti o che potrebbero causare problemi.
$ grunt cleaning
Le correzioni che lo script fa vengono mostrate in output.
Infine alcune applicazioni non sanno interpretare i gtfs che usano il file frequencies.txt che elenca le frequenze di arrivo degli autobus senza indicare l'orario esatto. Per questa ragione abbiamo creato un altro script per generare la versione estesa di frequencies.txt con tutti gli orari.
$ grunt unfolded_stop_times
Il risultato è un file unfolded_stop_times.txt che deve essere rinominato in stop_times.txt quando utilizzato nell'applicazione di interesse.
Dai file gtfs è possibile generare un file RDF grazie al programma gtfs-csv2rdf di @pietercolpaert.
questo comando funziona solo in Linux per il momento
$ grunt compress:gtfs
$ grunt mkRdf
Questa è una demo che mostra i nostri gtfs al lavoro con Ulm LiveMap. I file gtfs sono usati per simulare la visualizzazione in real time del trasporto pubblico. Se il server non dovesse essere disponibile, abbiamo preparato anche un video
Stiamo lavorando ad unTransit, un'app html/mobile per visualizzare le informazioni contenute nei gtfs in modo più comprensibile per un essere umano. A breve abbiamo intenzione di aggiungere ad unTransit la possibilità di tracciare in tempo reale la propria posizione.