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