#' Dados dos principais reservatorios brasileiros pertencentes ao Sistema Interligado Nacional
#'
#' @export
#' @param codigo_reservatorio Codigo do reservatorio a ser buscado, (voce pode consultar a tabela com os codigos chamando `tabela_reservatorios`).
#' @param data_inicial Data inicial do registro. Se for anterior a data de funcionamento, retorna a data de registro mais antiga.
#' @param data_final Data final do registro. Pode ser usado Sys.Date() para retornar a data de registro mais recente.
#'
#' @examples
#' reservatorio_sin(19058, "2000-01-01", Sys.Date())
reservatorio_sin <- function(codigo_reservatorio, data_inicial = "1980-01-01", data_final = Sys.Date()){
#info msg
reservatorio_busca <- tabela_reservatorios() %>%
dplyr::filter(codigo %in% codigo_reservatorio) %>%
dplyr::select(reservatorio)
if(nrow(reservatorio_busca) == 0){
usethis::ui_stop("Não foi possível encontrar esse código no banco de dados. Verifique o código na tabela utilizando a função {ui_code('tabela_reservatorios()')}")
}
usethis::ui_info("Buscando as informações do reservatório {reservatorio_busca$reservatorio}")
#motivational msg1
message(motivational_message(1))
#get url
url <- glue::glue("https://www.ana.gov.br/sar0/MedicaoSin?dropDownListEstados=&dropDownListReservatorios={codigo_reservatorio}&dataInicial={format.Date(data_inicial, \'%d\')}%2F{format.Date(data_inicial, \'%m\')}%2F{format.Date(data_inicial, \'%Y\')}&dataFinal={format.Date(data_final, \'%d\')}%2F{format.Date(data_final, \'%m\')}%2F{format.Date(data_final, \'%Y\')}&button=Buscar")
nodes_table <- rvest::read_html(url)%>%
rvest::html_nodes("table")
#motivation msg 2
message(motivational_message(2))
#organiza
table_reservoir <- nodes_table[[1]]%>%
rvest::html_table() %>%
janitor::clean_names() %>%
dplyr::relocate(dplyr::last_col()) %>%
dplyr::rename(data = 1,
codigo_reservatorio = 2,
afluencia_m3_s = 5,
defluencia_m3_s = 6,
vazao_vertida_m3_s = 7,
vazao_turbinada_m3_s = 8,
vazao_natural_m3_s = 9,
volume_util_percentual = 10,
vazao_incremental_m3_s = 11)
table_reservoir$data <- as.Date(table_reservoir$data, format = "%d/%m/%Y")
table_reservoir$codigo_reservatorio <- as.factor(table_reservoir$codigo_reservatorio)
table_reservoir$reservatorio <- as.factor(table_reservoir$reservatorio)
table_reservoir$cota_m <- as.numeric(sub(",",".",table_reservoir$cota_m))
table_reservoir$afluencia_m3_s <- as.numeric(sub(",",".",table_reservoir$afluencia_m3_s))
table_reservoir$defluencia_m3_s <- as.numeric(sub(",",".",table_reservoir$defluencia_m3_s))
table_reservoir$vazao_vertida_m3_s <- as.numeric(sub(",",".",table_reservoir$vazao_vertida_m3_s))
table_reservoir$vazao_turbinada_m3_s <- as.numeric(sub(",",".",table_reservoir$vazao_turbinada_m3_s))
table_reservoir$vazao_natural_m3_s <- as.numeric(sub(",",".",table_reservoir$vazao_natural_m3_s))
table_reservoir$volume_util_percentual <- as.numeric(sub(",",".",table_reservoir$volume_util_percentual))
table_reservoir$vazao_incremental_m3_s <- as.numeric(sub(",",".",table_reservoir$vazao_incremental_m3_s))
if(nrow(table_reservoir) == 0){
usethis::ui_oops("Não foi possível obter os dados. Verifique se as variáveis estão corretas ou entre em contato!")
}else{
usethis::ui_done(motivational_message(3))
return(table_reservoir)
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.