Compute a transit service area from static GTFS. Results are output as single-layer .geojson files.
NOTE: The functionality in this tool has been incorporated into the upstream gtfs-to-geojson. This repo is now read-only and is no longer maintained.
The example directory contains output using GTFS data from Big Blue Bus and Monterey-Salinas Transit, with settings from the sample config file in this repository.
Create a configuration file from the sample:
cp config.sample.json config.jsonEdit the collection of agencies as needed:
"agencies": [
{
"agency_key": "agency1",
"url": "https://www.agency1.com/gtfs.zip"
},
{
"agency_key": "agency2",
"url": "https://www.agency2.com/gtfs.zip"
}
],Option 1: Use docker-compose
docker-compose run pipelineOption 2: Use npm
-
Install dependencies:
npm install
-
Run the generator:
npm start
Check the geojson directory for output:
.
├── geojson
│ ├── agency1
│ │ ├── agency1-routes.geojson <-- GTFS route lines
│ │ ├── agency1-stops.geojson <-- GTFS route stops
│ │ ├── agency1-service-area-1.geojson <-- Computed service area(s)
│ │ └── agency1-service-area-2.geojson
│ ├── agency2
│ │ ├── agency2-routes.geojson <-- GTFS route lines
│ │ ├── agency2-stops.geojson <-- GTFS route stops
│ │ ├── agency2-service-area-1.geojson <-- Computed service area(s)
│ │ └── agency2-service-area-2.geojsonThis tool calculates service area using a number of different methods:
| Type | Description |
|---|---|
envelope |
Bounding box around routes lines |
convex |
Convex hull around route endpoints |
stops |
Buffer around stops |
stops-dissolved |
Dissolve the buffer around stops |
The configuration file allows for specifying which service area calculation(s) are used, per-agency and/or on the run as a whole, with the serviceAreas key:
{
"agencies": [
{
"agency_key": "agency1",
"url": "https://www.agency1.com/gtfs.zip",
},
{
"agency_key": "agency2",
"url": "https://www.agency2.com/gtfs.zip",
"serviceAreas": [
"stops"
]
}
],
"serviceAreas": [
"envelope",
"convex",
"stops",
"stops-dissolved"
]
}In the above example:
agency1: all 4 service area calculations from the top-levelserviceAreaswill run as no override was specified.agency2: the top-levelserviceAreashave been overridden and only thestopscalculation will run.
For the stops and stops-dissolved calculation, an additional configuration key bufferRadiusMeters can be specified, either at the top-level or per-agency, to control the radius of buffers (in meters):
{
"agencies": [
{
"agency_key": "agency1",
"url": "https://www.agency1.com/gtfs.zip",
"serviceAreas": [
"stops"
]
},
{
"agency_key": "agency2",
"url": "https://www.agency2.com/gtfs.zip",
"serviceAreas": [
"stops-dissolved"
],
"bufferSizeMeters": 750
}
],
"bufferSizeMeters": 400
}In the above example:
agency1: calculate a 400 meter buffer around stops, using the top-levelbufferSizeMeters.agency2: calculate a 750 meter buffer around stops, using the overridebufferSizeMeters.
The configuration data is passed through to gtfs-to-geojson, and you may use any of the supported options.
Note that this project may override some options as necessary for calculating service areas.