Skip to main content

a package for hydrological methods in enviromental engineering

Project description

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.misc import load_example_data
from hydrocivil.watersheds import RiverBasin
from hydrocivil.rain import RainStorm

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, rivers=rnetwork, dem=dem, lulc=cn, amc='wet')
wshed = 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 30 minutes
storm = RainStorm('SCS_I24')
storm = storm.compute(timestep=0.5, duration=24, rainfall=100)
# Use SCS method for abstractions with the watershed average curve number
storm = storm.infiltrate(method='SCS', cn=wshed.geoparams.loc['cn'].item())

storm.pr.to_series().plot(kind='bar', width=1, ec='k')
storm.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 = 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(storm.pr_eff.to_series() * storm.timestep).plot()
plt.ylabel('m³/s')
<Axes: >

png

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

hydrocivil-1.1.4.tar.gz (13.5 MB view details)

Uploaded Source

Built Distribution

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

hydrocivil-1.1.4-py3-none-any.whl (13.5 MB view details)

Uploaded Python 3

File details

Details for the file hydrocivil-1.1.4.tar.gz.

File metadata

  • Download URL: hydrocivil-1.1.4.tar.gz
  • Upload date:
  • Size: 13.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.17

File hashes

Hashes for hydrocivil-1.1.4.tar.gz
Algorithm Hash digest
SHA256 bfa827fc8de2376a1980e1d914aa5d62b7208b758bfe52a43fb181a9814c7cac
MD5 5b7b2b7168d933cc95fcd1aac59d1e45
BLAKE2b-256 abcddb450f5befa962059e04c49c0ab8c18406484836031d5e460ed97dc0aaf3

See more details on using hashes here.

File details

Details for the file hydrocivil-1.1.4-py3-none-any.whl.

File metadata

  • Download URL: hydrocivil-1.1.4-py3-none-any.whl
  • Upload date:
  • Size: 13.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.17

File hashes

Hashes for hydrocivil-1.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 e552c650db76a314f85684ee501e59de931aeee2ca8aa57f502ebb4b267a5670
MD5 537a44bce047ce086730b4e4e7d87435
BLAKE2b-256 7d4b4f94fc79f4912379ee352781b96c7e6a343e0bc86e802f27cd518c180c52

See more details on using hashes here.

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