Types of GTFS stops
The word "stop" in a public transport network is commonly used to describe a wide range of things, including stations, platforms, shelters, poles, and more.
The GTFS definition of a stop is just as broad, but it can be more precise when the gtfs.txt file contains two optional columns: location_type and parent_station.
Location type
There are five valid location types defined by the keys 0, 1, 2, 3 and 4.
-
0(or blank) is aSTOPorPLATFORM. Both represent a location where travellers can (un)board a vehicle, such as a tram shelter or a train platform. The difference between the two is whether they have a parent station or not. ASTOPdoes not: it's a single, independent location (like an isolated pole on the street). APLATFORMdoes, it belongs to aSTATION. -
1is aSTATION. It represents a structure that contains one or morePLATFORMS, such as a train or subway station. -
2is anENTRANCE/EXITof aSTATION, i.e. a place where travellers can access a station from the street. -
3is aGENERIClocation inside aSTATIONthat doesn't match any other type. -
4is aBOARDING AREA, which is a section of aPLATFORMwith some special boarding feature, such as a ramp for wheelchair accessibility.
So GTFS stops basically fall into one or two of two categories:
-
locations where vehicles physically stop to pick up and/or drop off travellers (=
STOPS,PLATFORMSandBOARDING AREAS) -
locations that represent a (part of a)
STATION(= all types exceptSTOP).
Parent station
The parent_station property is required when a stop represents anything other than an independent STOP or an encompassing STATION.
It must contain a valid stop_id matching:
-
a
STATIONfor stops representing aPLATFORM,ENTRANCE/EXIT, orGENERIClocation. -
a
PLATFORMfor stops representing aBOARDING AREA.
Example
There is a major square in the city of Brussels named Place De Brouckère, which is considered by many locals to be the central point of Brussels. Many stops located in and around this square are listed in STIB/MIVB's (i.e. the city's public transport operator) stops.txt GTFS file, from which this sample was taken:
stop_id,stop_name,stop_lat,stop_lon,location_type,parent_station
1820,"DE BROUCKERE",50.850478,4.351300,0,
2070,"DE BROUCKERE",50.853120,4.353578,0,
2594,"DE BROUCKERE",50.850734,4.352937,0,
2595,"DE BROUCKERE",50.850504,4.353890,0,
2596,"DE BROUCKERE",50.849654,4.352651,0,
3465,"DE BROUCKERE",50.852420,4.351157,0,
0010106,"4 - Boulevard Anspach",50.850262,4.351740,2,6
0010206,"2 - Place De Brouckère",50.851997,4.353216,2,6
0010306,"3 - Place De Brouckère",50.851161,4.352890,2,6
0010406,"1 - Place De Brouckère",50.851404,4.352492,2,6
6,"DE BROUCKERE",50.849821,4.352486,1,
0501,"DE BROUCKERE",50.851494,4.352876,0,6
0506,"DE BROUCKERE",50.851746,4.353415,0,6
8011,"DE BROUCKERE",50.850095,4.352165,0,6
8012,"DE BROUCKERE",50.849821,4.352486,0,6
This sample illustrates 4 of the 6 stop types:
The first 6 rows represent individual bus poles at street level, i.e. the STOP type given by location_type:0 + parent_station:(blank).
The next 4 rows represent a metro station's access points, as specified by location_type:2 + parent_station:6 ("6" being the station's stop_id). One entrance/exit is located on the boulevard that crosses the square, the other three on the Place De Brouckère.
The 7th row is the metro STATION as a whole, as described by location_type:1 + parent_station:(blank).
This station is served by two lines, both running in two directions, so the station has four PLATFORMS described in the final 4 rows with location_type:0 + parent_station:6.