You are not logged in. Click here to log in.

Application Lifecycle Management

Search In Project

Search inClear

CFA Load Duration Curve Analysis#6466/HEAD / v8
Tags:  not added yet

CFA Load Duration Curve Analysis[SERVICE-6466]

Tracker: Services Priority: NormalNormal Status: Deployed
Submitted by: wlloydJan 12 2016 11:03 Modified by: tcwibleFeb 28 2019 14:40 Type:
Model
Path: m/cfa/durationcurve Context: csip-cfa Version: 1.0
Endpoints: http://csip.engr.colostate.edu:8088/csip-cfa/m/cfa/durationcurve/1.0
Maintainers:
Website: http://onewatersolutions.com/our-software/tools/water-quality Apps:
--
Test Status:
--
Last Tested: -- Test Count: --
Test Success Rate: -- Failed Tests: --
Traceability
Loading…
Description
The Load Duration Curve Analysis, LDC, is an extension of the Flow Duration Curve, FDC, analysis in CFA. A LDC is a FDC multiplied by a target water quality concentration level to achieve a load per day value of a particular water quality nutrient. In addition to the LDC itself, observed water quality samples can be graphed as loads (flow * water quality concentration * conversion factors = load). If the observed loads never occur above the LDC line then there is no indication of a water quality problem for that desired target concentration. If there are observations which exceed the LDC it can sometimes help determine, based on where the observations exceed the curve, what pollution sources are probable contributors (Cleland, 2007; Cleland, 2003; and Cleland, 2002). Based on the location of these exceedences and the outline provided in (Cleland, 2007; Cleland, 2003; and Cleland, 2002), CFA’s LDC dynamically estimates possible nutrient pollution sources based on the location and magnitude of the exceeded values on the graph and reports this back to the user. In addition to the more complex analysis of identifying pollutant sources, LDCs can also be used to identify Total Maximum Daily Loads (TMDLs) for different flow regimes of a river of interest (Cleland 2007). The value of the LDC at a given exceedence is equal to the TMDL for that river, minus a margin of safety, for the specified pollutant and target water quality concentration. The other results files 'duration_curve_results.txt' and 'flow_statistics.csv' are the non-exceedence ranks for each load graphed and the same statistical summary file returned from the CFA Time Series Analysis, respectively.

References:

Baker, David B., Peter Richards, Timothy T. Loftus, and Jack W. Kramer. 2004. "A New Flashiness Index: Characteristics and Applications to Midwestern Rivers and Streams." Journal of the American Water Resources Association (JAWRA). April 2004:503-522

Castellarin, A., G. Galeati, L. Brandimarte, A. Montanari, and A. Brath. 2004. Regional Flow-Duration Curves: Reliability for Ungauged Basins. Advances in Water Resources. 27:953-965.

Cleland, B. R. November 2003. "TMDL Development from the 'Bottom Up' - Part III: Duration Curves and Wet-Weather Assessments." National TMDL Science and Policy 2003.

Cleland, B. R. August 2007. "An Approach for Using Load Duration Curves in the Development of TMDLs." National TMDL Science and Policy 2007.

Hirsch, Robert M., Dennis R. Helsel, Timothy A. Cohn, and Edward J. Gilroy. 1993. "Chapter 17: Statistical Analysis of Hydrologic Data." The McGraw Hill Handbook of Hydrology. D. R. Maidment, ed., McGraw-Hill New York

Smakhtin, V.U. 2000. Low Flow Hydrology: A Review. Journal of Hydrology. 240:147-186.

Notes about "wq_test":

- A complete list of water quality tests accepted by the databases accessed by this service is available here: https://www.waterqualitydata.us/public_srsnames/

- STORET water quality test names (wq_test) should match the format of Parm Code<space>Characteristic Name<space>--<space>units (i.e. "00600 Nitrogen, mixed forms (NH3), (NH4), organic, (NO2) and (NO3) -- mg/l")

- USGS water quality test names (wq_test) should match the format of Parm Code<space>Description<space>--<space>units (i.e. "00600 Total nitrogen (nitrate + nitrite + ammonia + organic-N), water, unfiltered, milligrams per liter -- mg/l")

Notes about Data Sources:

- All Data sources are accessed through the csip-lib-water library

- USGS Data extracted from the National Water Information System (NWIS) by encoded url (i.e. station id, begin/end dates, parameter type): https://help.waterdata.usgs.gov/faq/automated-retrievals

- STORET Data extracted from the Water Quality Data Portal (by the National Water Quality Monitoring Council) Web Services: https://www.waterqualitydata.us/webservices_documentation/

- CDWR Data extracted from the Colorado Decision Support System (CDSS) REST Services: http://dnrweb.state.co.us/dwr/dwrapiservice/help#TechInfoHelp&#All&#gettingstarted&#jsonxml

{
  "metainfo": {},
  "parameter": [
    {
      "name": "database",
      "description": "the database that the flow station belongs to (CDWR | STORET | USGS)",
      "value": "USGS"
    },
    {
      "name": "org_id",
      "description": "The ID for the supervising organization for the station within the STORET database (only used if database = 'STORET')",
      "value": "n\/a"
    },
    {
      "name": "station_id",
      "description": "station ID or name abbreviation used to query the specified database",
      "value": "06752280"
    },
    {
      "name": "station_name",
      "description": "Station name",
      "value": "CACHE LA POUDRE RIV AB BOXELDER CRK NR TIMNATH, CO"
    },
    {
      "name": "wq_test",
      "description": "If = 'flow' then a flow duration curve analysis is performed otherwise a load duration curve analysis is performed. Format for ldc wq_test is: '00600 Total nitrogen, water, unfiltered, milligrams per liter -- mg\/L' = '5-digit-USGS-water-quality-test-code test-name -- units'",
      "value": "00600 Total nitrogen, water, unfiltered, milligrams per liter -- mg/L
"
    },
    {
      "name": "wq_target",
      "description": "Water Quality Target",
      "unit": "units of wq_test",
      "value": 10
    },
    {
      "name": "begin_date",
      "description": "Begin date of data analysis, blank or formatted yyyy-MM-dd",
      "value": ""
    },
    {
      "name": "end_date",
      "description": "End date of data analysis, blank or formatted yyyy-MM-dd",
      "value": ""
    },
    {
      "name": "season_begin",
      "description": "Begin of Seasonal Analysis, formatted MM-dd (ex. June 1st would be entered as '06-01')",
      "value": "04-01"
    },
    {
      "name": "season_end",
      "description": "End of Seasonal Analysis, formatted MM-dd (ex. June 1st would be entered as '06-01')",
      "value": "09-30"
    },
    {
      "name": "seasonal_only",
      "description": "If 'true' then a seasonal duration curve will be calculated from a 'season' defined by the parameters 'season_begin' and 'season_end'. If 'false' then annual duration curves will be calculated.",
      "value": false
    },
    {
      "name": "period1_begin",
      "description": "Begin date of first period-based analysis (does not need to match data's begin_date). If left blank, no period-based analysis will be performed.",
      "value": ""
    },
    {
      "name": "period1_end",
      "description": "End date of first period-based analysis (does not need to match data's end_date). If left blank, no period-based analysis will be performed.",
      "value": ""
    },
    {
      "name": "period2_begin",
      "description": "Begin date of second period-based analysis (does not need to match data's begin_date). If left blank, no period-based analysis will be performed.",
      "value": ""
    },
    {
      "name": "period2_end",
      "description": "End date of second period-based analysis (does not need to match data's end_date). If left blank, no period-based analysis will be performed.",
      "value": ""
    },
    {
      "name": "period3_begin",
      "description": "Begin date of third period-based analysis (does not need to match data's begin_date). If left blank, no period-based analysis will be performed.",
      "value": ""
    },
    {
      "name": "period3_end",
      "description": "End date of third period-based analysis (does not need to match data's end_date). If left blank, no period-based analysis will be performed.",
      "value": ""
    },
    {
      "name": "highPercentile",
      "description": "The percentile limit for defining 'high' flow pulses for analysis and statistics",
      "unit": "%",
      "value": 0.75
    },
    {
      "name": "lowPercentile",
      "description": "The percentile limit for defining 'low' flow pulses for analysis and statistics",
      "unit": "%",
      "value": 0.25
    },
    {
      "name": "calcFlowStatisticsFileTF",
      "description": "If true, and wq_test == 'flow', then a series of flow statistics will be calculated and returned in a flow statistics file. If false, no flow statistics file is created.",
      "value": true
    },
    {
      "name": "showMonthlyStatsTF",
      "description": "If true, and the 'wq_test' is flow, then monthly flow statistics will be included in the flow-statistics result file If false, only annual and period of record statistics will be included.",
      "value": false
    },
    {
      "name": "mqn_period",
      "description": "Format for m-day average n-year period low flow, ex. 7Q10 = 7-day average 10-year low flow. (7q10 | false) ",
      "value": "false"
    },
    {
      "name": "merge_datasets",
      "description": "true if user data is provided and this dataset is to be merged with the public dataset, false if public or user data is to be analyzed alone (not merged)",
      "value": false
    },
    {
      "name": "merge_method",
      "description": "Method of merging the datasets, user data first, public data first, max, ave., min (user | public | max | average | min)",
      "value": "user"
    },
    {
      "name": "user_data",
      "description": "String containing user uploaded data with one line header, first column dates (yyyy-mm-dd format), second column flow values in a tab-delimited format if wq_test = 'flow', otherwise it needs to contain this as well as a '$$' delimiter followed by one line header (date,00600 which needs to match the 5-digit USGS water quality code provided in wq_test), first column dates (yyyy-mm-dd format), second column water quality test values in a tab-delimited format. Only used if merge_datasets == 'true' or database == 'UserData'.",
      "value": ""
    }
  ]
}
{
  "metainfo": {
    "status": "Finished",
    "suid": "19ffe482-d980-11e5-988e-55e0cbef42c7",
    "cloud_node": "172.1.6.246",
    "tstamp": "2016-02-22 09:19:51",
    "service_url": "http://csip.engr.colostate.edu:8082/csip-cfa/m/cfa/durationcurve/1.0",
    "request_ip": "10.2.228.70",
    "cpu_time": 24647,
    "expiration_date": "2016-02-22 09:20:46"
  },
  "parameter": [
    {
      "name": "database",
      "description": "the database that the flow station belongs to (CDWR | STORET | USGS)",
      "value": "USGS"
    },
    {
      "name": "org_id",
      "description": "The ID for the supervising organization for the station within the STORET database (only used if database = 'STORET')",
      "value": "n/a"
    },
    {
      "name": "station_id",
      "description": "station ID or name abbreviation used to query the specified database",
      "value": "06752280"
    },
    {
      "name": "station_name",
      "description": "Station name",
      "value": "CACHE LA POUDRE RIV AB BOXELDER CRK NR TIMNATH, CO"
    },
    {
      "name": "wq_test",
      "description": "If = 'flow' then a flow duration curve analysis is performed otherwise a load duration curve analysis is performed. Format for ldc wq_test is: '00600 Total nitrogen, water, unfiltered, milligrams per liter -- mg/L' = '5-digit-USGS-water-quality-test-code test-name -- units'",
      "value": "00600 Total nitrogen, water, unfiltered, milligrams per liter -- mg/L"
    },
    {
      "name": "wq_target",
      "description": "Water Quality Target",
      "unit": "units of wq_test",
      "value": 10
    },
    {
      "name": "begin_date",
      "description": "Begin date of data analysis, blank or formatted yyyy-MM-dd",
      "value": ""
    },
    {
      "name": "end_date",
      "description": "End date of data analysis, blank or formatted yyyy-MM-dd",
      "value": ""
    },
    {
      "name": "season_begin",
      "description": "Begin of Seasonal Analysis, formatted MM-dd (ex. June 1st would be entered as '06-01')",
      "value": "04-01"
    },
    {
      "name": "season_end",
      "description": "End of Seasonal Analysis, formatted MM-dd (ex. June 1st would be entered as '06-01')",
      "value": "09-30"
    },
    {
      "name": "seasonal_only",
      "description": "If 'true' then a seasonal duration curve will be calculated from a 'season' defined by the parameters 'season_begin' and 'season_end'. If 'false' then annual duration curves will be calculated.",
      "value": false
    },
    {
      "name": "period1_begin",
      "description": "Begin date of first period-based analysis (does not need to match data's begin_date). If left blank, no period-based analysis will be performed.",
      "value": ""
    },
    {
      "name": "period1_end",
      "description": "End date of first period-based analysis (does not need to match data's end_date). If left blank, no period-based analysis will be performed.",
      "value": ""
    },
    {
      "name": "period2_begin",
      "description": "Begin date of second period-based analysis (does not need to match data's begin_date). If left blank, no period-based analysis will be performed.",
      "value": ""
    },
    {
      "name": "period2_end",
      "description": "End date of second period-based analysis (does not need to match data's end_date). If left blank, no period-based analysis will be performed.",
      "value": ""
    },
    {
      "name": "period3_begin",
      "description": "Begin date of third period-based analysis (does not need to match data's begin_date). If left blank, no period-based analysis will be performed.",
      "value": ""
    },
    {
      "name": "period3_end",
      "description": "End date of third period-based analysis (does not need to match data's end_date). If left blank, no period-based analysis will be performed.",
      "value": ""
    },
    {
      "name": "highPercentile",
      "description": "The percentile limit for defining 'high' flow pulses for analysis and statistics",
      "unit": "%",
      "value": 0.75
    },
    {
      "name": "lowPercentile",
      "description": "The percentile limit for defining 'low' flow pulses for analysis and statistics",
      "unit": "%",
      "value": 0.25
    },
    {
      "name": "calcFlowStatisticsFileTF",
      "description": "If true, and wq_test == 'flow', then a series of flow statistics will be calculated and returned in a flow statistics file. If false, no flow statistics file is created.",
      "value": true
    },
    {
      "name": "showMonthlyStatsTF",
      "description": "If true, and the 'wq_test' is flow, then monthly flow statistics will be included in the flow-statistics result file If false, only annual and period of record statistics will be included.",
      "value": false
    },
    {
      "name": "mqn_period",
      "description": "Format for m-day average n-year period low flow, ex. 7Q10 = 7-day average 10-year low flow. (7q10 | false) ",
      "value": "false"
    },
    {
      "name": "merge_datasets",
      "description": "true if user data is provided and this dataset is to be merged with the public dataset, false if public or user data is to be analyzed alone (not merged)",
      "value": false
    },
    {
      "name": "merge_method",
      "description": "Method of merging the datasets, user data first, public data first, max, ave., min (user | public | max | average | min)",
      "value": "user"
    },
    {
      "name": "user_data",
      "description": "String containing user uploaded data with one line header, first column dates (yyyy-mm-dd format), second column flow values in a tab-delimited format if wq_test = 'flow', otherwise it needs to contain this as well as a '$$' delimiter followed by one line header (date,00600 which needs to match the 5-digit USGS water quality code provided in wq_test), first column dates (yyyy-mm-dd format), second column water quality test values in a tab-delimited format. Only used if merge_datasets == 'true' or database == 'UserData'.",
      "value": ""
    }
  ],
  "result": [
    {
      "name": "flow_len",
      "value": "13272"
    },
    {
      "name": "flow_median",
      "value": "12.0",
      "unit": "cfs"
    },
    {
      "name": "flow_mean",
      "value": "151.814",
      "unit": "cfs"
    },
    {
      "name": "flow_len_period1",
      "value": "0"
    },
    {
      "name": "flow_len_period2",
      "value": "0"
    },
    {
      "name": "flow_len_period3",
      "value": "0"
    },
    {
      "name": "wq_len",
      "value": "51.0"
    },
    {
      "name": "wq_units",
      "value": "kg/day"
    },
    {
      "name": "start",
      "value": "1979-10-01"
    },
    {
      "name": "end",
      "value": "2016-02-21"
    },
    {
      "name": "duration_curve_summary",
      "value": "Multiple Pollution Sources: \n\nMost of the flow intervals contain many points which exceed the target.  No single pollution source is likely. Please click 'Further Information' for more pollutant identification help.\nThe grey graphed lines are duration curves for each individual year within the analysis period.\nReferences:\nStream flow data and water quality test data retrieved from the U.S. Geological Survey, National Water Information System: Web Interface. http://waterdata.usgs.gov/nwis, accessed: 2016-02-22 09:20\nCleland, B. R. November 2003. TMDL Development from the 'Bottom Up' Part III: Duration Curves and Wet-Weather Assessments. National TMDL Science and Policy 2003.\nCleland, B. R. August 2007. An Approach for Using Load Duration Curves in the Development of TMDLs. National TMDL Science and Policy 2007."
    },
    {
      "name": "duration_curve_table",
      "value": "Exceedance Percentile\tLoad (kg/day)\tPeriod 1 Load (kg/day)\tPeriod 2 Load (kg/day)\tPeriod 3 Load (kg/day)\n99\t32.11\t-1.0\t-1.0\t-1.0\n95\t51.82\t-1.0\t-1.0\t-1.0\n90\t64.24\t-1.0\t-1.0\t-1.0\n75\t109.98\t-1.0\t-1.0\t-1.0\n50\t299.52\t-1.0\t-1.0\t-1.0\n25\t2178.43\t-1.0\t-1.0\t-1.0\n10\t7104.86\t-1.0\t-1.0\t-1.0\n5\t18432.5\t-1.0\t-1.0\t-1.0\n1\t63004.21\t-1.0\t-1.0\t-1.0"
    },
    {
      "name": "data_source",
      "value": "Stream flow data and water quality test data retrieved from the U.S. Geological Survey, National Water Information System: Web Interface. http://waterdata.usgs.gov/nwis, accessed: 2016-02-22 09:20"
    },
    {
      "name": "mqn_val",
      "value": -1,
      "unit": "cfs"
    },
    {
      "name": "low_flow_error_message",
      "value": ""
    },
    {
      "name": "graph",
      "value": "duration_curve_graph.jpg"
    },
    {
      "name": "result_file",
      "value": "duration_curve_results.txt"
    },
    {
      "name": "flow_statistics_summary",
      "value": "flow_statistics.csv"
    },
    {
      "name": "graph_data_files",
      "value": "duration_curve_graph.out"
    },
    {
      "name": "duration_curve_graph.jpg",
      "value": "http://csip.engr.colostate.edu:8082/csip-cfa/q/19ffe482-d980-11e5-988e-55e0cbef42c7/duration_curve_graph.jpg"
    },
    {
      "name": "duration_curve_results.txt",
      "value": "http://csip.engr.colostate.edu:8082/csip-cfa/q/19ffe482-d980-11e5-988e-55e0cbef42c7/duration_curve_results.txt"
    },
    {
      "name": "flow_statistics.csv",
      "value": "http://csip.engr.colostate.edu:8082/csip-cfa/q/19ffe482-d980-11e5-988e-55e0cbef42c7/flow_statistics.csv"
    },
    {
      "name": "duration_curve_graph.out",
      "value": "http://csip.engr.colostate.edu:8082/csip-cfa/q/19ffe482-d980-11e5-988e-55e0cbef42c7/duration_curve_graph.out"
    }
  ]
}
 (none)
 duration_curve_graph.jpg; duration_curve_results.txt; flow_statistics.csv
Details
Comments & Attachments
Associations
Children
SCM Commits
History (8)
Baselines
All (8)