-
Notifications
You must be signed in to change notification settings - Fork 2
Satellite based Soil Moisture Assimilation in Hydrologic Model
Soil moisture is a major control in the rainfall-runoff partitioning. Hydrologic models could misrepresent this variable due to uncertainty in their model structure, formulations that could lead to errors in runoff predictions. Emerging satellite-based soil moisture products such as SMOS and SMAP provide information in space and time. Satellite-based soil moisture data assimilation, as a viable approach, could be used for accounting the uncertainties in the model and observations. In this example, we test streamflow prediction performance using HydroVisE before and after satellite-based soil moisture assimilation using various assimilation schemes.
Example demo and config file for implemented HydroVisE web-app for visualization and evaluation of streamflow predictions by SMAP and SMOS satellite-based soil moisture data assimilation into a distributed hydrologic model.
As shown in animation below, user can examine the hydrologic model performance metrices for streamflow predictions and observations from USGS gauges.
The config file for this demo is given below:
{
"page":{
"title": "HydroVisE - Hydrologic Assessment of Satellite-based Soil Moisture"
},
"data_part": {
"min_val": 2010,
"max_val": 2018,
"step": 1,
"initial": 2015
},
"traces": {
"t1": {
"prod": "Q",
"x_name": "dt",
"y_name": "Q",
"modEnabled": 1,
"dynamic": 0,
"ensemble": 0,
"template": {
"var": [
"comID",
"yr"
],
"path_format": "http://s-iihr50.iihr.uiowa.edu/smap/demo/platformdata/{1}/Q/{0}.csv"
},
"style": {
"type": "scattergl",
"mode": "lines",
"name": "USGS",
"line": {
"width": 2,
"color": "black"
}
}
},
"t2": {
"prod": "Q_ol",
"x_name": "dt",
"y_name": "Q",
"modEnabled": 1,
"dynamic": 0,
"ensemble": 0,
"template": {
"var": [
"yr",
"comID"
],
"path_format": "http://s-iihr50.iihr.uiowa.edu/smap/demo/platformdata/{0}/Q_ol/{1}.csv"
},
"style": {
"type": "scattergl",
"mode": "lines",
"name": "Open Loop",
"line": {
"color": "blue"
}
}
},
"t3": {
"prod": "Q_assim",
"x_name": "dt",
"y_name": "Q",
"dynamic": 0,
"ensemble": 0,
"modEnabled": 1,
"template": {
"var": [
"yr",
"comID"
],
"path_format": "http://s-iihr50.iihr.uiowa.edu/smap/demo/platformdata/{0}/Q_assim_norm_v2/{1}.csv"
},
"style": {
"type": "scattergl",
"mode": "lines",
"name": "SMAP V2",
"line": {
"color": "#b2182b"
}
}
},
"t4": {
"prod": "Q_assim_smos",
"x_name": "dt",
"y_name": "Q",
"dynamic": 0,
"ensemble": 0,
"modEnabled": 1,
"template": {
"var": [
"yr",
"comID"
],
"path_format": "http://s-iihr50.iihr.uiowa.edu/smap/demo/platformdata/{0}/Q_assim_smos/{1}.csv"
},
"style": {
"type": "scattergl",
"mode": "lines",
"name": "SMOS",
"line": {
"color": "#1b7837"
}
}
},
"t5": {
"prod": "EnKF_N30",
"x_name": "dt",
"y_name": "Q",
"dynamic": 0,
"ensemble": 0,
"modEnabled": 1,
"template": {
"var": [
"yr",
"comID"
],
"path_format": "http://s-iihr50.iihr.uiowa.edu/smap/demo/platformdata/{0}/EnKF_IA30ConstVar/{1}.csv"
},
"style": {
"type": "scattergl",
"mode": "lines",
"name": "SMAP V2 EnKF",
"line": {
"color": "#d6604d"
}
}
},
"t6": {
"prod": "EnKF_N30_varvar",
"x_name": "dt",
"y_name": "Q",
"dynamic": 0,
"ensemble": 0,
"modEnabled": 1,
"template": {
"var": [
"yr",
"comID"
],
"path_format": "http://s-iihr50.iihr.uiowa.edu/smap/demo/platformdata/{0}/EnKF_IA30VarVar/{1}.csv"
},
"style": {
"type": "scattergl",
"mode": "lines",
"name": "SMAP V2 EnKFV",
"line": {
"color": "#f4a582"
}
}
},
"t7": {
"prod": "EnKF_IA30ConstVar_SMOS",
"x_name": "dt",
"y_name": "Q",
"dynamic": 0,
"ensemble": 0,
"modEnabled": 1,
"template": {
"var": [
"yr",
"comID"
],
"path_format": "http://s-iihr50.iihr.uiowa.edu/smap/demo/platformdata/{0}/EnKF_IA30ConstVar_SMOS/{1}.csv"
},
"style": {
"type": "scattergl",
"mode": "lines",
"name": "SMOS EnKF",
"line": {
"color": "#5aae61"
}
}
},
"t8": {
"prod": "EnKF_IA30VarVar_SMOS",
"x_name": "dt",
"y_name": "Q",
"dynamic": 0,
"ensemble": 0,
"modEnabled": 1,
"template": {
"var": [
"yr",
"comID"
],
"path_format": "http://s-iihr50.iihr.uiowa.edu/smap/demo/platformdata/{0}/EnKF_IA30VarVar_SMOS/{1}.csv"
},
"style": {
"type": "scattergl",
"mode": "lines",
"name": "SMOS EnKFV",
"line": {
"color": "#a6dba0"
}
}
}
},
"modTrace": {
"modJS": "./applications/plugin/modQ2S.js",
"modMethod": "Q2Stage",
"modEvnt": "evntQ2Stage",
"customEval": "translate_id=false",
"default": "flw",
"mod": {
"default": {
"button": "Discharge",
"pltPath": "yaxis.title",
"val": "Q (m3/s)"
},
"derived": {
"button": "Stage",
"pltPath": "yaxis.title",
"val": "Stage (ft)"
}
}
},
"horizontalGrid": {
"filename": "./data/sig_stage_flow_usgs.csv",
"comID": "link_id",
"unit_convert": 0.0283168,
"style": {
"type": "line",
"xref": "paper",
"x0": 0,
"x1": 1,
"yref": "y",
"y0": 0,
"y1": 0,
"line": {
"color": "gray",
"width": 0.75
}
},
"lines": {
"flw_action": {
"color": "#ffff00"
},
"flw_flood": {
"color": "#f89500"
},
"flw_moderate": {
"color": "#ff0000"
},
"flw_major": {
"color": "#d836ff"
}
}
},
"mapMarkers": {
"fnPath": "lid_usgs.geojson",
"comIDName": "lid",
"geomType":"point",
"markerAttrs": {
"template": {
"var": [],
"path_format": "configs/smap/df_final_new.csv"
},
"comID": "lid"
},
"onEachFeature":{
"click": "clickFeature"
},
"plotTitle": {
"template": {
"var": ["usgs_name","area"],
"format": "{0}<br>Area: {1} km<sup>2</sup>"
}
},
"tooltip": {
"template": {
"var": [
"usgs_name",
"area",
"metricName",
"metric"
],
"format": "<b>USGS Name:</b><br> {0}<br><b>Area: </b>{1} km<sup>2</sup><br><b>{2}:</b>{3}"
},
"format": "",
"propertires": [
"usgs_id",
"area",
"metric"
]
},
"additionalShapes":{
"template": {
"var": ["comID"],
"format": "./services/get_boundary.php?id={0}"
}
}
},
"controls": {
"markerAttrs": {
"kge": {
"var_id": "kge",
"var_name": "KGE",
"onEvent": "selectMetric",
"selected": 1,
"colorPalette": ["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],
"nBins": 11,
"method": "equidistant",
"range": [-0.1, 1]
},
"correlationcoefficient": {
"var_id": "correlationcoefficient",
"var_name": "Correlation",
"onEvent": "selectMetric",
"selected": 0,
"colorPalette": ["#003a00", "#20600a", "#438815", "#6cb23e", "#99dc6c", "#fbb9e8", "#f67bcd", "#dd439b", "#af1d6b", "#7a0040"],
"nBins": 10,
"method": "equidistant",
"range" :[-1, 1],
"decimals": 2
},
"nRMSE": {
"var_id": "nRMSE",
"var_name": "nRMSE",
"onEvent": "selectMetric",
"selected": 0,
"colorPalette": ["#FFFFCC","#FDFF46","#FFAD2F","#CD3232", "#800000"],
"nBins": 10,
"method": "equidistant",
"range" :[0, 0.025],
"decimals": 3
},
"nMAE": {
"var_id": "nMAE",
"var_name": "nMAE",
"onEvent": "selectMetric",
"selected": 0,
"colorPalette": ["white","orange","red","darkred"],
"nBins": 10,
"method": "quantiles",
"range" :[0, 0.025],
"decimals": 3
},
"timing": {
"var_id": "timing",
"var_name": "Timing",
"onEvent": "selectMetric",
"selected": 0,
"colorPalette": ["#0000d8", "#502ef4", "#8652ff", "#b476ff", "#dd9aff", "#ffffff", "#ffffff", "#fc9e80", "#fe6843", "#f50d08", "#c20000", "#8f0000"],
"nBins": 12,
"method": "equidistant",
"range" :[-12, 12]
},
"ppd": {
"var_id": "ppd",
"var_name": "%Peak Dif",
"onEvent": "selectMetric",
"selected": 0,
"colorPalette": ["#1d006e", "#4a2790", "#724eae", "#9877c7", "#bca2dc", "#ffffff", "#ffffff", "#ffa38b", "#f37457", "#d9492f", "#b51f10", "#870000"],
"nBins": 12,
"method": "equidistant",
"range" :[-1.2, 1.2]
},
"pt_change_vol": {
"var_id": "pt_change_vol",
"var_name": "%Vol Dif",
"onEvent": "selectMetric",
"selected": 0,
"colorPalette": ["#0000FF","#4040FF","8080FF","#bfbfFF","#ffffFF","#ffffFF","#f4a582", "#d6604d","#b2182b","#67001f"],
"nBins": 12,
"method": "equidistant",
"range" :[-120, 120]
}
},
"prod": {
"Q_ol": {
"var_id": "Q_ol",
"var_name": "Open loop",
"onEvent": "select_sim_type",
"selected": 1
},
"Q_assim_norm_v2": {
"var_id": "Q_assim_norm_v2",
"var_name": "SMAP V2",
"onEvent": "select_sim_type",
"selected": 0
},
"Q_assim_smos": {
"var_id": "Q_assim_smos",
"var_name": "SMOS",
"onEvent": "select_sim_type",
"selected": 0
},
"EnKF_N30": {
"var_id": "EnKF_N30",
"var_name": "SMAP EnKF",
"onEvent": "select_sim_type",
"selected": 0
},
"EnKF_N30_var": {
"var_id": "EnKF_N30_var",
"var_name": "SMAP EnKFV",
"onEvent": "select_sim_type",
"selected": 0
},
"EnKF_N30_SMOS_varvar": {
"var_id": "EnKF_N30_SMOS_varvar",
"var_name": "SMOS EnKFV",
"onEvent": "select_sim_type",
"selected": 0
},
"EnKF_N30_SMOS_CONST": {
"var_id": "EnKF_N30_SMOS_CONST",
"var_name": "SMOS EnKF",
"onEvent": "select_sim_type",
"selected": 0
}
},
"baseMapType": {
"v1": {
"var_id": "light_all",
"var_name": "Light",
"onEvent": "basemap_changer",
"selected": 1
},
"v2": {
"var_id": "Dark",
"var_name": "Dark",
"onEvent": "basemap_changer",
"selected": 0
},
"v3": {
"var_id": "Esri Imagery",
"var_name": "Esri Imagery",
"onEvent": "basemap_changer",
"selected": 0
},
"v4": {
"var_id": "Toner",
"var_name": "Toner",
"onEvent": "basemap_changer",
"selected": 0
}
}
},
"plotlyLayout": {
"margin": {
"l": 80,
"r": 80,
"b": 70,
"t": 50,
"pad": 1
},
"titlefont": {
"size": 16,
"color": "black"
},
"legend": {
"x": 0,
"y": 1,
"traceorder": "normal",
"font": {
"size": 14,
"color": "#000"
},
"bgcolor": "rgba(255,255,255,0.90)",
"bordercolor": "#000000",
"borderwidth": 1,
"orientation": "h"
},
"xaxis": {
"titlefont": {
"size": 18,
"color": "#1c1c1c"
},
"tickfont": {
"size": 18,
"color": "black"
},
"type": "date"
},
"yaxis": {
"title": "Q (m3/s)",
"titlefont": {
"size": 18,
"color": "#1c1c1c"
},
"tickfont": {
"size": 18,
"color": "black"
},
"autorange": true,
"rangemode": "tozero",
"hoverformat": ".1f"
},
"plot_bgcolor": "#fff",
"paper_bgcolor": "#eee",
"hovermode": "closest",
"updatemenus": [
{
"buttons": [],
"direction": "left",
"pad": {
"r": 10,
"t": 10
},
"showactive": true,
"type": "buttons",
"x": 0,
"xanchor": "left",
"y": 1.15,
"yanchor": "top"
}
],
"initMD": "-04-01 00:00:00",
"finalMD": "-11-01 00:00:00",
"displayModeBar": true
},
"mapLayers": {
"ifc_rvr.geojson": {
"fnPath": "data/staticLayers/kmls/ifc_rvr.geojson",
"fn": "ifc_rvr.geojson",
"var_name": "IFC Bridge Sensor",
"onEvent": "toggLyrStd",
"selected": false
},
"eqd_nexrad.kmz": {
"fnPath": "data/staticLayers/kmls/eqd_nexrad.kmz",
"fn": "eqd_nexrad.kmz",
"var_name": "Thiessen Polygon",
"onEvent": "toggLyrStd",
"selected": false
},
"nexrad_150_wgs84.kmz": {
"fnPath": "data/staticLayers/kmls/nexrad_150_wgs84.kmz",
"fn": "nexrad_150_wgs84.kmz",
"var_name": "NEXRAD 150 km",
"onEvent": "toggLyrStd",
"selected": false
},
"nexrad230km.kmz": {
"fnPath": "data/staticLayers/kmls/nexrad230km.kmz",
"fn": "nexrad230km.kmz",
"var_name": "NEXRAD 230 km",
"onEvent": "toggLyrStd",
"selected": false
},
"wt_area_kml.kmz": {
"fnPath": "data/staticLayers/kmls/wt_area_kml.kmz",
"fn": "wt_area_kml.kmz",
"var_name": "Wind Farms",
"onEvent": "toggLyrStd",
"selected": false
},
"wt_point.geojson": {
"fnPath": "data/staticLayers/kmls/wt_point.kml",
"fn": "wt_point.kml",
"var_name": "Wind Turbines",
"onEvent": "toggLyrStd",
"selected": false
},
"IACounties.geojson": {
"fnPath": "data/staticLayers/kmls/IACounties.geojson",
"fn": "IACounties.geojson",
"var_name": "IA Counties",
"onEvent": "toggLyrStd",
"selected": false
}
},
"map": {
"center": [
41.9472,
-93.5403
],
"defaultZoom": 8,
"maxZoom": 15,
"basemapList": {
"default": {
"id": "light_all",
"url": "http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png",
"attribution": "© <a href=\"http://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors, © <a href=\"https://carto.com/attributions\">CARTO</a>",
"subdomains": "abcd"
}
},
"geoSearch": true
},
"customBaseMap": {
"url": "http://s-iihr50.iihr.uiowa.edu/hydro-analytics.net/ifc_net3_simp.geojson.gz",
"colors": {
"3": "#00e4ff",
"4": "#00c5ff",
"5": "#00acff",
"6": "#018eff",
"7": "#007dff",
"8": "#007bff",
"9": "#0055ff",
"10": "#000000",
"11": "#321321"
},
"name" : "River Network",
"propoertyName": "h_order"
}
}
- Tutorial 1
- More tutorials will be added soon
- Real-time and Historical USGS Streamflow Viewer
- Sensor and Satellite-based Soil Moisture Visualization
- Satellite-based Soil Moisture Assimilation in Hydrologic Model
- Hydrologic Model Streamflow Forecasts Visualization