Skip to main content

High-performance Python library for hydrological terrain analysis with parallel, tiled algorithms

Project description

Overflow

Tests Documentation PyPI Python Version License: MIT

Warning: This software is currently in alpha status. While functional, it may contain bugs and undergo breaking changes. See the documentation for more details.

Overflow is a high-performance Python library for hydrological terrain analysis that specializes in processing massive Digital Elevation Models (DEMs) through parallel, tiled algorithms.

Overview

Overflow provides a complete toolchain for extracting hydrographic features from raw elevation data:

  • Terrain Conditioning: Breach and fill depressions in DEMs
  • Flow Routing: Calculate D8 flow direction with flat resolution and flow accumulation
  • Feature Extraction: Extract stream networks, delineate basins, and compute flow lengths

Unlike traditional GIS tools that rely on virtual memory, Overflow uses sophisticated tiled algorithms with parallel processing to handle datasets of any size efficiently.

Key Features

  • Highly Parallel: Every algorithm designed for parallel execution using Numba.
  • Memory Efficient: Process DEMs larger than RAM through tiled algorithms with efficient I/O patterns.
  • Scalable: Fixed number of passes over data regardless of size. Every operation is designed to scale from laptop-sized datasets to continental DEMs without requiring specialized hardware.
  • Accurate: Maintains correctness across tile boundaries using graph-based approaches. The algorithms produce results that are equivalent to authoritative methods used throughout the hydrological community.
  • Modern Algorithms: Implements state-of-the-art priority-flood filling, least-cost breaching, and flat resolution algorithms

Quick Start

Installation

# Create conda environment with system dependencies
conda create -n overflow python gdal -c conda-forge
conda activate overflow

# Install overflow from PyPI
pip install overflow-hydro

Basic Usage

Python API

import overflow

# Process a DEM through the complete pipeline
overflow.breach("input.tif", "breached.tif")
overflow.fill("breached.tif", "filled.tif")
overflow.flow_direction("filled.tif", "flowdir.tif")
overflow.accumulation("flowdir.tif", "flowacc.tif")
overflow.streams("flowacc.tif", "flowdir.tif", "streams/")
overflow.basins("flowdir.tif", "basins.tif")

Command Line Interface

# Run the complete pipeline
overflow pipeline \
    --dem_file input.tif \
    --output_dir ./results

# Or run individual steps
overflow breach input.tif breached.tif
overflow fill breached.tif filled.tif
overflow flow-direction filled.tif flowdir.tif
overflow accumulation flowdir.tif flowacc.tif

Docker

docker pull ghcr.io/fema-ffrd/overflow:latest

docker run -v $(pwd):/data ghcr.io/fema-ffrd/overflow:latest \
    pipeline --dem_file /data/input.tif --output_dir /data/results

Documentation

For detailed documentation, algorithm descriptions, and API reference, visit:

https://fema-ffrd.github.io/overflow/

Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

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

overflow_hydro-0.3.2.tar.gz (99.9 kB view details)

Uploaded Source

Built Distribution

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

overflow_hydro-0.3.2-py3-none-any.whl (121.3 kB view details)

Uploaded Python 3

File details

Details for the file overflow_hydro-0.3.2.tar.gz.

File metadata

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

File hashes

Hashes for overflow_hydro-0.3.2.tar.gz
Algorithm Hash digest
SHA256 7bcdcc3c46321e6503907863b205ca587f03328303dc97c3126977e0d1fc7e72
MD5 140adbfdd299cf2122c03f46cd74973c
BLAKE2b-256 bdf8479568e1da48867d12c0c1ff10375746921b9b573ac95f894d0473a4d49d

See more details on using hashes here.

Provenance

The following attestation bundles were made for overflow_hydro-0.3.2.tar.gz:

Publisher: pypi-publish.yml on fema-ffrd/overflow

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

File details

Details for the file overflow_hydro-0.3.2-py3-none-any.whl.

File metadata

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

File hashes

Hashes for overflow_hydro-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2808e9181e84b18c091a04db4bc495d5b738f9648dfc453978f5e3e69d968932
MD5 4ebfbfec560024fc3e02ed237b6e145a
BLAKE2b-256 34e3c47cf2a93173f360adec5080f355f74070ca9282680ba334dcc485997d0a

See more details on using hashes here.

Provenance

The following attestation bundles were made for overflow_hydro-0.3.2-py3-none-any.whl:

Publisher: pypi-publish.yml on fema-ffrd/overflow

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