From ab13863af253323486fab6a04d044eac9de37edf Mon Sep 17 00:00:00 2001 From: kbonney Date: Fri, 17 Nov 2023 16:27:44 -0500 Subject: [PATCH 1/2] change how _create_wn parses index names to prevent breakage --- wntr/gis/network.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wntr/gis/network.py b/wntr/gis/network.py index fd70ec924..b602b00cd 100644 --- a/wntr/gis/network.py +++ b/wntr/gis/network.py @@ -191,8 +191,8 @@ def _create_wn(self, append=None): for element in [self.junctions, self.tanks, self.reservoirs]: if element.shape[0] > 0: assert (element['geometry'].geom_type).isin(['Point']).all() - df = element.reset_index() - df.rename(columns={'index':'name', 'geometry':'coordinates'}, inplace=True) + df = element.reset_index(names="name") + df.rename(columns={'geometry':'coordinates'}, inplace=True) df['coordinates'] = [[x,y] for x,y in zip(df['coordinates'].x, df['coordinates'].y)] wn_dict['nodes'].extend(df.to_dict('records')) From b3d9563ba7de537a06dcf5a170b2c605db51d2f3 Mon Sep 17 00:00:00 2001 From: kbonney Date: Mon, 10 Jun 2024 16:20:22 -0400 Subject: [PATCH 2/2] extending changes to link and adding a test --- wntr/gis/network.py | 3 +-- wntr/tests/test_gis.py | 8 ++++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/wntr/gis/network.py b/wntr/gis/network.py index b602b00cd..b7b936c28 100644 --- a/wntr/gis/network.py +++ b/wntr/gis/network.py @@ -201,8 +201,7 @@ def _create_wn(self, append=None): if element.shape[0] > 0: assert 'start_node_name' in element.columns assert 'end_node_name' in element.columns - df = element.reset_index() - df.rename(columns={'index':'name'}, inplace=True) + df = element.reset_index(names="name") # TODO: create vertices from LineString geometry df.drop(columns=['geometry'], inplace=True) wn_dict['links'].extend(df.to_dict('records')) diff --git a/wntr/tests/test_gis.py b/wntr/tests/test_gis.py index b56b6b616..e5d1ef27e 100644 --- a/wntr/tests/test_gis.py +++ b/wntr/tests/test_gis.py @@ -70,6 +70,14 @@ def setUpClass(self): def tearDownClass(self): pass + def test_gis_index(self): + # Tests that WN can be made using dataframes with customized index names + wn_gis = self.wn.to_gis() + wn_gis.junctions.index.name = "my_index" + wn_gis.pipes.index.name = "my_index" + wn2 = wntr.network.from_gis(wn_gis) + self.wn == wn2 + def test_wn_to_gis(self): # Check type isinstance(self.gis_data.junctions, gpd.GeoDataFrame)