Skip to main content

FastAPI app providing GRFS generation for Amarillo carpools

Project description

amarillo-grfs -generator

Generate Generate GRFS (General Ridesharing Feed Specification) from Amarillo carpools as standalone (Docker) service.

GRFS is an extension of the GTFS standard that adds additional info to aid ridesharing.

This service complements the Amarillo application, creating GRFS and GTFS-RT data from the enhanced Amarillo carpool files. It is a non-public backend service called from the Amarillo FastAPI application. You can run it as part of docker compose, or separately using the instructions below.

Overview

Amarillo GTFS generation overview

Usage

1. Configuration

Create data/stop_sources.json

Example contents:

[
    {"url": "https://datahub.bbnavi.de/export/rideshare_points.geojson", "vicinity": 50},
    {"url": "https://data.mfdz.de/mfdz/stops/stops_zhv.csv", "vicinity": 50},
    {"url": "https://data.mfdz.de/mfdz/stops/parkings_osm.csv", "vicinity": 500}
]

Add region files data/region

File name should be {region_id}.json.

Example (by.json):

{"id": "by", "bbox": [ 8.97, 47.28, 13.86, 50.56]}

For each region a separate GTFS zip file will be created in /data/gtfs, only containing the trips that intersect the region's bounding box.

Add agency files data/agency

File name should be {agency_id}.json.

Example (mfdz.json):

{
  "id": "mfdz",
  "name": "MITFAHR|DE|ZENTRALE",
  "url": "http://mfdz.de",
  "timezone": "Europe/Berlin",
  "lang": "de",
  "email": "info@mfdz.de"
}

The generator will use this data to populate agency.txt in the GTFS output.

Uvicorn configuration

amarillo-gtfs-generator uses uvicorn to run. Uvicorn can be configured as normal by passing in arguments such as --port 8002 to change the port number.

2. Install the gtfs-exporter plugin for Amarillo

This is a separate service and not used by Amarillo by default. You should use the amarillo-gtfs-exporter plugin which creates endpoints for /region/{region_id}/gtfs and /region/{region_id}/gtfs-rt on your Amarillo instance. These will serve the GTFS zip files from data/gtfs, or if they do not exist yet, they will call the configured generator and cache the results.

3. Add carpools to Amarillo

Use Amarillo's /carpool endpoint to create new carpools. The generator listens to file system events in the /data/enhanced folder to recognize newly added or deleted carpools. It will also discover existing carpools on startup. GTFS generation happens automatically on startup, at midnight on a schedule, and by sending a GET request to a /region/{region_id}/gtfs or /region/{region_id}/gtfs-rt endpoint.

Amarillo will use its configured enhancer to create enhanced carpool files. They will get picked up by the generator and they will be included in the next batch of generated GTFS data. Changes to carpools will be reflected immediately in the GTFS-RT output.

Run with uvicorn

  • Python 3.10 with pip
  • python3-venv

Create a virtual environment python3 -m venv venv.

Activate the environment and install the dependencies pip install -r requirements.txt.

Run uvicorn amarillo_gtfs_generator.gtfs_generator:app.

In development, you can use --reload.

Run with docker

You can download a container image from the MFDZ package registry.

Example command:

docker run -it --rm --name amarillo-gtfs-generator -p 8002:80 -e TZ=Europe/Berlin -v $(pwd)/data:/app/data amarillo-gtfs-generator```

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

amarillo_grfs_generator-2.0.1.tar.gz (63.0 kB view details)

Uploaded Source

Built Distribution

amarillo_grfs_generator-2.0.1-py3-none-any.whl (55.9 kB view details)

Uploaded Python 3

File details

Details for the file amarillo_grfs_generator-2.0.1.tar.gz.

File metadata

File hashes

Hashes for amarillo_grfs_generator-2.0.1.tar.gz
Algorithm Hash digest
SHA256 803644210df8f0f9053cd38625dd5c84e34aca2c48d87b33ca991d18437bb741
MD5 a9e1e7081ae48d3bd04815e27a07cff5
BLAKE2b-256 081919046c488e12350a5249571a4f4d09af3d7530c35a063758b74b39d8e0b5

See more details on using hashes here.

File details

Details for the file amarillo_grfs_generator-2.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for amarillo_grfs_generator-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f1f42f19b8a59625bf02632e579f59de9aa21d7e5ad22d3e7df68c61e02926a0
MD5 3bc35e85a1125fa692e3200f475e5168
BLAKE2b-256 df716d8369e38a2dd4c90691a1dee669752b5dd6fb087be85575c17c494470d9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page