Stops
Transitland represents each place a person may board or exit a transit vehicle as a Stop
. Generally, these are imported from GTFS feeds, but Transitland also allows users to create Stops
that are not associated with a Feed
.
Stop data model
Each Transitland Stop
has a unique onestop_id
, such as s-9q9p1bbfkc-lakemerritt
; the Onestop ID format includes an s
prefix, a geohash encoding the approximate location, and a short identifier.
Basic Stop
attributes include name
, a simple name for the station that would be used on printed schedules, and timezone
for the local timezone. The wheelchair_boarding
attribute contains accessibility information: when true
, the location is generally wheelchair accessible, when false
it is known not to be accessible, and when null
the accessibility is not known.
The geometry
attribute may be either a single point or a polygon containing the station extent. In either case, the geometry_centroid
attribute will always be a point that represents a single location. The centroid is set by 1) the geometry_reversegeo
attribute if available 2) geometry
if it is a point, or 3) the calculated centroid of geometry
if it is a polygon. The location is also referenced by the osm_way_id
attribute, which is the closest pedestrian-accessible OpenStreetMap way to the Stop. The osm_way_id
is checked and updated periodically, approximately once every 48 hours, to reflect any changes to OpenStreetMap; last_conflated_at
is the timestamp of the last check.
The Stops
API also returns several relations to Operators
and Routes
for convenience. routes_serving_stop
is an array of objects, one for each Route
that visits the stop, and includes route_onestop_id
and route_name
as well as the operator_onestop_id
and operator_name
for the route’s operator. Similarly, operators_serving_stop
includes the operator_onestop_id
and operator_name
for each Operator
that serves the stop. served_by_vehicle_types
is the aggregated vehicle_type
of all the Routes
that visit the stop.
Attribute | Type | Description |
---|---|---|
onestop_id |
Onestop ID | Stop Onestop ID |
geometry |
Geometry | Stop geometry; can be point or polygon |
name |
String | Stop name |
timezone |
String | Stop timezone |
osm_way_id |
Integer | Conflated OSM way ID |
last_conflated_at |
Datetime | Timestamp of last time osm_way_id was checked |
served_by_vehicle_types |
Array | Vehicle types that visit this Stop |
wheelchair_boarding |
Boolean | Wheelchair accessible |
geometry_reversegeo |
Geometry | Alternate geometry; always a point |
geometry_centroid |
Geometry | Stop centroid; always a point |
operators_serving_stop |
Object array | Operators serving this Stop |
routes_serving_stop |
Object array | Routes serving this Stop |
tags |
Object | Tags |
Stops API
Endpoint: /api/v1/stops
Standard entity query parameters:
Query parameter | Type | Description | Example |
---|---|---|---|
onestop_id |
Onestop ID(s) | Onestop ID | Lake Merritt BART |
lat |
Float | Latitude | Near a point |
lon |
Float | Longitude | Near a point |
r |
Float | Radius (meters) for lat /lon |
Within 1km of a point |
bbox |
Bounding box | Bounding box: ymin, xmin, ymax, xmax | Downtown Oakland |
updated_since |
Datetime | Entity has been modified since | Updated in 2017 |
imported_from_feed |
Onestop ID | Imported from Feed | Imported from BART |
imported_from_feed_version |
Feed Version | Imported from Feed Version | Imported from a specific BART version |
imported_with_gtfs_id |
String(s) | Associated with GTFS entity | Imported from BART with GTFS ID “LAKE” |
tag_key |
String | Tag key | Includes tag “stop_url” |
tag_value |
String | Tag value | Tag “zone_id” is “1” |
include |
String(s) | Include in response: issues, geometry, imported_from_feeds | Include Issues and import data |
exclude |
String(s) | Exclude from response: issues, geometry, imported_from_feeds | Exclude geometry |
Plus:
Query parameter | Type | Description | Example |
---|---|---|---|
served_by |
Onestop ID(s) | Served by Operator or Route | Served by BART or AC Transit Line 1 |
served_by_vehicle_types |
String(s) | Served by vehicle types | SFMTA light rail stops |
wheelchair_boarding |
Boolean | Wheelchair accessible | Accessible BART stations |
Stop import process
When a new GTFS feed is imported, existing Transitland Stops
are matched with GTFS stops.txt
stops based on the GTFS stop_id
used in the last import. If a match is found, the existing Transitland Stop
is updated; if a match is not found, a new Transitland Stop
is created.
Stations
Several Stops
can be grouped together into a StopStation
complex. A StopStation
can have several StopPlatforms
, each representing a platform where a transit vehicle can stop, and several StopEgresses
, where pedestrians may enter or exit a station.
Stations data model
The StopStation
, StopPlatforms
and StopEgresses
models are very similar to the plain Stop
model.
The significant differences are that a StopStation
will include nested StopPlatforms
in stop_platforms
and StopEgresses
in stop_egresses
. Additionally, the top-level StopStation
will include operators_serving_stop_and_platforms
, routes_serving_stop_and_platforms
, and vehicle_types_serving_stop_and_platforms
instead of the similarly named Stop
relations.
A StopEgress
includes an additional directionality
attribute to note if a pedestrian can enter
(street-to-station), exit
(station-to-street), or both
enter and exit the station. A StopEgress
does not include operators_serving_stop
and routes_serving_stop
, since it is not visited by trips.
A StopPlatform
does not include osm_way_id
, last_conflated_at
, or directionality
, since it does not connect to the street network.
StopStations API
Endpoint: /api/v1/stop_stations
The StopStations
endpoint has the same query parameters as the Stop
endpoint, plus:
Query parameter | Type | Description | Example |
---|---|---|---|
min_platforms |
Integer | Minimum number of StopPlatforms |
At least 10 platforms |
min_egresses |
Integer | Minimum number of StopEgresses |
At least 1 egress |
Generated platforms and egresses
By default, the StopStations
endpoint will include a generated StopEgress
or StopPlatform
if none exist, using the values from the StopStation
. Any generated entity will have a generated
attribute with a value of true
. This commonly happens when a regular Stop
with no platforms or egresses defined is accessed through the StopStations
endpoint. This behavior can be disabled by setting the exclude
query parameter to generated
.