2021年1月21日 星期四

水文建模shiny應用 (Hydrological Modelling with shiny app)

主題

R在水文模型具有廣泛應用,包括水文資料的讀取與下載,水文資料分析與建模,詳細可參考 CRAN-Hydrology  [https://cran.r-project.org/web/views/Hydrology.html]。 其中 AirGR套件提供水文建模工具,該套件包括降雨徑流模型,積雪和融雪模型以及相關的校準和評估功能。另 airGRteaching套件,將建模結果以互動式網頁呈現,提供使用者更進一步的水文分析與應用。如果需修改為職場的內容,可修改 "C:\Users\88697\Documents\R\win-library\4.0\airGRteaching\ShinyGR"資料夾的 ui.R,server.R 二個檔案。

執行結果1: 水文模型


執行結果2: 水文模型綱要圖





關鍵字

Hydrological Modelling 
# shiny

套件

1. airGR 套件 - 建立水文建模 https://cran.r-project.org/web/packages/airGR/index.html
2. airGRteaching 套件- 提供水文建模互動式網頁呈現 https://cran.r-project.org/web/packages/airGRteaching/index.html
3. shiny套件 - 提供互動式網頁功能 https://cran.r-project.org/web/packages/shiny/index.html

R程式碼下載


R程式碼

# title   : 水文建模shiny應用
# author  : Ming-Chang Lee
# email   : alan9956@gmail.com
# RWEPA   : http://rwepa.blogspot.tw/
# GitHub  : https://github.com/rwepa
# resource: https://rwepa.blogspot.com/2021/01/shiny-hydrological-modelling-with-shiny.html

# 安裝2個基本套件
# install.packages(c("airGR", "airGRteaching"))

# 使用remotes套件, 安裝最新版htmlwidgets套件
# 一定要安裝最新版htmlwidgets套件, 否則會有錯誤.
# install.packages("remotes")
# remotes::install_github("ramnathv/htmlwidgets")

library(airGRteaching)

# 載入L0123001資料集
data(L0123001, package = "airGR")

# 顯示物件清單
ls()
# [1] "BasinInfo" "BasinObs"

head(BasinObs)
# "DatesR": 年-月-日, POSIXct物件
# "P"  : average precipitation [mm/time step] 每日平均降雨量
# "T"  : catchment average air temperature [℃]  平均氣溫
# "E"  : catchment average potential evapotranspiration [mm/day] 平均潛在蒸發量
# "Qls": outlet discharge [l/s] 出水口排出量
# "Qmm": outlet discharge [mm/day] 出水口排出量

# 建立低地盆地資料
BV_L0123001 <- BasinObs[0001:6000, c("DatesR", "P", "E", "Qmm", "T")]

# 建立多山盆地資料
BV_L0123002 <- BasinObs[5000:9999, c("DatesR", "P", "E", "Qmm", "T")]
BI_L0123002 <- BasinInfo

# 建立互動式網頁資料分析
ShinyGR(ObsDF = list("Low-land basin" = BV_L0123001, "Mountainous basin" = BV_L0123002),
        ZInputs = list(NULL, median(BI_L0123002$HypsoData)),
        HypsoData = list(NULL, BI_L0123002$HypsoData),
        NLayers = list(5, 5),
        SimPer = list(c("1994-01-01", "1998-12-31"), c("2004-01-01", "2006-12-31")),
        theme = "United")

# theme 預設值為 "RStudio",可修改為以下值:
# ["Cerulean""Cyborg""Flatly""Inrae""Saclay""United" or "Yeti"]