From 94cff2b6cf913e5b9b4b8bc973c553f6bd3fd369 Mon Sep 17 00:00:00 2001 From: Tzu-Jen Chan <126435471+tzujenchanmbd@users.noreply.github.com> Date: Tue, 22 Oct 2024 18:09:03 -0400 Subject: [PATCH 1/9] Add stops.stop_access field --- gtfs/spec/en/reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtfs/spec/en/reference.md b/gtfs/spec/en/reference.md index e4ea6ae2..1f98b426 100644 --- a/gtfs/spec/en/reference.md +++ b/gtfs/spec/en/reference.md @@ -215,7 +215,7 @@ Primary key (`stop_id`) | `wheelchair_boarding` | Enum | Optional | Indicates whether wheelchair boardings are possible from the location. Valid options are:

For parentless stops:
`0` or empty - No accessibility information for the stop.
`1` - Some vehicles at this stop can be boarded by a rider in a wheelchair.
`2` - Wheelchair boarding is not possible at this stop.

For child stops:
`0` or empty - Stop will inherit its `wheelchair_boarding` behavior from the parent station, if specified in the parent.
`1` - There exists some accessible path from outside the station to the specific stop/platform.
`2` - There exists no accessible path from outside the station to the specific stop/platform.

For station entrances/exits:
`0` or empty - Station entrance will inherit its `wheelchair_boarding` behavior from the parent station, if specified for the parent.
`1` - Station entrance is wheelchair accessible.
`2` - No accessible path from station entrance to stops/platforms. | | `level_id` | Foreign ID referencing `levels.level_id` | Optional | Level of the location. The same level may be used by multiple unlinked stations.| | `platform_code` | Text | Optional | Platform identifier for a platform stop (a stop belonging to a station). This should be just the platform identifier (eg. "G" or "3"). Words like “platform” or "track" (or the feed’s language-specific equivalent) should not be included. This allows feed consumers to more easily internationalize and localize the platform identifier into other languages. | - +| `stop_access` | Enum | **Conditionally Forbidden** | Indicates how the stop is accessed for a particular station. Valid options are:

`0` - The stop/platform is part of the main station structure or enclosed area, and is accessed via entrances and pathways of the parent station, if specified, or otherwise via the station itself.
`1` - The stop/platform is not part of the main station structure or enclosed area. Directions for access should be generated directly to the stop, independent of any entrances or pathways of the parent station.

When `stop_access` is empty, the access for the specified stop or platform is considered undefined.

**Conditionally Forbidden**:
- **Forbidden** for locations which are stations (`location_type=1`), entrances (`location_type=2`), generic nodes (`location_type=3`) or boarding areas (`location_type=4`).
- **Forbidden** if `parent_station` is empty. | ### routes.txt From 6acff3b391a6c33b485e5cda81f9a7e9702e2b44 Mon Sep 17 00:00:00 2001 From: Tzu-Jen Chan <126435471+tzujenchanmbd@users.noreply.github.com> Date: Tue, 22 Oct 2024 18:12:54 -0400 Subject: [PATCH 2/9] Add optional desc --- gtfs/spec/en/reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtfs/spec/en/reference.md b/gtfs/spec/en/reference.md index 1f98b426..f04f089c 100644 --- a/gtfs/spec/en/reference.md +++ b/gtfs/spec/en/reference.md @@ -215,7 +215,7 @@ Primary key (`stop_id`) | `wheelchair_boarding` | Enum | Optional | Indicates whether wheelchair boardings are possible from the location. Valid options are:

For parentless stops:
`0` or empty - No accessibility information for the stop.
`1` - Some vehicles at this stop can be boarded by a rider in a wheelchair.
`2` - Wheelchair boarding is not possible at this stop.

For child stops:
`0` or empty - Stop will inherit its `wheelchair_boarding` behavior from the parent station, if specified in the parent.
`1` - There exists some accessible path from outside the station to the specific stop/platform.
`2` - There exists no accessible path from outside the station to the specific stop/platform.

For station entrances/exits:
`0` or empty - Station entrance will inherit its `wheelchair_boarding` behavior from the parent station, if specified for the parent.
`1` - Station entrance is wheelchair accessible.
`2` - No accessible path from station entrance to stops/platforms. | | `level_id` | Foreign ID referencing `levels.level_id` | Optional | Level of the location. The same level may be used by multiple unlinked stations.| | `platform_code` | Text | Optional | Platform identifier for a platform stop (a stop belonging to a station). This should be just the platform identifier (eg. "G" or "3"). Words like “platform” or "track" (or the feed’s language-specific equivalent) should not be included. This allows feed consumers to more easily internationalize and localize the platform identifier into other languages. | -| `stop_access` | Enum | **Conditionally Forbidden** | Indicates how the stop is accessed for a particular station. Valid options are:

`0` - The stop/platform is part of the main station structure or enclosed area, and is accessed via entrances and pathways of the parent station, if specified, or otherwise via the station itself.
`1` - The stop/platform is not part of the main station structure or enclosed area. Directions for access should be generated directly to the stop, independent of any entrances or pathways of the parent station.

When `stop_access` is empty, the access for the specified stop or platform is considered undefined.

**Conditionally Forbidden**:
- **Forbidden** for locations which are stations (`location_type=1`), entrances (`location_type=2`), generic nodes (`location_type=3`) or boarding areas (`location_type=4`).
- **Forbidden** if `parent_station` is empty. | +| `stop_access` | Enum | **Conditionally Forbidden** | Indicates how the stop is accessed for a particular station. Valid options are:

`0` - The stop/platform is part of the main station structure or enclosed area, and is accessed via entrances and pathways of the parent station, if specified, or otherwise via the station itself.
`1` - The stop/platform is not part of the main station structure or enclosed area. Directions for access should be generated directly to the stop, independent of any entrances or pathways of the parent station.

When `stop_access` is empty, the access for the specified stop or platform is considered undefined.

**Conditionally Forbidden**:
- **Forbidden** for locations which are stations (`location_type=1`), entrances (`location_type=2`), generic nodes (`location_type=3`) or boarding areas (`location_type=4`).
- **Forbidden** if `parent_station` is empty.
- Optional otherwise. | ### routes.txt From b0eb51e6ffab7a72bed2cd61161c6f3a92df300a Mon Sep 17 00:00:00 2001 From: Tzu-Jen Chan <126435471+tzujenchanmbd@users.noreply.github.com> Date: Tue, 22 Oct 2024 18:23:34 -0400 Subject: [PATCH 3/9] Add restriction on pathways.from/to_stop_id --- gtfs/spec/en/reference.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gtfs/spec/en/reference.md b/gtfs/spec/en/reference.md index f04f089c..6019407a 100644 --- a/gtfs/spec/en/reference.md +++ b/gtfs/spec/en/reference.md @@ -687,8 +687,8 @@ Pathways must be defined exhaustively in a station. If any pathways are defined, | Field Name | Type | Presence | Description | | ------ | ------ | ------ | ------ | | `pathway_id` | Unique ID | **Required** | Identifies a pathway. Used by systems as an internal identifier for the record. Must be unique in the dataset.

Different pathways may have the same values for `from_stop_id` and `to_stop_id`.
_Example: When two escalators are side-by-side in opposite directions, or when a stair set and elevator go from the same place to the same place, different `pathway_id` may have the same `from_stop_id` and `to_stop_id` values._| -| `from_stop_id` | Foreign ID referencing `stops.stop_id` | **Required** | Location at which the pathway begins.

Must contain a `stop_id` that identifies a platform (`location_type=0` or empty), entrance/exit (`location_type=2`), generic node (`location_type=3`) or boarding area (`location_type=4`).

Values for `stop_id` that identify stations (`location_type=1`) are forbidden.| -| `to_stop_id` | Foreign ID referencing `stops.stop_id` | **Required** | Location at which the pathway ends.

Must contain a `stop_id` that identifies a platform (`location_type=0` or empty), entrance/exit (`location_type=2`), generic node (`location_type=3`) or boarding area (`location_type=4`).

Values for `stop_id` that identify stations (`location_type=1`) are forbidden.| +| `from_stop_id` | Foreign ID referencing `stops.stop_id` | **Required** | Location at which the pathway begins.

Must contain a `stop_id` that identifies a platform (`location_type=0` or empty), entrance/exit (`location_type=2`), generic node (`location_type=3`) or boarding area (`location_type=4`).

Values for `stop_id` that identify stations (`location_type=1`) or stops (`location_type=0` or empty) outside the station structure (`stop_access=1`) are forbidden.| +| `to_stop_id` | Foreign ID referencing `stops.stop_id` | **Required** | Location at which the pathway ends.

Must contain a `stop_id` that identifies a platform (`location_type=0` or empty), entrance/exit (`location_type=2`), generic node (`location_type=3`) or boarding area (`location_type=4`).

Values for `stop_id` that identify stations (`location_type=1`) or stops (`location_type=0` or empty) outside the station structure (`stop_access=1`) are forbidden.| | `pathway_mode` | Enum | **Required** | Type of pathway between the specified (`from_stop_id`, `to_stop_id`) pair. Valid options are:

`1` - Walkway.
`2` - Stairs.
`3` - Moving sidewalk/travelator.
`4` - Escalator.
`5` - Elevator.
`6` - Fare gate (or payment gate): A pathway that crosses into an area of the station where proof of payment is required to cross. Fare gates may separate paid areas of the station from unpaid ones, or separate different payment areas within the same station from each other. This information can be used to avoid routing passengers through stations using shortcuts that would require passengers to make unnecessary payments, like directing a passenger to walk through a subway platform to reach a busway.
`7`- Exit gate: A pathway exiting a paid area into an unpaid area where proof of payment is not required to cross.| | `is_bidirectional` | Enum | **Required** | Indicates the direction that the pathway can be taken:

`0` - Unidirectional pathway that can only be used from `from_stop_id` to `to_stop_id`.
`1` - Bidirectional pathway that can be used in both directions.

Exit gates (`pathway_mode=7`) must not be bidirectional.| | `length` | Non-negative float | Optional | Horizontal length in meters of the pathway from the origin location (defined in `from_stop_id`) to the destination location (defined in `to_stop_id`).

This field is recommended for walkways (`pathway_mode=1`), fare gates (`pathway_mode=6`) and exit gates (`pathway_mode=7`).| From f27ee6aa8465549b00ac2522eaab18af820bcee7 Mon Sep 17 00:00:00 2001 From: Tzu-Jen Chan <126435471+tzujenchanmbd@users.noreply.github.com> Date: Tue, 4 Feb 2025 04:35:02 -0500 Subject: [PATCH 4/9] stop_access=0 clarification --- gtfs/spec/en/reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtfs/spec/en/reference.md b/gtfs/spec/en/reference.md index 6019407a..16610984 100644 --- a/gtfs/spec/en/reference.md +++ b/gtfs/spec/en/reference.md @@ -215,7 +215,7 @@ Primary key (`stop_id`) | `wheelchair_boarding` | Enum | Optional | Indicates whether wheelchair boardings are possible from the location. Valid options are:

For parentless stops:
`0` or empty - No accessibility information for the stop.
`1` - Some vehicles at this stop can be boarded by a rider in a wheelchair.
`2` - Wheelchair boarding is not possible at this stop.

For child stops:
`0` or empty - Stop will inherit its `wheelchair_boarding` behavior from the parent station, if specified in the parent.
`1` - There exists some accessible path from outside the station to the specific stop/platform.
`2` - There exists no accessible path from outside the station to the specific stop/platform.

For station entrances/exits:
`0` or empty - Station entrance will inherit its `wheelchair_boarding` behavior from the parent station, if specified for the parent.
`1` - Station entrance is wheelchair accessible.
`2` - No accessible path from station entrance to stops/platforms. | | `level_id` | Foreign ID referencing `levels.level_id` | Optional | Level of the location. The same level may be used by multiple unlinked stations.| | `platform_code` | Text | Optional | Platform identifier for a platform stop (a stop belonging to a station). This should be just the platform identifier (eg. "G" or "3"). Words like “platform” or "track" (or the feed’s language-specific equivalent) should not be included. This allows feed consumers to more easily internationalize and localize the platform identifier into other languages. | -| `stop_access` | Enum | **Conditionally Forbidden** | Indicates how the stop is accessed for a particular station. Valid options are:

`0` - The stop/platform is part of the main station structure or enclosed area, and is accessed via entrances and pathways of the parent station, if specified, or otherwise via the station itself.
`1` - The stop/platform is not part of the main station structure or enclosed area. Directions for access should be generated directly to the stop, independent of any entrances or pathways of the parent station.

When `stop_access` is empty, the access for the specified stop or platform is considered undefined.

**Conditionally Forbidden**:
- **Forbidden** for locations which are stations (`location_type=1`), entrances (`location_type=2`), generic nodes (`location_type=3`) or boarding areas (`location_type=4`).
- **Forbidden** if `parent_station` is empty.
- Optional otherwise. | +| `stop_access` | Enum | **Conditionally Forbidden** | Indicates how the stop is accessed for a particular station. Valid options are:

`0` - The stop/platform cannot be directly accessed from the street network. It must be accessed from a station entrance if there is one defined for the station, otherwise the station itself. If there are pathways defined for the station, they must be used to access the stop/platform.
`1` - The stop/platform is not part of the main station structure or enclosed area. Directions for access should be generated directly to the stop, independent of any entrances or pathways of the parent station.

When `stop_access` is empty, the access for the specified stop or platform is considered undefined.

**Conditionally Forbidden**:
- **Forbidden** for locations which are stations (`location_type=1`), entrances (`location_type=2`), generic nodes (`location_type=3`) or boarding areas (`location_type=4`).
- **Forbidden** if `parent_station` is empty.
- Optional otherwise. | ### routes.txt From efbd35cfcee647f181219ce1bf61c959a3c048f0 Mon Sep 17 00:00:00 2001 From: Tzu-Jen Chan <126435471+tzujenchanmbd@users.noreply.github.com> Date: Fri, 2 May 2025 10:30:31 -0400 Subject: [PATCH 5/9] Remove "The stop/platform is not part of the main station structure" --- gtfs/spec/en/reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtfs/spec/en/reference.md b/gtfs/spec/en/reference.md index 16610984..2e8a2223 100644 --- a/gtfs/spec/en/reference.md +++ b/gtfs/spec/en/reference.md @@ -215,7 +215,7 @@ Primary key (`stop_id`) | `wheelchair_boarding` | Enum | Optional | Indicates whether wheelchair boardings are possible from the location. Valid options are:

For parentless stops:
`0` or empty - No accessibility information for the stop.
`1` - Some vehicles at this stop can be boarded by a rider in a wheelchair.
`2` - Wheelchair boarding is not possible at this stop.

For child stops:
`0` or empty - Stop will inherit its `wheelchair_boarding` behavior from the parent station, if specified in the parent.
`1` - There exists some accessible path from outside the station to the specific stop/platform.
`2` - There exists no accessible path from outside the station to the specific stop/platform.

For station entrances/exits:
`0` or empty - Station entrance will inherit its `wheelchair_boarding` behavior from the parent station, if specified for the parent.
`1` - Station entrance is wheelchair accessible.
`2` - No accessible path from station entrance to stops/platforms. | | `level_id` | Foreign ID referencing `levels.level_id` | Optional | Level of the location. The same level may be used by multiple unlinked stations.| | `platform_code` | Text | Optional | Platform identifier for a platform stop (a stop belonging to a station). This should be just the platform identifier (eg. "G" or "3"). Words like “platform” or "track" (or the feed’s language-specific equivalent) should not be included. This allows feed consumers to more easily internationalize and localize the platform identifier into other languages. | -| `stop_access` | Enum | **Conditionally Forbidden** | Indicates how the stop is accessed for a particular station. Valid options are:

`0` - The stop/platform cannot be directly accessed from the street network. It must be accessed from a station entrance if there is one defined for the station, otherwise the station itself. If there are pathways defined for the station, they must be used to access the stop/platform.
`1` - The stop/platform is not part of the main station structure or enclosed area. Directions for access should be generated directly to the stop, independent of any entrances or pathways of the parent station.

When `stop_access` is empty, the access for the specified stop or platform is considered undefined.

**Conditionally Forbidden**:
- **Forbidden** for locations which are stations (`location_type=1`), entrances (`location_type=2`), generic nodes (`location_type=3`) or boarding areas (`location_type=4`).
- **Forbidden** if `parent_station` is empty.
- Optional otherwise. | +| `stop_access` | Enum | **Conditionally Forbidden** | Indicates how the stop is accessed for a particular station. Valid options are:

`0` - The stop/platform cannot be directly accessed from the street network. It must be accessed from a station entrance if there is one defined for the station, otherwise the station itself. If there are pathways defined for the station, they must be used to access the stop/platform.
`1` - Directions for access should be generated directly to the stop, independent of any entrances or pathways of the parent station.

When `stop_access` is empty, the access for the specified stop or platform is considered undefined.

**Conditionally Forbidden**:
- **Forbidden** for locations which are stations (`location_type=1`), entrances (`location_type=2`), generic nodes (`location_type=3`) or boarding areas (`location_type=4`).
- **Forbidden** if `parent_station` is empty.
- Optional otherwise. | ### routes.txt From 7be1c42ea20a6d9b941c083b114d73d2eaed27d7 Mon Sep 17 00:00:00 2001 From: Tzu-Jen Chan <126435471+tzujenchanmbd@users.noreply.github.com> Date: Fri, 13 Jun 2025 11:08:12 -0400 Subject: [PATCH 6/9] Modify pathways semantics --- gtfs/spec/en/reference.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gtfs/spec/en/reference.md b/gtfs/spec/en/reference.md index 2e8a2223..2a19027a 100644 --- a/gtfs/spec/en/reference.md +++ b/gtfs/spec/en/reference.md @@ -678,11 +678,14 @@ Files [pathways.txt](#pathwaystxt) and [levels.txt](levelstxt) use a graph repre To navigate from the station entrance/exit (a node represented as a location with `location_type=2`) to a platform (a node represented as a location with `location_type=0` or empty), the rider will move through walkways, fare gates, stairs, and other edges represented as pathways. Generic nodes (nodes represented with `location_type=3`) can be used to connect pathways throughout a station. -Pathways must be defined exhaustively in a station. If any pathways are defined, it is assumed that all pathways throughout the station are represented. Therefore, the following guidelines apply: +Pathways are intended to exhaustively define the internal access graph of a station. If any pathways are defined within a station, data consumers should assume that all relevant connections within that station are described. However, the optional `stop_access` field in `stops.txt` may be used to explicitly define whether a stop is accessible directly from the street network or through the station's defined pathways. Therefore, the following guidelines apply: -- No dangling locations: If any location within a station has a pathway, then all locations within that station should have pathways, except for platforms that have boarding areas (`location_type=4`, see guideline below). +- No dangling locations: If any location within a station has a pathway, then all locations within that station should have pathways, except + - Platforms that have boarding areas (`location_type=4`, see guideline below) + - Stops (`location_type=0` or empty) with `stops.stop_access=1` - No pathways for a platform with boarding areas: A platform (`location_type=0` or empty) that has boarding areas (`location_type=4`) is treated as a parent object, not a point. In such cases, the platform must not have pathways assigned. All pathways should be assigned for each of the platform's boarding areas. -- No locked platforms: Each platform (`location_type=0` or empty) or boarding area (`location_type=4`) must be connected to at least one entrance/exit (`location_type=2`) via some chain of pathways. Stations not allowing a pathway to the outside of the station from a given platform are rare. +- No locked platforms: If any location within a station has a pathway, each platform (`location_type=0` or empty) or boarding area (`location_type=4`) must be connected to at least one entrance/exit (`location_type=2`) via some chain of pathways — unless: + - The stop (`location_type=0` or empty) is explicitly marked with `stops.stop_access=1`, in which case it is assumed to be directly accessible from the street network. | Field Name | Type | Presence | Description | | ------ | ------ | ------ | ------ | From 90ed5c90b641668cbae0ee5bc5b3b9a4714b219b Mon Sep 17 00:00:00 2001 From: Tzu-Jen Chan <126435471+tzujenchanmbd@users.noreply.github.com> Date: Fri, 13 Jun 2025 11:29:15 -0400 Subject: [PATCH 7/9] Remove "outside station structure..." --- gtfs/spec/en/reference.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gtfs/spec/en/reference.md b/gtfs/spec/en/reference.md index 2a19027a..3f8c79b1 100644 --- a/gtfs/spec/en/reference.md +++ b/gtfs/spec/en/reference.md @@ -690,8 +690,8 @@ Pathways are intended to exhaustively define the internal access graph of a stat | Field Name | Type | Presence | Description | | ------ | ------ | ------ | ------ | | `pathway_id` | Unique ID | **Required** | Identifies a pathway. Used by systems as an internal identifier for the record. Must be unique in the dataset.

Different pathways may have the same values for `from_stop_id` and `to_stop_id`.
_Example: When two escalators are side-by-side in opposite directions, or when a stair set and elevator go from the same place to the same place, different `pathway_id` may have the same `from_stop_id` and `to_stop_id` values._| -| `from_stop_id` | Foreign ID referencing `stops.stop_id` | **Required** | Location at which the pathway begins.

Must contain a `stop_id` that identifies a platform (`location_type=0` or empty), entrance/exit (`location_type=2`), generic node (`location_type=3`) or boarding area (`location_type=4`).

Values for `stop_id` that identify stations (`location_type=1`) or stops (`location_type=0` or empty) outside the station structure (`stop_access=1`) are forbidden.| -| `to_stop_id` | Foreign ID referencing `stops.stop_id` | **Required** | Location at which the pathway ends.

Must contain a `stop_id` that identifies a platform (`location_type=0` or empty), entrance/exit (`location_type=2`), generic node (`location_type=3`) or boarding area (`location_type=4`).

Values for `stop_id` that identify stations (`location_type=1`) or stops (`location_type=0` or empty) outside the station structure (`stop_access=1`) are forbidden.| +| `from_stop_id` | Foreign ID referencing `stops.stop_id` | **Required** | Location at which the pathway begins.

Must contain a `stop_id` that identifies a platform (`location_type=0` or empty), entrance/exit (`location_type=2`), generic node (`location_type=3`) or boarding area (`location_type=4`).

Values for `stop_id` that identify stations (`location_type=1`) or stops (`location_type=0` or empty) with `stop_access=1` are forbidden.| +| `to_stop_id` | Foreign ID referencing `stops.stop_id` | **Required** | Location at which the pathway ends.

Must contain a `stop_id` that identifies a platform (`location_type=0` or empty), entrance/exit (`location_type=2`), generic node (`location_type=3`) or boarding area (`location_type=4`).

Values for `stop_id` that identify stations (`location_type=1`) or stops (`location_type=0` or empty) with `stop_access=1` are forbidden.| | `pathway_mode` | Enum | **Required** | Type of pathway between the specified (`from_stop_id`, `to_stop_id`) pair. Valid options are:

`1` - Walkway.
`2` - Stairs.
`3` - Moving sidewalk/travelator.
`4` - Escalator.
`5` - Elevator.
`6` - Fare gate (or payment gate): A pathway that crosses into an area of the station where proof of payment is required to cross. Fare gates may separate paid areas of the station from unpaid ones, or separate different payment areas within the same station from each other. This information can be used to avoid routing passengers through stations using shortcuts that would require passengers to make unnecessary payments, like directing a passenger to walk through a subway platform to reach a busway.
`7`- Exit gate: A pathway exiting a paid area into an unpaid area where proof of payment is not required to cross.| | `is_bidirectional` | Enum | **Required** | Indicates the direction that the pathway can be taken:

`0` - Unidirectional pathway that can only be used from `from_stop_id` to `to_stop_id`.
`1` - Bidirectional pathway that can be used in both directions.

Exit gates (`pathway_mode=7`) must not be bidirectional.| | `length` | Non-negative float | Optional | Horizontal length in meters of the pathway from the origin location (defined in `from_stop_id`) to the destination location (defined in `to_stop_id`).

This field is recommended for walkways (`pathway_mode=1`), fare gates (`pathway_mode=6`) and exit gates (`pathway_mode=7`).| From 1039d2a8a488b2cdc3cb241b2e5cc1cc468c0fe0 Mon Sep 17 00:00:00 2001 From: Tzu-Jen Chan <126435471+tzujenchanmbd@users.noreply.github.com> Date: Wed, 17 Sep 2025 09:11:58 -0400 Subject: [PATCH 8/9] Clarify subject for stop_access=1 Co-authored-by: Weston Shippy <57922264+westontrillium@users.noreply.github.com> --- gtfs/spec/en/reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtfs/spec/en/reference.md b/gtfs/spec/en/reference.md index 3f8c79b1..5b768249 100644 --- a/gtfs/spec/en/reference.md +++ b/gtfs/spec/en/reference.md @@ -215,7 +215,7 @@ Primary key (`stop_id`) | `wheelchair_boarding` | Enum | Optional | Indicates whether wheelchair boardings are possible from the location. Valid options are:

For parentless stops:
`0` or empty - No accessibility information for the stop.
`1` - Some vehicles at this stop can be boarded by a rider in a wheelchair.
`2` - Wheelchair boarding is not possible at this stop.

For child stops:
`0` or empty - Stop will inherit its `wheelchair_boarding` behavior from the parent station, if specified in the parent.
`1` - There exists some accessible path from outside the station to the specific stop/platform.
`2` - There exists no accessible path from outside the station to the specific stop/platform.

For station entrances/exits:
`0` or empty - Station entrance will inherit its `wheelchair_boarding` behavior from the parent station, if specified for the parent.
`1` - Station entrance is wheelchair accessible.
`2` - No accessible path from station entrance to stops/platforms. | | `level_id` | Foreign ID referencing `levels.level_id` | Optional | Level of the location. The same level may be used by multiple unlinked stations.| | `platform_code` | Text | Optional | Platform identifier for a platform stop (a stop belonging to a station). This should be just the platform identifier (eg. "G" or "3"). Words like “platform” or "track" (or the feed’s language-specific equivalent) should not be included. This allows feed consumers to more easily internationalize and localize the platform identifier into other languages. | -| `stop_access` | Enum | **Conditionally Forbidden** | Indicates how the stop is accessed for a particular station. Valid options are:

`0` - The stop/platform cannot be directly accessed from the street network. It must be accessed from a station entrance if there is one defined for the station, otherwise the station itself. If there are pathways defined for the station, they must be used to access the stop/platform.
`1` - Directions for access should be generated directly to the stop, independent of any entrances or pathways of the parent station.

When `stop_access` is empty, the access for the specified stop or platform is considered undefined.

**Conditionally Forbidden**:
- **Forbidden** for locations which are stations (`location_type=1`), entrances (`location_type=2`), generic nodes (`location_type=3`) or boarding areas (`location_type=4`).
- **Forbidden** if `parent_station` is empty.
- Optional otherwise. | +| `stop_access` | Enum | **Conditionally Forbidden** | Indicates how the stop is accessed for a particular station. Valid options are:

`0` - The stop/platform cannot be directly accessed from the street network. It must be accessed from a station entrance if there is one defined for the station, otherwise the station itself. If there are pathways defined for the station, they must be used to access the stop/platform.
`1` - Consuming applications should generate directions for access directly to the stop, independent of any entrances or pathways of the parent station.

When `stop_access` is empty, the access for the specified stop or platform is considered undefined.

**Conditionally Forbidden**:
- **Forbidden** for locations which are stations (`location_type=1`), entrances (`location_type=2`), generic nodes (`location_type=3`) or boarding areas (`location_type=4`).
- **Forbidden** if `parent_station` is empty.
- Optional otherwise. | ### routes.txt From b30b716af8c92fcf0eb48d856e5a00f9c5e56bf3 Mon Sep 17 00:00:00 2001 From: Tzu-Jen Chan <126435471+tzujenchanmbd@users.noreply.github.com> Date: Thu, 18 Sep 2025 17:32:11 -0400 Subject: [PATCH 9/9] Add comma to avoid potential confusion --- gtfs/spec/en/reference.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gtfs/spec/en/reference.md b/gtfs/spec/en/reference.md index 5b768249..775c7225 100644 --- a/gtfs/spec/en/reference.md +++ b/gtfs/spec/en/reference.md @@ -690,8 +690,8 @@ Pathways are intended to exhaustively define the internal access graph of a stat | Field Name | Type | Presence | Description | | ------ | ------ | ------ | ------ | | `pathway_id` | Unique ID | **Required** | Identifies a pathway. Used by systems as an internal identifier for the record. Must be unique in the dataset.

Different pathways may have the same values for `from_stop_id` and `to_stop_id`.
_Example: When two escalators are side-by-side in opposite directions, or when a stair set and elevator go from the same place to the same place, different `pathway_id` may have the same `from_stop_id` and `to_stop_id` values._| -| `from_stop_id` | Foreign ID referencing `stops.stop_id` | **Required** | Location at which the pathway begins.

Must contain a `stop_id` that identifies a platform (`location_type=0` or empty), entrance/exit (`location_type=2`), generic node (`location_type=3`) or boarding area (`location_type=4`).

Values for `stop_id` that identify stations (`location_type=1`) or stops (`location_type=0` or empty) with `stop_access=1` are forbidden.| -| `to_stop_id` | Foreign ID referencing `stops.stop_id` | **Required** | Location at which the pathway ends.

Must contain a `stop_id` that identifies a platform (`location_type=0` or empty), entrance/exit (`location_type=2`), generic node (`location_type=3`) or boarding area (`location_type=4`).

Values for `stop_id` that identify stations (`location_type=1`) or stops (`location_type=0` or empty) with `stop_access=1` are forbidden.| +| `from_stop_id` | Foreign ID referencing `stops.stop_id` | **Required** | Location at which the pathway begins.

Must contain a `stop_id` that identifies a platform (`location_type=0` or empty), entrance/exit (`location_type=2`), generic node (`location_type=3`) or boarding area (`location_type=4`).

Values for `stop_id` that identify stations (`location_type=1`), or stops (`location_type=0` or empty) with `stop_access=1`, are forbidden.| +| `to_stop_id` | Foreign ID referencing `stops.stop_id` | **Required** | Location at which the pathway ends.

Must contain a `stop_id` that identifies a platform (`location_type=0` or empty), entrance/exit (`location_type=2`), generic node (`location_type=3`) or boarding area (`location_type=4`).

Values for `stop_id` that identify stations (`location_type=1`), or stops (`location_type=0` or empty) with `stop_access=1`, are forbidden.| | `pathway_mode` | Enum | **Required** | Type of pathway between the specified (`from_stop_id`, `to_stop_id`) pair. Valid options are:

`1` - Walkway.
`2` - Stairs.
`3` - Moving sidewalk/travelator.
`4` - Escalator.
`5` - Elevator.
`6` - Fare gate (or payment gate): A pathway that crosses into an area of the station where proof of payment is required to cross. Fare gates may separate paid areas of the station from unpaid ones, or separate different payment areas within the same station from each other. This information can be used to avoid routing passengers through stations using shortcuts that would require passengers to make unnecessary payments, like directing a passenger to walk through a subway platform to reach a busway.
`7`- Exit gate: A pathway exiting a paid area into an unpaid area where proof of payment is not required to cross.| | `is_bidirectional` | Enum | **Required** | Indicates the direction that the pathway can be taken:

`0` - Unidirectional pathway that can only be used from `from_stop_id` to `to_stop_id`.
`1` - Bidirectional pathway that can be used in both directions.

Exit gates (`pathway_mode=7`) must not be bidirectional.| | `length` | Non-negative float | Optional | Horizontal length in meters of the pathway from the origin location (defined in `from_stop_id`) to the destination location (defined in `to_stop_id`).

This field is recommended for walkways (`pathway_mode=1`), fare gates (`pathway_mode=6`) and exit gates (`pathway_mode=7`).|