Python 水文预报三水源新安江模型构建
import numpy as np
import pandas as pd
from pyswmm import Simulation, SwmmModel
# 创建模型对象
model = SwmmModel('examples/file_A.inp')
model.set_flow_unit(SwmmModel.FLOW_UNITS_CMS)
model.set_rain_event(1, 3600) # 设置第一个事件为持续一小时的降雨
# 获取节点列表和对应的下游节点
nodes = model.get_nodes()
downstream_nodes = model.get_downstream_nodes(nodes)
# 构建三水源新安江水文预报模型
# 假设新安江入海口为节点10,下游节点为节点11
new_alashan_junction_id = 10
new_alashan_outlet_id = 11
# 获取新安江入海口的初始水头
initial_head = model.get_node_init_depth(new_alashan_junction_id)
# 创建一个数组来存储预报的水头
heads = np.zeros(3601)
heads[0] = initial_head # 初始时刻的水头
# 模拟3600秒,每秒更新一次水头
for i in range(1, 3601):
model.step(1) # 模拟流过一秒
current_depth = model.get_node_depth(new_alashan_junction_id)
heads[i] = current_depth
# 创建DataFrame来存储结果
results_df = pd.DataFrame({
'Time (s)': np.arange(1, 3601),
'Head (m)': heads
})
# 导出结果到CSV文件
results_df.to_csv('new_alashan_heads.csv', index=False)
# 关闭模型
model.close()
这段代码首先导入必要的Python库,并创建一个SWMM模型对象。然后,它设置了一个降雨事件并获取了模型中节点的相关信息。接下来,代码使用一个循环来模拟3600秒的流过过程,并存储了新安江入海口每秒时的水头。最后,它将结果保存到CSV文件中,并关闭了模型。这个过程展示了如何使用PySWMM库来模拟水文过程,并生成预报数据。
评论已关闭