Concepts
These are some of the relevant concepts you should be aware of to successfully utilize PGTFS.
GTFS
First, it is important to be acquinted with the GTFS data structure, which is well documented on their website
GTFS Network
This is the network on top of which the routing is done. The entries here are obtained as a combination from different GTFS core entities like: stop_times / frequencies, and calendar / calendar_dates.
In the table below, all of the data is available within stop_times, but without information from calendar, the routes will likely be wrong as they will contain overlapping data (in form of trips) between weekends / weekdays / holidays / etc. It is recommended you understand the GTFS structure before attempting to use PGTFS.
GTFS Network SQL format
Name |
Type |
Description |
---|---|---|
trip_id |
|
Id of the trip |
stop_id |
|
Id of the stop |
arrival_time |
|
Arrival time at the stop |
departure_time |
|
Departure time from the stop |
stop_sequence |
|
Stop sequence within trip |
The following SQL snippet produces a valid GTFS network
select
trip_id,
stop_id,
extract (epoch from arrival_time)::double precision,
extract (epoch from departure_time)::double precision,
stop_sequence::int
from (
values
('trip-1','1',NULL::timestamptz, '2024-01-01 12:00:00+00'::timestamptz,1),
('trip-1','2','2024-01-01 12:10:00+00','2024-01-01 12:15:00+00',2),
('trip-1','3','2024-01-01 12:20:00+00','2024-01-01 12:25:00+00',3),
('trip-1','4','2024-01-01 12:30:00+00',NULL,4),
('trip-2','3',NULL, '2024-01-01 12:45:00+00',1),
('trip-2','5','2024-01-01 12:50:00+00','2024-01-01 12:55:00+00',2),
('trip-2','6','2024-01-01 13:00:00+00',NULL,3)
)
as data (trip_id, stop_id, arrival_time, departure_time, stop_sequence);