Skip to content

Commit

Permalink
fix aam
Browse files Browse the repository at this point in the history
  • Loading branch information
DanielTollenaar committed Oct 18, 2024
1 parent 2a929fe commit 2ae82fb
Showing 1 changed file with 170 additions and 0 deletions.
170 changes: 170 additions & 0 deletions notebooks/aa_en_maas/01_fix_model_network.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# %%
import geopandas as gpd
import numpy as np
import pandas as pd
from ribasim import Node
from ribasim.nodes import basin, level_boundary, manning_resistance, outlet
from ribasim_nl import CloudStorage, Model, NetworkValidator

Expand All @@ -18,6 +20,12 @@
ribasim_toml = cloud.joinpath(authority, "modellen", f"{authority}_fix_model_network", f"{short_name}.toml")
network_validator = NetworkValidator(model)


hydroobject_gdf = gpd.read_file(
cloud.joinpath(authority, "verwerkt", "4_ribasim", "hydamo.gpkg"), layer="hydroobject", fid_as_index=True
)


# %% some stuff we'll need again
manning_data = manning_resistance.Static(length=[100], manning_n=[0.04], profile_width=[10], profile_slope=[1])
level_data = level_boundary.Static(level=[0])
Expand All @@ -42,9 +50,158 @@
# Verwijderen duplicate edges
model.edge.df.drop_duplicates(inplace=True)

# %% https://github.com/Deltares/Ribasim-NL/issues/149#issuecomment-2421959240

# Verwijderen edge met 0m lengte
model.remove_node(34, remove_edges=True)
model.update_node(1568, "LevelBoundary", data=[level_data], node_properties={"name": ""})


# %% see: https://github.com/Deltares/Ribasim-NL/issues/149#issuecomment-2421946693
# toevoegen ontbrekende basins

basin_edges_df = network_validator.edge_incorrect_connectivity()
basin_nodes_df = network_validator.node_invalid_connectivity()

for row in basin_nodes_df.itertuples():
# maak basin-node
basin_node = model.basin.add(Node(geometry=row.geometry), tables=basin_data)

# update edge_table
model.edge.df.loc[basin_edges_df[basin_edges_df.from_node_id == row.node_id].index, ["from_node_id"]] = (
basin_node.node_id
)
model.edge.df.loc[basin_edges_df[basin_edges_df.to_node_id == row.node_id].index, ["to_node_id"]] = (
basin_node.node_id
)

# %% see: https://github.com/Deltares/Ribasim-NL/issues/149#issuecomment-2421991252

# Corrigeren netwerk Den Bosch

# Binnenstad
basin_node = model.basin.add(Node(geometry=hydroobject_gdf.at[2788, "geometry"].boundary.geoms[0]), tables=basin_data)

model.reverse_edge(edge_id=2077)
model.redirect_edge(edge_id=2077, to_node_id=basin_node.node_id)
model.redirect_edge(edge_id=2078, from_node_id=basin_node.node_id)
model.redirect_edge(edge_id=2079, from_node_id=basin_node.node_id)
outlet_node = model.outlet.add(
Node(geometry=hydroobject_gdf.at[4999, "geometry"].interpolate(0.5, normalized=True)), tables=[outlet_data]
)
model.edge.add(model.level_boundary[46], outlet_node)
model.edge.add(outlet_node, basin_node)

# Dommel
basin_node = model.basin.add(
Node(geometry=hydroobject_gdf.at[9055, "geometry"].interpolate(0.5, normalized=True)), tables=basin_data
)
model.redirect_edge(edge_id=2082, from_node_id=basin_node.node_id)

outlet_node = model.outlet.add(
Node(geometry=hydroobject_gdf.at[9055, "geometry"].interpolate(0.1, normalized=True)), tables=[outlet_data]
)

model.edge.add(model.level_boundary[49], outlet_node)
model.edge.add(outlet_node, basin_node)


# %% see: https://github.com/Deltares/Ribasim-NL/issues/149#issuecomment-2422078500

# Corrigeren netwerk bij sluis Empel
for node_id in [729, 730, 1990, 1962]:
model.remove_node(node_id, remove_edges=True)


# Omkeren edgerichting
for edge_id in [131, 398, 406, 495, 513, 515, 894]:
model.reverse_edge(edge_id=edge_id)

# %% see: https://github.com/Deltares/Ribasim-NL/issues/149#issuecomment-2422164355

# Corrigeren netwerk bij Spuisluis Crèvecoeur
model.remove_node(411, remove_edges=True)
model.remove_node(4, remove_edges=True)
model.redirect_edge(edge_id=2018, to_node_id=1950)

outlet_node = model.outlet.add(
Node(geometry=hydroobject_gdf.at[4825, "geometry"].boundary.geoms[0], name="Spuisluis Crèvecoeur"),
tables=[outlet_data],
)

model.edge.add(outlet_node, model.level_boundary[5])
model.edge.add(model.basin[1627], outlet_node)

# %% see: https://github.com/Deltares/Ribasim-NL/issues/149#issuecomment-2422373708

# Corrigeren Afleidingskanaal bij Holthees

# nabij grens
basin_node = model.basin.add(Node(geometry=hydroobject_gdf.at[8868, "geometry"].boundary.geoms[0]), tables=basin_data)
outlet_node = model.outlet.add(
Node(geometry=hydroobject_gdf.at[4680, "geometry"].interpolate(0.1, normalized=True)), tables=[outlet_data]
)

model.redirect_edge(edge_id=2091, from_node_id=56, to_node_id=outlet_node.node_id)
model.redirect_edge(edge_id=2092, from_node_id=outlet_node.node_id, to_node_id=basin_node.node_id)
model.redirect_edge(edge_id=2093, from_node_id=653, to_node_id=basin_node.node_id)
model.redirect_edge(edge_id=2094, from_node_id=basin_node.node_id, to_node_id=82)

# nabij afleidingskanaal
basin_node = model.basin.add(Node(geometry=hydroobject_gdf.at[7466, "geometry"].boundary.geoms[0]), tables=basin_data)
outlet_node = model.outlet.add(
Node(geometry=hydroobject_gdf.at[8456, "geometry"].interpolate(0.1, normalized=True)), tables=[outlet_data]
)
model.redirect_edge(edge_id=2089, to_node_id=outlet_node.node_id)
model.redirect_edge(edge_id=2088, from_node_id=outlet_node.node_id, to_node_id=basin_node.node_id)
model.edge.add(model.tabulated_rating_curve[82], basin_node)
model.edge.add(basin_node, model.tabulated_rating_curve[853])

# nabij Maas
basin_node = model.basin.add(Node(geometry=hydroobject_gdf.at[2385, "geometry"].boundary.geoms[0]), tables=basin_data)
outlet_node = model.outlet.add(
Node(geometry=hydroobject_gdf.at[2539, "geometry"].boundary.geoms[0]), tables=[outlet_data]
)

model.redirect_edge(edge_id=2054, to_node_id=basin_node.node_id)
model.edge.add(basin_node, outlet_node)
model.edge.add(outlet_node, model.level_boundary[26])


# %% see: https://github.com/Deltares/Ribasim-NL/issues/149#issuecomment-2422452167

# Toevoegen basin bij Oude Zuid-Willemsvaart
outlet_node = model.outlet.add(
Node(geometry=hydroobject_gdf.at[3174, "geometry"].boundary.geoms[0], name="Sluis 9"), tables=[outlet_data]
)
basin_node = model.basin.add(Node(geometry=hydroobject_gdf.at[6499, "geometry"].boundary.geoms[0]), tables=basin_data)
model.redirect_edge(edge_id=2102, to_node_id=outlet_node.node_id)
model.edge.add(outlet_node, basin_node)
model.redirect_edge(edge_id=2106, to_node_id=2026)

outlet_node = model.outlet.add(
Node(geometry=hydroobject_gdf.at[646, "geometry"].interpolate(0.9, normalized=True)), tables=[outlet_data]
)
model.edge.add(basin_node, outlet_node)
model.edge.add(outlet_node, model.level_boundary[66])

# EINDE ISSUES


# %%
# corrigeren knoop-topologie

# ManningResistance bovenstrooms LevelBoundary naar Outlet
for row in network_validator.edge_incorrect_type_connectivity().itertuples():
model.update_node(row.from_node_id, "Outlet", data=[outlet_data])

# Inlaten van ManningResistance naar Outlet
for row in network_validator.edge_incorrect_type_connectivity(
from_node_type="LevelBoundary", to_node_type="ManningResistance"
).itertuples():
model.update_node(row.to_node_id, "Outlet", data=[outlet_data])


## UPDATEN STATIC TABLES

# %%
Expand Down Expand Up @@ -103,6 +260,19 @@
df.index.name = "fid"
model.manning_resistance.static.df = df

# %%
# flow boundaries updaten
length = len(model.flow_boundary.node.df)
df = pd.DataFrame(
{
"node_id": model.flow_boundary.node.df.index.to_list(),
"flow_rate": [0.0] * length,
}
)
df.index.name = "fid"
model.flow_boundary.static.df = df


# %% write model
model.use_validation = True
model.write(ribasim_toml)
Expand Down

0 comments on commit 2ae82fb

Please sign in to comment.