R/download_precvias.R

Defines functions download_precvias

Documented in download_precvias

#' Baixa os dados de precariedade viaria
#'
#' Esta funcao realiza o download dos dados espaciais em formato Parquet
#' hospedados no Zenodo. Os arquivos sao salvos no diretorio de cache
#' do usuario para evitar downloads repetidos.
#'
#' @param uf Sigla do estado (ex: "RS"), ou "all" para o Brasil inteiro. Padrao "all".
#' @return O caminho do arquivo ou diretorio no cache local.
#' @export
#' @examples
#'
#' caminho_ac <- download_precvias("AC")
#'

download_precvias <- function(uf = "all") {
  uf <- toupper(uf)
  estados_validos <- c("AC", "AL", "AP", "AM", "BA", "CE", "DF", "ES", "GO",
                       "MA", "MT", "MS", "MG", "PA", "PB", "PR", "PE", "PI",
                       "RJ", "RN", "RS", "RO", "RR", "SC", "SP", "SE", "TO")

  cache_dir <- tools::R_user_dir("precviasBR", which = "cache")
  if (!dir.exists(cache_dir)) dir.create(cache_dir, recursive = TRUE)

  if (uf == "ALL") {
    message("Iniciando download da malha nacional...")
    for (estado in estados_validos) {
      download_precvias(estado)
    }
    return(cache_dir)
  }

  if (!uf %in% estados_validos) {
    stop("UF invalida. Use a sigla de dois caracteres (ex: 'RS') ou 'all' (para o pais todo).")
  }

  arquivo_destino <- file.path(cache_dir, sprintf("malha_precariedade_%s.parquet", uf))

  if (file.exists(arquivo_destino) && file.size(arquivo_destino) > 1000) {
    return(arquivo_destino)
  }

  url_zenodo <- sprintf("https://zenodo.org/records/19711448/files/malha_precariedade_%s.parquet?download=1", uf)
  message(sprintf("Baixando dados para %s do Zenodo...", uf))

  tryCatch({
    utils::download.file(url_zenodo, arquivo_destino, mode = "wb", quiet = TRUE)

    if (file.size(arquivo_destino) < 1000) {
      file.remove(arquivo_destino)
      stop("O arquivo baixado parece invalido ou corrompido.")
    }
  }, error = function(e) {
    if (file.exists(arquivo_destino)) file.remove(arquivo_destino)
    stop(sprintf("Falha ao baixar %s. Verifique sua conexao ou o repositorio.", uf))
  })

  return(arquivo_destino)
}

Try the precviasBR package in your browser

Any scripts or data that you put into this service are public.

precviasBR documentation built on May 6, 2026, 1:07 a.m.