运行和验证水文模型的Python包
项目描述
ewatercycle
一个用于运行水文模型的 Python 软件包。
ewatercycle 软件包使得使用水文模型变得更加容易,无需深入了解如何安装和运行模型。
- 使用容器以隔离和便携的方式运行模型,通过 grpc4bmi
- 使用 ESMValTool 生成模型所需的降雨和阳光数据
- 支持来自 GRDC 或 USGS 的观测数据
- 提供简单的接口,快速上手
安装
ewatercycle 软件包需要一些地理空间非 Python 软件包来生成强迫数据。建议创建一个 Conda 环境,以安装这些依赖项
curl -o conda-lock.yml https://raw.githubusercontent.com/eWaterCycle/ewatercycle/main/conda-lock.yml
conda install mamba conda-lock -n base -c conda-forge -y
conda-lock install --no-dev -n ewatercycle
conda activate ewatercycle
使用以下命令安装 ewatercycle 软件包:
pip install ewatercycle
ewatercycle 软件包不包含任何模型。模型打包在 插件 中。要安装所有推荐插件,请使用以下命令:
pip install ewatercycle-hype ewatercycle-lisflood ewatercycle-marrmot ewatercycle-pcrglobwb ewatercycle-wflow ewatercycle-leakybucket
除了安装软件外,您还需要创建一个配置文件,下载几个数据集,并获取容器镜像。有关说明,请参阅 系统设置章节。
使用方法
以下示例使用 Marrmot M14 (TOPMODEL) 水文模型在莱茵河流域生成强迫数据、运行它并生成洪水过程线。
在压缩代码中forcing = ewatercycle.forcing.sources['MarrmotForcing'].generate(...)
model = ewatercycle.models.sources['MarrmotM14'](forcing)
model.setup(...)
model.initialize()
while (model.time < model.end_time):
model.update()
value = model.get_value_as_xarray('flux_out_Q')
model.finalize()
ewatercycle.analysis.hydrograph(...)
(点击查看真实代码)
在真实代码中import ewatercycle.analysis
import ewatercycle.forcing
import ewatercycle.models
import ewatercycle.observation.grdc
from ewatercycle.testing.fixtures import rhine_shape
import shapefile
import xarray as xr
forcing = ewatercycle.forcing.sources['MarrmotForcing'].generate(
dataset='ERA5',
start_time='2010-01-01T00:00:00Z',
end_time='2010-12-31T00:00:00Z',
shape=rhine_shape()
)
model = ewatercycle.models.sources['MarrmotM14'](version='2020.11', forcing=forcing)
cfg_file, cfg_dir = model.setup(
threshold_flow_generation_evap_change=0.1,
)
model.initialize(cfg_file)
# flux_out_Q unit conversion factor from mm/day to m3/s
sf = shapefile.Reader(rhine_shape())
area = sf.record(0)['SUB_AREA'] * 1e6 # from shapefile in m2
conversion_mmday2m3s = 1 / (1000 * 24 * 60 * 60)
conversion = conversion_mmday2m3s * area
simulated_discharge = []
while (model.time < model.end_time):
model.update()
simulated_discharge.append(
model.get_value_as_xarray('flux_out_Q')
)
observations_ds = ewatercycle.observation.grdc.get_grdc_data(
station_id=6335020, # Rees, Germany
start_time=model.start_time_as_isostr,
end_time=model.end_time_as_isostr,
column='observation',
)
# Combine the simulated discharge with the observations
sim_da = xr.concat(simulated_discharge, dim='time') * conversion
sim_da.name = 'simulated'
discharge = xr.merge([sim_da, observations_ds["observation"]]).to_dataframe()
discharge = discharge[["observation", "simulated"]].dropna()
ewatercycle.analysis.hydrograph(discharge, reference='observation')
model.finalize()
更多示例可以在 文档 中列出的插件中找到。
贡献
如果您想为 ewatercycle 软件包的开发做出贡献,请查看 贡献指南。
许可证
版权(c)2018 - 2024,荷兰 eScience 中心 & 代尔夫特理工大学
Apache 软件许可证 2.0
项目详情
下载文件
下载适用于您平台的项目文件。如果您不确定要选择哪个,请了解更多关于 安装软件包 的信息。
源分布
ewatercycle-2.3.1.tar.gz (227.6 kB 查看散列值)
构建分发版
ewatercycle-2.3.1-py3-none-any.whl (121.1 kB 查看哈希值)
关闭
ewatercycle-2.3.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5e5bf58fa2289bedda30435125019fcb428f6f57deeb8d7bcfffb7d24ae698a6 |
|
MD5 | 9cf4dd3e20b145864828dbbf5e1f95fb |
|
BLAKE2b-256 | ced1fd2d4be7a63ae8c1aae9c7ffaaa0494ed441607cb1ec4a8761b8b9f49135 |
关闭
ewatercycle-2.3.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 129f06788f06b0cd2aecd1e569134cd1c04ad5b3df96411ff8ec634d6dfdd4e1 |
|
MD5 | 95439560a59ecdeb430e29f244c95952 |
|
BLAKE2b-256 | 77525a71c83f6b5fa87b2fbb41b0981b3b2fabbed408ce9dab01045627c5c887 |