Skip to main content

GTFS command-line tool and Python GTFS utility library

Project description

gtfsutils

GTFS command-line tool and Python GTFS utility library

Installation

To install the package from PyPi:

pip install gtfsutils

To install the development version from GitHub:

git clone git@github.com:triply-at/gtfsutils.git
cd gtfsutils
pip install -e .  # Install in editable mode

Usage

Python package

The usage of the Python package is illustrated in quickstart.ipynb.

Command-line tool

The package can be also used as a command-line tool. There are three sub-tools available.

Filter

The filter tool applies a spatial filter to a GTFS file. You can either filter based on stop locations or on trip shapes. The filter can be specified either as a bounding box (xmin, ymin, xmax, ymax) or as a file path (e.g. to a GeoJSON or GPKG file).

Here is how to spatially filter a GTFS file based on stop locations, using a bounding box:

gtfsutils filter -t stops data/vienna.gtfs.zip data/vienna-filtered.gtfs.zip "[16.197, 47.999, 16.549, 48.301]"

Here is how to spatially filter a GTFS file based on trip shapes, using a GeoJSON file:

gtfsutils filter -t shapes data/vienna.gtfs.zip data/vienna-filtered.gtfs.zip data/area.geojson

For more information, type:

gtfsutils filter --help
usage: gtfsutils filter [-h] [-t TARGET] [-o OPERATION] [--overwrite] [-v] src dst bounds

positional arguments:
  src                   Input GTFS filepath
  dst                   Output GTFS filepath
  bounds                Filter boundary

optional arguments:
  -h, --help            show this help message and exit
  -t TARGET, --target TARGET
                        Filter target (stops, shapes)
  -o OPERATION, --operation OPERATION
                        Filter operation (within, intersects)
  --overwrite           Overwrite if exists
  -v, --verbose         Verbose output

Bounds

The bounds tool computes the bounding box (based on stop locations) of a GTFS file:

gtfsutils bounds data/vienna.gtfs.zip
[16.1977025532707, 47.9995020902886, 16.5494019702052, 48.3011051975429]

For more information, type:

gtfsutils bounds --help
usage: gtfsutils bounds [-h] src

positional arguments:
  src         Input GTFS filepath

optional arguments:
  -h, --help  show this help message and exit

Info

The info tool print general information about a GTFS file:

gtfsutils info data/vienna.gtfs.zip
GTFS files:
  agency.txt                      2 rows
  calendar.txt                  186 rows
  calendar_dates.txt          9,575 rows
  routes.txt                    441 rows
  shapes.txt                401,371 rows
  stop_times.txt          3,733,781 rows
  stops.txt                   4,510 rows
  trips.txt                 201,042 rows

Calender date range:
  11.12.2022 - 09.12.2023

Bounding box:
  [16.1977025532707, 47.9995020902886, 16.5494019702052, 48.3011051975429]

For more information, type:

gtfsutils info --help
usage: gtfsutils info [-h] src

positional arguments:
  src         Input GTFS filepath

optional arguments:
  -h, --help  show this help message and exit

Testing

Prepare dev environment with:

# Create virtual environement
python -m venv ./venv

# Install dependencies
pip install -r requirements-dev.txt
pip install -r requirements.txt

# Activate virtual environment
source venv/bin/activate

To run unit tests, type:

pytest -v

License

This project is licensed under the MIT license. See the LICENSE for details.

Download files

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

Source Distribution

gtfsutils-0.0.5.tar.gz (10.4 kB view hashes)

Uploaded Source

Built Distribution

gtfsutils-0.0.5-py3-none-any.whl (10.0 kB view hashes)

Uploaded Python 3

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