knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.path = "man/figures/README-",
  out.width = "100%"
)

fuse.prep

Lifecycle: experimental Codecov test coverage

O pacote {fuse.prep} tem o objetivo de gerar os dados de entrada para aplicação do Framework for Understanding Structural Errors (FUSE) nomodo de escala de bacia hidrográfica. São necessários dois arquivos NetCDF de entrada para o FUSE:

A seguir apresenta-se como gerar estes dois arquivos a partir de dados pré-processados fornecidos com os pacotes. Após conhecer estas funções, você pode estar interessado em gerar os dados para sua bacia hidrográfica de interesse. Este procedimento é detalhado nas vinhetas fornecidas com o {fuse.prep}. Recomenda-se reproduzi-las na seguinte ordem:

  1. vignette('pp-elevbands', package = "fuse.prep")

  2. vignette('pp-forcmets', package = "fuse.prep")

Pré-requisitos do sistema

Como o {fuse.prep} depende dos pacotes {lhmetools}, {HEgis} e {HEobs}. Para sistemas linux, você precisa instalar:

No Windows você precisa do 7-zip, um software livre, facilmente instalado a partir do R com o pacote {installr} usando installr::install.7zip().

Instalação

O {fuse.prep} pode ser instalado do GitHub com:

# install.packages("devtools")
devtools::install_github(
  "lhmet-ped/fuse.prep",
  build_vignettes = TRUE,
  dependencies = TRUE
)

A opção build_vignettes = TRUE instalará o pacote incluindo as vinhetas do pacote que apresentam as etapas de pré-processamento dos dados necessários para criação dos arquivos NetCDF.

NetCDF de bandas de elevação

Os dados de exemplo são da Bacia Hidrográfica associada ao posto 74 (UHE G.B. MUNHOZ). Os dados necessários para geração do arquivo NetCDF de bandas de elevação:

Estes dados são disponibilizados com este pacote (precclim74) e com o pacote {HEgis} (poly74 e condem74).

library(HEgis)
poly74
condem74
library(fuse.prep)
precclim74

Para saber como estes 3 arquivos foram gerados consulte a vinheta de Pré-processamento dos dados de bandas de elevação digitando vignette('pp-elevbands', package = "fuse.prep").

O arquivo NetCDF de bandas de elevação é gerado com a função elev_bands_ncname() que requer como entrada os dados carregados acima e o centróide do polígono. O centróide do polígono da bacia hidrográfica é obtido com a função centroids().

(poly_ctrd <- centroids(poly_station = poly74))

Para gerar o arquivo precisamos definir onde ele será salvo.

# arquivo de saída - altere o caminho para o local desejado
# nome do arquivo netcdf: 'suffix_elev_bands.nc'
(suffix <- paste0("posto", poly74$codONS))
dest_dir <- tempdir()
elev_bands_ncname <- file.path(
  dest_dir, 
  paste(suffix, "elev_bands.nc", sep = "_")
)

Agora temos os dados de entrada para função elev_bands_ncname() gerar o arquivo NetCDF.

elev_bands_file <- elev_bands_nc(
  con_dem = condem74, 
  meteo_raster = precclim74, 
  nbands = 14,
  ccoords = poly_ctrd,
  file_nc = elev_bands_ncname,
  na = -9999
)
elev_bands_file
file.exists(elev_bands_file)
#Verificação do arquivo gerado.
if (requireNamespace("tidync", quietly = TRUE)) {
  library(tidync)
  out <- tidync(elev_bands_file) %>% 
    hyper_tibble()
  # compara arquivo de exemplo do FUSE
  ref <- tidync::tidync("/home/hidrometeorologista/Desktop/fuse-poc-sim/fuse_catch/input/us_09066300_elev_bands.nc") %>% tidync::hyper_tibble()
}

out
ref <- tidync::tidync("/home/hidrometeorologista/Desktop/fuse-poc-sim/fuse_catch/input/us_09066300_input.nc") %>% tidync::hyper_tibble()
ref
names(ref)

NetCDF das forçantes meteorológicas

Para gerar o arquivo NetCDF com as séries temporais das forçantes hidrometeorológicas médias na área da BH, utilizaremos o conjunto de dados forcdata74 disponibilizado com este pacote.

str(forcdata74)

Para saber como gerar estes dados consulte a vinheta de Pré-processamento dos dados das forçantes meteorológicas digitando vignette('pp-forcmets', package = "fuse.prep").

Cada variável é passada como um vetor conforme código abaixo. Os nomes dos vetores devem seguir este padrão: pr para precipitação, pet para evapotranspiração potencial e q_obs para vazão observada. Além das séries temporais das variáveis precisamos das datas, as coordenadas da bacia hidrográfica do posto e o arquivo NetCDF que será salvo.

# arquivo de saída - altere o caminho para o local desejado
forcings_ncname <- file.path(
  dest_dir, 
  paste(suffix, "input.nc", sep = "_")
)
# exporta dados para netcdf
meteo_forcing_nc(
  forc_tbl = forcdata74,
  ccoords = centroids(poly_station = poly74),
  file_nc = forcings_ncname 
)
file.exists(forcings_ncname)
library(tidync)
forcing_file <- forcings_ncname
out <- tidync(forcing_file) %>% hyper_tibble()
# compara arquivo de exemplo do FUSE
ref <- tidync("/home/hidrometeorologista/Desktop/fuse-poc-sim/fuse_catch/input/us_09066300_input.nc") %>% 
  hyper_tibble()
out
ref


lhmet-ped/fuse.prep documentation built on Dec. 7, 2020, 3:08 p.m.