@@ -250,10 +250,19 @@ def files(self):
250
250
@property
251
251
def dss_files (self ):
252
252
"""Return dss files."""
253
- files = set (
254
- [gage .attrs ["Variant" ]["Variant-1" ]["DSS File Name" ] for gage in self .gage .elements .elements .values ()]
255
- + [pdata .attrs ["DSS File" ] for pdata in self .pdata .elements .elements .values ()]
256
- )
253
+ files = set ()
254
+ if self .gage :
255
+ files .update (
256
+ [gage .attrs ["Variant" ]["Variant-1" ]["DSS File Name" ] for gage in self .gage .elements .elements .values ()]
257
+ )
258
+ else :
259
+ logging .warning ("No gage file to extract gages from." )
260
+
261
+ if self .pdata :
262
+ files .update ([pdata .attrs ["DSS File" ] for pdata in self .pdata .elements .elements .values ()])
263
+ else :
264
+ logging .warning ("No pdata files found." )
265
+
257
266
if self .grid :
258
267
files .update (
259
268
[
@@ -716,6 +725,31 @@ def subbasin_bc_lines(self):
716
725
gdf = gpd .GeoDataFrame (df , geometry = "geometry" , crs = self .crs )
717
726
return gdf
718
727
728
+ @property
729
+ @lru_cache
730
+ def hms_methods (self ):
731
+ """Extract unique HMS methods from Subbasins and Reaches."""
732
+
733
+ methods = {
734
+ "Canopy" : set (),
735
+ "Discretization" : set (),
736
+ "Begin Snow" : set (),
737
+ "Surface" : set (),
738
+ "LossRate" : set (),
739
+ "Transform" : set (),
740
+ "Baseflow" : set (),
741
+ "Route" : set (),
742
+ }
743
+
744
+ for subbasin in self .subbasins :
745
+ for key in methods .keys ():
746
+ if key in subbasin .attrs :
747
+ methods [key ].add (subbasin .attrs [key ])
748
+ for reach in self .reaches :
749
+ if "Route" in reach .attrs :
750
+ methods ["Route" ].add (reach .attrs ["Route" ])
751
+ return {f"hms_methods:{ key .replace (' ' , '_' )} " : list (values ) for key , values in methods .items ()}
752
+
719
753
720
754
class MetFile (BaseTextFile ):
721
755
"""Class for parsing HEC-HMS meteorology files."""
0 commit comments