Skip to main content

GISGEARS

A collection of Python tools for GIS/hydrology raster and vector analysis.

WhiteboxTools: wsdgen depends on the WhiteboxTools executable, which the whitebox Python package downloads automatically the first time it runs.

Installation

pip install gisgears

Features

  • wsdgen: Delineate a watershed from a DEM and an outlet layer (point or line)
  • wsdpyshed: Delineate a watershed and stream network from a DEM and an outlet (point or line) using pysheds (no WhiteboxTools needed)
  • wsdsmooth: Smooth the boundary of a watershed polygon shapefile
  • showtif: Display a DEM GeoTIFF with an elevation colormap and hillshade
  • showshp: Display one or more shapefiles overlaid on a single map
  • showtable: Print the attribute table of a shapefile or GeoPackage layer

Usage

Command-line

# List all available commands
gisgears-info

# Delineate a watershed from a point outlet
wsdgen --dem dem.tif --outlet outlet.shp

# Delineate a watershed from a line outlet (e.g. a cross-section), keeping intermediates
wsdgen --dem dem.tif --outlet crosssection.shp --all-outputs

# Use a coarser/finer boundary-smoothing filter
wsdgen --dem dem.tif --outlet outlet.shp --smooth-filter 15

# Delineate with pysheds from a pour point shapefile or x/y coordinates
wsdpyshed --dem dem.tif --outlet pourpoint.shp
wsdpyshed --dem dem.tif --outlet crosssection.shp   # line outlet
wsdpyshed --dem dem.tif --xy 285612.0 2936416.7 --acc-threshold 500 --plot

# Smooth a watershed boundary (default filter 9, written to WSD/<name>_smooth.shp)
wsdsmooth WSD/watershed.shp
wsdsmooth watershed.shp --filter 15 -o basin_smooth.shp

# Inspect a DEM (prints CRS/size/stats, plots elevation + hillshade)
showtif dem.tif

# Overlay shapefiles on one map, labelling features by a column
showshp WSD/watershed.shp outlet.shp -l Station

# Print an attribute table (selected columns, with geometry as WKT)
showtable thiessen.shp -c Station -g
showtable data.gpkg -l roads -n 20
showtable data.gpkg --list-layers

Python API

from gisgears import wsdgen

# Delineate a watershed (written to WSD/watershed.tif, watershed.shp, watershed_smooth.shp)
wsdgen.delineate_watershed(dem="dem.tif", outlet="outlet.shp")

from gisgears import wsdpyshed

# Same idea with pysheds; also writes dem_clipped.tif and streams.gpkg/.geojson to WSD/
wsdpyshed.delineate_watershed(dem="dem.tif", outlet="pourpoint.shp", acc_threshold=200)

from gisgears import wsdsmooth

# Smooth a watershed boundary (written to WSD/watershed_smooth.shp)
wsdsmooth.smooth_watershed("WSD/watershed.shp", filter_size=9)

from gisgears import showtif, showshp, showtable

showtif.show_dem("dem.tif")
showshp.show_shapefiles(["WSD/watershed.shp", "outlet.shp"], label="Station")
table = showtable.show_table("thiessen.shp", columns=["Station"])  # returns a DataFrame
layers = showtable.list_layers("data.gpkg")  # [(name, geometry type), ...]

Notes

  • The outlet layer may be a point shapefile (a single manually-marked outlet) or a line shapefile (e.g. a cross-section at the watershed outlet); wsdgen detects the geometry type automatically.
  • By default only the final watershed.tif, watershed.shp and watershed_smooth.shp are written to the WSD/ output directory; pass --all-outputs to also keep intermediate files (breached DEM, D8 pointer, flow accumulation, snapped outlet, etc.) there instead of a temporary folder.
  • wsdpyshed takes a point or line outlet (--outlet, reprojected to the DEM's CRS if needed; pick a feature with --outlet-index) or coordinates (--xy). The pour point is snapped to the nearest cell whose flow accumulation exceeds --acc-threshold (default 200, also used for the stream network) unless --no-snap is given. A line outlet (e.g. a cross-section) is rasterized and the watershed is everything draining to any cell it crosses; if it crosses no stream cell, its highest-accumulation cell is snapped like a point. Outputs go to WSD/ by default: watershed.tif, watershed.shp, dem_clipped.tif, streams.gpkg and streams.geojson; --all-outputs adds the conditioned DEM, flow direction and flow accumulation rasters, and --web-map writes streams_map.html (requires folium and mapclassify).

Metadata

Release files for gisgears 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gisgears 0.5.0
File Size Uploaded Provenance
gisgears-0.5.0.tar.gz 18.6 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for gisgears 0.5.0
File Interpreter ABI Platform
gisgears-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 41.2 kB

Release files / gisgears-0.5.0.tar.gz

Download URL gisgears-0.5.0.tar.gz
Size 18.6 kB
Tags Source
SHA-256 checksum
How to use checksums
2c8f8a0b6885d6df619fb47955249d1bd59199d5fdabcf79af3f1fb80830fbf3
BLAKE2b-256 checksum
How to use checksums
29c70abd347b7d4db4a0aa1d9ad26c9e8c7e0fe4d2ca49ad267224960493a398
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / gisgears-0.5.0-py3-none-any.whl

Download URL gisgears-0.5.0-py3-none-any.whl
Size 22.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ec5e5a23b4b9922e702c121c9528e6350e7d53fd2b7a9d8e3509f9bddcd40ed8
BLAKE2b-256 checksum
How to use checksums
417c57895cb03ac357e43b79e0312a23b0981a3a08899384eba0149aaa2a71b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Security for gisgears 0.5.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for gisgears-0.5.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page