Skip to content

Commit

Permalink
add core.inp.symbols for rain gage coords
Browse files Browse the repository at this point in the history
  • Loading branch information
wraseman committed Jan 7, 2025
1 parent 9878edc commit 261b2f5
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 1 deletion.
29 changes: 28 additions & 1 deletion swmmio/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -651,6 +651,7 @@ def __init__(self, file_path):
self._inlet_usage_df = None
self._patterns_df = None
self._controls_df = None
self._symbols_df = None

SWMMIOFile.__init__(self, file_path) # run the superclass init

Expand Down Expand Up @@ -698,6 +699,7 @@ def __init__(self, file_path):
'[INLET_USAGE]',
'[PATTERNS]',
'[CONTROLS]',
'[SYMBOLS]',
]

def save(self, target_path=None):
Expand Down Expand Up @@ -1787,12 +1789,37 @@ def inlet_usage(self):
if self._inlet_usage_df is None:
self._inlet_usage_df = dataframe_from_inp(self.path, "[INLET_USAGE]")
return self._inlet_usage_df

@inlet_usage.setter
def inlet_usage(self, df):
"""Set inp.inlet_usage DataFrame."""
self._inlet_usage_df = df

@property
def symbols(self):
"""
Get/set symbols section of INP file.
Section: [SYMBOLS]
Purpose: Assigns X, Y coordinates to rain gage symbols.
Columns:
- Name: name of rain gage.
- X: horizontal coordinate relative to origin in lower left of map.
- Y: vertical coordinate relative to origin in lower left of map
Returns
-------
pandas.DataFrame
"""
if self._symbols_df is not None:
return self._symbols_df
self._symbols_df = dataframe_from_inp(self.path, "[SYMBOLS]")
return self._symbols_df

@symbols.setter
def symbols(self, df):
"""Set inp.symbols DataFrame."""
self._symbols_df = df

def drop_invalid_model_elements(inp):
"""
Expand Down
1 change: 1 addition & 0 deletions swmmio/defs/inp_sections.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ inp_file_objects:
INLET_USAGE: [Link, Inlet, Node, Number, "%Clogged", Qmax, aLocal, wLocal, Placement]
PATTERNS: [Name, Type, Factors]
CONTROLS: [blob]
SYMBOLS: [Name, X, Y]

inp_section_tags:
['[TITLE', '[OPTION', '[FILE', '[RAINGAGES', '[TEMPERATURE', '[EVAP',
Expand Down
14 changes: 14 additions & 0 deletions swmmio/tests/test_dataframes.py
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,20 @@ def test_polygons(test_model_02):

# print()

def test_symbols():
data = {
"Name": ["GAGE1"],
"X": [361.632],
"Y": [267.406]
}
symbols1 = pd.DataFrame(data)
symbols1.set_index('Name', inplace=True)

m = swmmio.Model(MODEL_GREEN_AMPT)
symbols2 = m.inp.symbols

assert symbols1.equals(symbols2)

def test_inp_sections():

# Additional models could be added to this test, or additional features
Expand Down

0 comments on commit 261b2f5

Please sign in to comment.