Universidade Federal de Santa Maria - UFSM
Departamento de Física
Prof. Jônatan Tatsch
Aluno Roilan Hernandez Valdes
setwd("~/MATERIAS/R/PROJETO_FINAL/")
dados.pauliceia <- read.table("PEG_30m_Tatsch2009-2014.dat",
header = TRUE,
na.strings = c("-7777.00000000","-9999.00000000") )
# Convertendo a data
dados.pauliceia$date <- as.Date(dados.pauliceia$DOY-1,
origin = as.Date(paste(dados.pauliceia$ANO,
"-01-01 00:00",
sep = "")
)
)
dados.pauliceia$date <- as.POSIXct(paste(dados.pauliceia$date," ",
ifelse(dados.pauliceia$HH < 10,
paste("0",dados.pauliceia$HH,sep = ""),
dados.pauliceia$HH),
":",
ifelse(dados.pauliceia$MN < 10,
paste("0",dados.pauliceia$MN,sep = ""),
dados.pauliceia$MN),
sep = "" ),
tz = "UTC")
# Convertendo a vazão de m³/s para mm
dados.pauliceia$VAZAO.mm. <- dados.pauliceia$VAZAO.m3.s. * 1.8 / 11.94
O intervalo de dados está definido entre 2009-07-01 17:00:00 e 2014-09-17 14:30:00
Precipitação no exutório, torre e vazão, escala horária.
# Rearranjo da serie:
# Acumulado da chuva para cada sitio e vazão na escala horária
dados.horario <- data.frame(date = dados.pauliceia$date[c(T,F)])
# Sumando para levar a escala horária
to.hour.RAIN_AWS.mm. <- aggregate(x = dados.pauliceia$RAIN_AWS.mm.,
by = list(format(dados.pauliceia$date,"%Y-%m-%d %H", tz = "UTC")),
FUN = sum,
na.rm = FALSE)
dados.horario$RAIN_AWS.mm. <- to.hour.RAIN_AWS.mm.$x
to.hour.RAIN_AWS.mm. <- xts(to.hour.RAIN_AWS.mm.$x, order.by = dados.horario$date, tzone = "UTC")
to.hour.RAIN_VERT.mm. <- aggregate(x = dados.pauliceia$RAIN_VERT.mm.,
by = list(format(dados.pauliceia$date,"%Y-%m-%d %H", tz = "UTC")),
FUN = sum,
na.rm = FALSE)
dados.horario$RAIN_VERT.mm. <- to.hour.RAIN_VERT.mm.$x
to.hour.RAIN_VERT.mm. <- xts(to.hour.RAIN_VERT.mm.$x, order.by = dados.horario$date, tzone = "UTC")
to.hour.VAZAO <- aggregate(x = dados.pauliceia$VAZAO.mm. ,
by = list(format(dados.pauliceia$date,"%Y-%m-%d %H", tz = "UTC")),
FUN = sum,
na.rm = FALSE)
dados.horario$VAZAO.mm. <- to.hour.VAZAO$x
to.hour.VAZAO <- xts( to.hour.VAZAO$x, order.by = dados.horario$date, tzone = "UTC")
Separação dos escoamentos básico e superficial, na escala horária.
São usadas as funções do pacote EcoHydRology
# Separação de escoamentos básico e superficial
sem.na <- dados.horario$VAZAO.mm.
# Sustituindo os dados NA com a média da vazão [A função BaseflowSeparation não aceita NA]
sem.na[is.na(dados.horario$VAZAO.mm.)] <- mean(dados.horario$VAZAO.mm., na.rm = TRUE)
# Separação dos escoamentos
vaz <- BaseflowSeparation(sem.na, filter_parameter = 0.95, passes = 5)
# Voltando ao NA onde tinha NA
vaz$bt[is.na(dados.horario$VAZAO.mm.)] <- NA
vaz$qft[is.na(dados.horario$VAZAO.mm.)] <- NA
dados.horario$VAZAO.mm.basico <- vaz$bt
dados.horario$VAZAO.mm.superficial <- vaz$qft
# Convertendo no formato XTS
hour.VAZAO.mm.basico <- xts(vaz$bt, order.by = dados.horario$date, tz = "UTC")
hour.VAZAO.mm.superfial <- xts(vaz$qft, order.by = dados.horario$date, tz = "UTC")
Precipitação no exutório, torre e a vazão, escala diária.
# Rearranjo da serie:
# Acumulado da chuva para cada sitio e vazão na escala diária
dados.diarios <- data.frame(date = as.POSIXct(unique(format(dados.pauliceia$date, "%Y-%m-%d")) ) )
# Sumando para levar a escala diária
to.day.RAIN_AWS.mm. <- aggregate(x = dados.pauliceia$RAIN_AWS.mm.,
by = list(format(dados.pauliceia$date,"%Y-%m-%d", tz = "UTC")),
FUN = sum,
na.rm = FALSE)
dados.diarios$RAIN_AWS.mm. <- to.day.RAIN_AWS.mm.$x
to.day.RAIN_AWS.mm. <- xts(to.day.RAIN_AWS.mm.$x, order.by = dados.diarios$date, tzone = "UTC")
# Sumando para levar a escala diária
to.day.RAIN_VERT.mm. <- aggregate(x = dados.pauliceia$RAIN_VERT.mm.,
by = list(format(dados.pauliceia$date,"%Y-%m-%d", tz = "UTC")),
FUN = sum,
na.rm = FALSE)
dados.diarios$RAIN_VERT.mm. <- to.day.RAIN_VERT.mm.$x
to.day.RAIN_VERT.mm. <- xts(to.day.RAIN_VERT.mm.$x, order.by = dados.diarios$date, tzone = "UTC")
#Determinando a vazão média diária
to.day.VAZAO <- aggregate(x = dados.pauliceia$VAZAO.mm.,
by = list(format(dados.pauliceia$date,"%Y-%m-%d", tz = "UTC")),
FUN = sum,
na.rm = FALSE)
dados.diarios$VAZAO.mm. <- to.day.VAZAO$x
to.day.VAZAO <- xts( to.day.VAZAO$x, order.by = dados.diarios$date, tzone = "UTC")
Separação dos escoamentos básico e superficial, na escala diária.
# Separação de escoamentos básico e superficial
sem.na <- dados.diarios$VAZAO.mm.
# Sustituindo os dados NA com a média da vazão [A função BaseflowSeparation não aceita NA]
sem.na[is.na(dados.diarios$VAZAO.mm.)] <- mean(dados.diarios$VAZAO.mm., na.rm = TRUE)
# Separação dos escoamentos
vaz <- BaseflowSeparation(sem.na, filter_parameter = 0.95, passes = 3)
# Voltando ao NA onde tinha NA
vaz$bt[is.na(dados.diarios$VAZAO.mm.)] <- NA
vaz$qft[is.na(dados.diarios$VAZAO.mm.)] <- NA
dados.diarios$VAZAO.mm.basico <- vaz$bt
dados.diarios$VAZAO.mm.superficial <- vaz$qft
# Convertendo no formato XTS
day.VAZAO.mm.basico <- xts(vaz$bt, order.by = dados.diarios$date, tz = "UTC")
day.VAZAO.mm.superfial <- xts(vaz$qft, order.by = dados.diarios$date, tz = "UTC")
Precipitação no exutório, torre e a vazão, escala mensal.
# Rearranjo da serie:
# Acumulado da chuva para cada sitio e vazão na escala diária
dados.month <- data.frame(date = as.yearmon(unique(format(dados.pauliceia$date, "%Y-%m")), format = "%Y-%m" ) )
# Sumando para levar a escala diária
to.month.RAIN_AWS.mm. <- aggregate(x = dados.pauliceia$RAIN_AWS.mm.,
by = list(format(dados.pauliceia$date,"%Y-%m", tz = "UTC")),
FUN = sum,
na.rm = T)
dados.month$RAIN_AWS.mm. <- to.month.RAIN_AWS.mm.$x
to.month.RAIN_AWS.mm. <- xts(to.month.RAIN_AWS.mm.$x, order.by = dados.month$date, tzone = "UTC")
# Sumando para levar a escala diária
to.month.RAIN_VERT.mm. <- aggregate(x = dados.pauliceia$RAIN_VERT.mm.,
by = list(format(dados.pauliceia$date,"%Y-%m", tz = "UTC")),
FUN = sum,
na.rm = T)
dados.month$RAIN_VERT.mm. <- to.month.RAIN_VERT.mm.$x
to.month.RAIN_VERT.mm. <- xts(to.month.RAIN_VERT.mm.$x, order.by = dados.month$date, tzone = "UTC")
#Determinando a vazão média diária en [mm] a partir dos dados de média hora
to.month.VAZAO <- aggregate(x = dados.pauliceia$VAZAO.mm.,
by = list(format(dados.pauliceia$date,"%Y-%m", tz = "UTC")),
FUN = sum,
na.rm = T)
dados.month$VAZAO.mm. <- to.month.VAZAO$x
to.month.VAZAO <- xts( to.month.VAZAO$x, order.by = dados.month$date, tzone = "UTC")
A área da bacia foi determinada usando o Modelo Digital do Terreno (MDT), direcção de fluxo, e a área a montante partindo do ponto de exutório da bacia, o valor da área é: 11.94 km² (1.19410^{7} m² ).
by.year.prec <- aggregate(x = dados.pauliceia$RAIN_AWS.mm.,
by = list(format(as.POSIXct(dados.pauliceia$date), "%Y")),
FUN = sum,
na.rm = T )
quantos.na.prec <- as.data.frame(round(table(format(dados.pauliceia[!is.na(dados.pauliceia$RAIN_AWS.mm.),"date"],
"%Y") ) / 48))
names(quantos.na.prec) <- c("Ano", "notNA.prec")
# by.year.vaz <- aggregate(x = dados.pauliceia$VAZAO.m3.s. *(3.6*24/11.94) ,
# by = list(format(as.POSIXct(dados.pauliceia$date), "%Y")),
# FUN = mean,
# na.rm = T
# )
by.year.vaz <- aggregate(x = dados.pauliceia$VAZAO.mm. ,
by = list(format(as.POSIXct(dados.pauliceia$date), "%Y")),
FUN = sum,
na.rm = T
)
quantos.na.vaz <- as.data.frame(round(table(format(dados.pauliceia[!is.na(dados.pauliceia$VAZAO.mm.), "date"],
"%Y") )/48))
names(quantos.na.vaz) <- c("Ano", "notNA.vaz")
total <- as.vector(round(table(format(dados.pauliceia[, "date"],"%Y") )/48))
na.all <- cbind(quantos.na.vaz, quantos.na.prec$notNA.prec, total)
names(na.all) <- c("Ano", "Valid.Vazão", "Valid.Prec", "Total")
kable(na.all, format = "markdown",align = "c" )
| Ano | Valid.Vazão | Valid.Prec | Total |
|---|---|---|---|
| 2009 | 179 | 183 | 183 |
| 2010 | 325 | 338 | 365 |
| 2011 | 365 | 365 | 365 |
| 2012 | 366 | 366 | 366 |
| 2013 | 365 | 365 | 365 |
| 2014 | 259 | 218 | 260 |
esco.coef <- data.frame(date = by.year.prec$Group.1,
precip = by.year.prec$x,
vazao = by.year.vaz$x ,
coef = by.year.vaz$x / by.year.prec$x)
kable(esco.coef, format = "markdown",align = "c" )
| date | precip | vazao | coef |
|---|---|---|---|
| 2009 | 1016.242 | 155.0198 | 0.1525422 |
| 2010 | 1052.330 | 291.7379 | 0.2772305 |
| 2011 | 1462.411 | 338.3178 | 0.2313425 |
| 2012 | 1185.670 | 348.8181 | 0.2941949 |
| 2013 | 1273.048 | 349.2596 | 0.2743491 |
| 2014 | 289.052 | 217.4663 | 0.7523432 |
umid <- names(dados.pauliceia[,grep(names(dados.pauliceia),pattern = "Umid.")])
umidade.pauliceia <- dados.pauliceia[,c("date",umid)]
kable(summary(umidade.pauliceia[,-1]*100), format = "markdown", digits = 8)
| UmidSolo_10cm | UmidSolo_20cm | UmidSolo_20cm.1 | UmidSolo_80cm | UmidSolo_150cm | UmidSolo_200cm | |
|---|---|---|---|---|---|---|
| Min. : 6.49 | Min. : 6.32 | Min. : 3.50 | Min. : 6.33 | Min. : 9.23 | Min. : 8.49 | |
| 1st Qu.: 8.75 | 1st Qu.: 8.40 | 1st Qu.: 4.37 | 1st Qu.: 7.28 | 1st Qu.:11.10 | 1st Qu.: 9.67 | |
| Median :12.30 | Median :12.65 | Median : 6.71 | Median :11.28 | Median :14.41 | Median :12.44 | |
| Mean :12.73 | Mean :12.47 | Mean : 7.13 | Mean :10.98 | Mean :13.93 | Mean :13.14 | |
| 3rd Qu.:15.88 | 3rd Qu.:15.78 | 3rd Qu.: 9.21 | 3rd Qu.:13.52 | 3rd Qu.:16.47 | 3rd Qu.:15.58 | |
| Max. :56.04 | Max. :47.48 | Max. :49.51 | Max. :60.55 | Max. :57.41 | Max. :60.83 | |
| NA’s :52369 | NA’s :72176 | NA’s :63481 | NA’s :56527 | NA’s :56570 | NA’s :64930 |
# Conteúdo de água no perfil do solo
cont.agua <- data.frame(date = umidade.pauliceia$date,
cont.agua = (umidade.pauliceia$UmidSolo_10cm * 100 +
umidade.pauliceia$UmidSolo_20cm * 200 +
umidade.pauliceia$UmidSolo_80cm * 800 +
umidade.pauliceia$UmidSolo_150cm * 1500 )
)
cont.agua.xts <- xts(x = cont.agua$cont.agua , order.by = cont.agua$date, tzone = "UTC")
names(cont.agua.xts) <- "cont.agua"
as <- dygraph(data = cont.agua.xts, main = "Conteúdo de água no solo.")
as <- dySeries(dygraph = as,label = "cont.agua" )
as <- dyRangeSelector(dygraph = as)
as