General Transit Feed Specification
# General Transit Feed Specification

General Transit Feed Specification (GTFS) definisce un formato comune per gli orari dei trasporti pubblici e le relative informazioni geografiche.

Fu ideato dal manager IT Bibiana McHugh all'agenzia dei trasporti TriMe dell'area metropolitana di Portland, in Oregon negli Stati Uniti e sviluppato da Google e da Portland TriMet, e originariamente conosciuto come Google Transit Feed Specification.

Un feed GTFS è una collezione di file CSV contenuta in un file zip. Insieme le tabelle CSV correlate descrivono delle operazioni sulle tabelle degli orari del sistema di trasporto. Le specifiche sono progettate per essere sufficienti a fornire funzionalità di pianificazione di un viaggio, ma è anche utile per altre applicazioni come analisi del livello di servizio e altre misure prestazionali. Non include informazioni in tempo reale sebbene possano essere correlate con le specifiche di GTFS-realtime.

## Struttura

Di seguito la struttura del GTFS con le tabelle richieste. Ogni tabella è letteralmente un file di testo CSV il cui nome è il nome della tabella, con estensione ".txt". Per esempio per la tabella "agency" (agenzia) il file CSV è chiamato "agency.txt".

### agency

L'agency corrisponde alla tabella con le informazioni sull'azienda dei trasporti.

Campi richiesti:

* agency_name
* agency_url
* agency_timezone

### routes

La tabella routes contiene i percorsi.

Campi richiesti:

* route_id (primary key)
* route_short_name
* route_long_name
* route_type

### trips

Campi richiesti:

* trip_id (primary key)
* route_id (foreign key)
* service_id (foreign key)

Campi opzionali:

* block_id - Il block ID indica il blocco al quale un viaggio (trip) appartiene.

### stop_times

Orari presso una fermata del mezzo di trasporto.

Campi richiesti:

* stop_id (primary key)
* trip_id (foreign key)
* arrival_time
* departure_time
* stop_sequence

### stops

La tabella stops definisce le informazioni geografiche di ogni fermata.

Campi richiesti:

* stop_id (primary key)
* stop_name
* stop_lon
* stop_lat

### calendar

La tabella calendario definisce la ricorrenza con cui avviene il passaggio di un mezzo di trasporto presso una fermata come i giorni di esercizio ed il periodo di esercizio.

Campi richiesti:

* service_id (primary key)
* monday
* tuesday
* wednesday
* thursday
* friday
* saturday
* sunday
* start_date
* end_date

Tabelle opzionali

* calendar_dates.txt
* fare_attributes.txt
* fare_rules.txt
* shapes.txt
* frequencies.txt
* transfers.txt
* feed_info.txt
