Parameters List¶
Example of dynamically defining parameters for a report
Example of defining parameters for a report¶
1#FORM
2 Tulsa District
3 US Army Corps of Engineers
4 Keystone Lake Report
5DATE Elevation Storage Inflow Outflow Precip
6%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
7%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
8%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
9%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
10%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
11%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
12%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
13%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
14%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
15%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
16%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
17%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
18%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
19%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
20%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
21%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
22%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
23%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
24%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
25%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
26%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
27%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
28%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
29%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
30%DT %elev %stor %flow_res_in %flow_res_out %precip_inc
31#ENDFORM
32
33#DEF
34PROJECT = "KEYS"
35PARAM_TSIDS = [
36 "Elev.Inst.1Hour.0.Ccp-Rev",
37 "Stor.Inst.1Hour.0.Ccp-Rev",
38 "Flow-Res In.Ave.1Hour.1Hour.Rev-Regi-Computed",
39 "Flow-Res Out.Ave.1Hour.1Hour.Rev-Regi-Flowgroup",
40 "Precip-Inc.Total.1Hour.1Hour.Ccp-Rev",
41]
42
43UNIT_MAP = {
44 "precip_inc": {"units": "in", "picture": "%3.3f"},
45 "flow_res_in": {"units": "cfs", "picture": "%4.0f"},
46 "flow_res_out": {"units": "cfs", "picture": "%4.0f"},
47 "elev": {"units": "ft", "picture": "%3.2f"},
48 "stor": {"units": "ac-ft", "picture": "%5.0f"},
49}
50
51PARAM_TSIDS = [p.split(".") for p in PARAM_TSIDS]
52
53BASDATE.value = BASDATE.value.replace(hour=8, minute=0, second=0, microsecond=0)
54BASDATE.picture = "%Y-%m-%d"
55CUR_YEAR = BASDATE.value.year
56CUR_MONTH = BASDATE.value.month
57CUR_DAY = BASDATE.value.day
58
59BASDATE_8AM = BASDATE.value.replace(year=2024, month=6, day=21, hour=8, minute=0, second=0, microsecond=0)
60BASDATE_8AM_YESTERDAY = BASDATE_8AM - datetime.timedelta(hours=24)
61
62for dbpar, dbptyp, dbint, dbdur, dbver in PARAM_TSIDS:
63 print("GET " + '.'.join([PROJECT,dbpar, dbptyp, dbint, dbdur, dbver]))
64 # Create a variable friendly name for the parameter
65 dbpar_norm = dbpar.replace(" ", "_").replace("-", "_").lower()
66 # Dynamically add the project to the locals for printing to the form
67 print(UNIT_MAP.get(dbpar_norm, "ft"))
68 param = UNIT_MAP.get(dbpar_norm, "ft")
69 _value = Value(
70 dbtype="radar",
71 DBTZ="US/CENTRAL",
72 tz="US/CENTRAL",
73 DBLOC=PROJECT,
74 DBPAR=dbpar,
75 DBPTYP=dbptyp,
76 DBINT=dbint,
77 DBDUR=dbdur,
78 DBVER=dbver,
79 start=BASDATE_8AM_YESTERDAY,
80 end=BASDATE_8AM,
81 PICTURE=param["picture"],
82 MISSTR="--",
83 UNDEF="~~",
84 DBUNITS=param["units"],
85 )
86 print(param)
87 print(_value.values)
88 locals().update(
89 {
90 dbpar_norm: _value
91 }
92 )
93 # This will end up being the last elev to get looped.
94 # TODO: Consider creating a sep value for just the date range that should always exist
95 print("datatimes", str(_value.values))
96 DT = Value(_value.datatimes(),
97 PICTURE="%d%b%Y %K%M",
98 )
99
100
101# ENDDEF