Skip to main content

hydrocivil: a package for hydrological methods in civil and enviromental engineering

Typical tasks related to water resources and engineering require quick calculations of hydrological phenomena such as: storm hyetographs, soil infiltration, flood hydrographs, flood routing through channels or reservoirs, etc. With this purpose in mind, the package is presented as an alternative to perform calculations that are usually done in tedious spreadsheets in a fast pythonic way. The purpose is to give tools to the engineer to calculate hydrologic processes with methods and techniques he/she deems convenient, such as different varieties of synthetic unit hydrographs, synthetic storms or basin geomorphometric parameters. The package isnt intended to be a replacement of larger hydrological models (e.g. HEC-HMS), but rather a fast customizable and automatic alternative for multi-basin calculations.

The package is largely oriented to Chilean national standards, however many methods originally come from the USA NCRS National Engineering Handbook.

Dependencies

Before installing, check your environment for the following packages:

  • numpy, pandas, scipy, matplotlib
  • xarray, rasterio, rioxarray
  • shapely, geopandas
  • networkx
  • whitebox_workflows

Installation

Currently the package can only be installed via pip:

pip install --force-reinstall --no-deps hydrocivil

Example Use

from hydrocivil import RainStorm, RiverBasin
from hydrocivil.resources import load_example_data
import matplotlib.pyplot as plt

Compute basin properties

# ---------------------- Load example data (or your own) --------------------- #

# dem = rxr.open_rasterio('/path/to/dem.tif')
# curvenumber = rxr.open_rasterio('path/to/cn.tif')
# rivernetwork = gpd.read_file('path/to/rivers.shp')
# basin_polygon = gpd.read_file('path/to/basin.shp')
basin, rnetwork, dem, cn = load_example_data()

# Create RiverBasin object and compute properties
wshed = RiverBasin(fid='Example', basin=basin, dem=dem, rivers=rnetwork, lulc=cn, amc='wet')
wshed.compute_params()  # <- compute geomorphological parameters (SI units)
wshed.plot() # Check results (e.g basin polygon, identified main river, etc)
<Axes: title={'left': 'Example'}>

png

Create an hypothetical storm

# Create a 100 milimeter, 24 hours duration, SCS type I storm with pulses every half an hour
storm = RainStorm('SCS_I24', timestep=0.5, rain24=100)
storm.fit(ref_pgauge='Grunsky')
storm.compute(target_duration=24)
# Use SCS method for abstractions with the watershed average curve number
pr_eff, infr = wshed.infiltrate(pr = storm.pr, method = 'SCS')

storm.pr.to_series().plot(kind='bar', width=1, ec='k')
infr.to_series().plot(kind='bar', width=1, color='tab:purple', ec='k')
<Axes: >

png

Estimate the basin response (flood hydrograph)

# Compute the basin SCS unit hydrograph for the storm (UH related to the storm timestep)
wshed.SynthUnitHydro(method='SCS', timestep=storm.timestep) # By default this uses the 484 SCS unit hydrograph and SCS lagtime formula. 

# Compute the flood hydrograph as the convolution of the effective precipitation depth with the unit hydrograph
wshed.UnitHydro.convolve(pr_eff).plot()
<Axes: >

png

Metadata

Release files for hydrocivil 1.2.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 hydrocivil 1.2.0
File Size Uploaded
hydrocivil-1.2.0.tar.gz 13.6 MB Details

Built distribution (wheel)

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

Total release size: 27.2 MB

Release files / hydrocivil-1.2.0.tar.gz

Download URL hydrocivil-1.2.0.tar.gz
Size 13.6 MB
Tags Source
SHA-256 checksum
How to use checksums
83b024b1a22d112deab6e7c7d2d2d6c76d225463265b4062a2541c4773b30c18
BLAKE2b-256 checksum
How to use checksums
f9398f5cf48c6b7bad5b5e4a77a544c101768c59d795239bca4e020f6a1d4b69
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release files / hydrocivil-1.2.0-py3-none-any.whl

Download URL hydrocivil-1.2.0-py3-none-any.whl
Size 13.6 MB
Tags Python 3
SHA-256 checksum
How to use checksums
fffcf1c716b715c18f658b949a70a83da44a44f132460a41a63b7ca448067a6b
BLAKE2b-256 checksum
How to use checksums
44d7ba8d61cdecd8ed8f78fbd088784105276f353e8134250c3cfec339aa1fbb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.0

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.9

2 release files

0.8

2 release files

0.6.1

2 release files

0.6

3 release files

0.5

2 release files

0.4

2 release files

0.3

2 release files

0.2

2 release files

0.1

2 release files

0.0

2 release files

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