Skip to main content

CLI tool for visualizing GDALG workflows

Project description

gdalgviz

A Python library to visualise GDAL pipelines.

Installation

Requires graphviz to be installed on the system and available on the system PATH. See the installation instructions for your operating system.

GDAL itself is not required to be installed to use this library, as it only visualises the pipeline, it does not execute it.

On Linux (example installation):

apt update
apt install graphviz --yes
dot -V
apt install pipx --yes
pipx ensurepath
pipx install gdalgviz
# for Docker images
# export PATH="$HOME/.local/bin:$PATH"
gdalgviz --version
gdalgviz --pipeline "gdal vector pipeline ! read in.gpkg ! reproject --dst-crs=EPSG:32632 ! select --fields fid,geom" pipeline.svg

On Windows (assuming pip and Python are on the system PATH):

$GVIZ_PATH = "C:\Program Files\Graphviz\bin"
$env:PATH = "$GVIZ_PATH;$env:PATH"
dot -V
pip install gdalgviz
gdalgviz --version
gdalgviz --pipeline "gdal vector pipeline ! read in.gpkg ! reproject --dst-crs=EPSG:32632 ! select --fields fid,geom" pipeline.svg

Usage

usage: gdalgviz [-h] [--pipeline PIPELINE] [--vertical] [--font FONT] [--header-color HEADER_COLOR] [--version] [--docs-root DOCS_ROOT] [input_path] output_path

Visualize GDAL datasets from the command line

positional arguments:
  input_path            Path to a GDALG pipeline in JSON or text format
  output_path           Path to save the generated diagram (e.g., output.svg)

options:
  -h, --help            show this help message and exit
  --pipeline PIPELINE   Provide a raw GDALG pipeline string instead of a file
  --vertical            Render the diagram top-to-bottom instead of left-to-right
  --font FONT           Font name for diagram nodes (default: Helvetica)
  --header-color HEADER_COLOR
                        Background color for node headers as a hex color code (default: #cfe2ff)
  --version             show program's version number and exit
  --docs-root DOCS_ROOT
                        Root URL for GDAL documentation links(default: https://gdal.org/en/latest/programs)

Examples

Passing a pipeline as a JSON file (tee.json):

gdalgviz ./examples/tee.json ./examples/tee.svg

Workflow Diagram

Passing a pipeline as a string:

gdalgviz --pipeline "gdal vector pipeline ! read in.gpkg ! reproject --dst-crs=EPSG:32632 ! select --fields fid,geom" pipeline.svg

Workflow Diagram

Using the vertical layout option, with a custom font and header colour:

gdalgviz ./examples/tee.json ./examples/tee-custom.svg --vertical --font "Courier" --header-color "#ffdd99"

Custom Workflow Diagram

Features

  • Handles both JSON and text input. See JSON Schema for the required JSON structure.
  • SVG output supports clickable nodes that link to the corresponding GDAL documentation for each command. See the example.
  • Supports nested pipelines. These allow sub-pipelines to be run in parallel and merged later.
  • Supports tee - the operation is named "tee" because it splits the stream, like the letter "T": one input, multiple outputs, and allows saving of intermediate results

This library does not execute the GDAL pipeline, it only visualizes it. The actual execution of the pipeline is done by GDAL itself.

from osgeo import gdal

gdal.UseExceptions()
with gdal.alg.pipeline(pipeline="read byte.tif ! reproject --dst-crs EPSG:4326 --resampling cubic") as alg:
    ds = alg.Output()

Development

pip install -e .[dev]
black .
ruff check . --fix
# mypy .
pytest tests
gdalgviz ./examples/tee.json ./examples/tee.svg
gdalgviz --pipeline "gdal vector pipeline ! read in.gpkg ! reproject --dst-crs=EPSG:32632 ! select --fields fid,geom" ./examples/pipeline.svg

RoadMap

  • Add JSON schema validation
  • Add colour coding of the graph depending on if the command is raster, vector etc.
  • Add types to the codebase
  • Add pipeline command formatting

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

gdalgviz-0.2.0.tar.gz (15.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gdalgviz-0.2.0-py3-none-any.whl (12.6 kB view details)

Uploaded Python 3

File details

Details for the file gdalgviz-0.2.0.tar.gz.

File metadata

  • Download URL: gdalgviz-0.2.0.tar.gz
  • Upload date:
  • Size: 15.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gdalgviz-0.2.0.tar.gz
Algorithm Hash digest
SHA256 fb655aa9239b6a0a15ef469001d0384a00c23c094aa872f16815a8d8cdcbe0ca
MD5 4e2b3e5a70ed00b62af8e4a7ec2beefb
BLAKE2b-256 96974553296868b4846989d0fa051be77ab240044dd2ee0ba2d34502d98948d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for gdalgviz-0.2.0.tar.gz:

Publisher: main.yml on geographika/gdalgviz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gdalgviz-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: gdalgviz-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 12.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gdalgviz-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 29d34ce4fa38a59306578e9f48967a6a5e0b1b0da6bd12c9259389ed656fde30
MD5 7b3e8260af53317bb8eab8d36d83fd64
BLAKE2b-256 6b01e4d5a365332ae8c4b7f90ddcd9d7ed390084c333ed339876e4b537b4cc6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for gdalgviz-0.2.0-py3-none-any.whl:

Publisher: main.yml on geographika/gdalgviz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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