From 177019a354358e0fff6cff360e2d66a75e51ee32 Mon Sep 17 00:00:00 2001 From: kbonney Date: Mon, 30 Oct 2023 12:07:13 -0400 Subject: [PATCH 1/3] add vertices from line string geometries when convering GIS object to Model object --- wntr/gis/network.py | 1 + 1 file changed, 1 insertion(+) diff --git a/wntr/gis/network.py b/wntr/gis/network.py index fd70ec924..c0f7e9a4f 100644 --- a/wntr/gis/network.py +++ b/wntr/gis/network.py @@ -204,6 +204,7 @@ def _create_wn(self, append=None): df = element.reset_index() df.rename(columns={'index':'name'}, inplace=True) # TODO: create vertices from LineString geometry + df['vertices'] = df.apply(lambda row: list(row.geometry.coords)[1:-1], axis=1) df.drop(columns=['geometry'], inplace=True) wn_dict['links'].extend(df.to_dict('records')) From 12f84c1b9ce7a5a31984e10cbad6d486fbf69a61 Mon Sep 17 00:00:00 2001 From: kbonney Date: Mon, 30 Oct 2023 12:10:42 -0400 Subject: [PATCH 2/3] Removing todo comment --- wntr/gis/network.py | 1 - 1 file changed, 1 deletion(-) diff --git a/wntr/gis/network.py b/wntr/gis/network.py index c0f7e9a4f..86f399e30 100644 --- a/wntr/gis/network.py +++ b/wntr/gis/network.py @@ -203,7 +203,6 @@ def _create_wn(self, append=None): assert 'end_node_name' in element.columns df = element.reset_index() df.rename(columns={'index':'name'}, inplace=True) - # TODO: create vertices from LineString geometry df['vertices'] = df.apply(lambda row: list(row.geometry.coords)[1:-1], axis=1) df.drop(columns=['geometry'], inplace=True) wn_dict['links'].extend(df.to_dict('records')) From bdea21e64d1db5ca5c4b028ac07146a38e063b3e Mon Sep 17 00:00:00 2001 From: kbonney Date: Thu, 2 Nov 2023 10:31:44 -0400 Subject: [PATCH 3/3] adding a vertex check to test_gis_to_wn --- wntr/tests/test_gis.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/wntr/tests/test_gis.py b/wntr/tests/test_gis.py index b56b6b616..9772ceaec 100644 --- a/wntr/tests/test_gis.py +++ b/wntr/tests/test_gis.py @@ -43,6 +43,10 @@ def setUpClass(self): self.results = sim.run_sim() self.gis_data = self.wn.to_gis() + vertex_inp_file = join(datadir, "io.inp") + self.vertex_wn = self.wntr.network.WaterNetworkModel(vertex_inp_file) + self.vertex_gis_data = self.vertex_wn.to_gis() + polygon_pts = [[(25,80), (65,80), (65,60), (25,60)], [(25,60), (80,60), (80,30), (25,30)], [(40,50), (60,65), (60,15), (40,15)]] @@ -102,6 +106,11 @@ def test_gis_to_wn(self): G2 = wn2.to_graph() assert nx.is_isomorphic(G1, G2) + + # test vertices + vertex_wn2 = wntr.network.io.from_gis(self.vertex_gis_data) + for name, link in vertex_wn2.links(): + assert link.vertices == self.vertex_wn.get_link(name).vertices def test_intersect_points_with_polygons(self):