R/dangeo_get_data.R

Defines functions dangeo_get_data

Documented in dangeo_get_data

#' Function for downloading geodata from kortforsyningen.dk
#'
#' @param ftp_folder Name of the ftp folder
#' @param zip_name   Name of the zip file we would like to download..
#' @param out_folder Name of the local folder where the data will be saved (by default it is set to the results of rappdirs::user_cache_dir()).
#' @param overwrite  Overwrite previous files (by default overwrite = FALSE)
#' @param userpwd    Username and Password (format = USERNAME:PASSWORD).
#' @param unzip      Logical parameter indication if the file should be unzipped (TRUE) or not (FALSE)
#'
#' @return Data from [https://download.kortforsyningen.dk/content/geodataprodukter](https://download.kortforsyningen.dk/content/geodataprodukter).
#'
#' @examples
#'
#' library(dangeo)
#'
#' # Set username, password, and local directory
#' dangeo_set_param()
#'
#' # Download data
#' dangeo_get_data(ftp_folder = "CORINE",
#'                 zip_name   = "DK_CORINE_SHP_UTM32-WGS84.zip")
#'
#' @export


dangeo_get_data <- function(ftp_folder = NULL,
                            zip_name = NULL,
                            out_folder = loc_dir,
                            userpwd = set_user,
                            overwrite = FALSE,
                            unzip = TRUE){

  ftp <- paste0("ftp://", set_user, "@ftp.kortforsyningen.dk")
  ftp_url <- paste(ftp, ftp_folder, zip_name, sep = "/")
  fs::file_create(out_folder)

  if(overwrite == TRUE) {

    if(unzip == TRUE) {

      # Download
      download.file(url = ftp_url,
                    destfile = paste(out_folder, zip_name, sep = "/"),
                    method = "curl")

      # Unzip file and remove it (.zip)
      unzip(zipfile = paste(out_folder, zip_name, sep = "/"),
            exdir   = gsub(".zip|.ZIP", "", paste(out_folder, zip_name, sep = "/")))
      fs::file_delete(paste(out_folder, zip_name, sep = "/"))

    } else {

      # Download
      download.file(url = ftp_url,
                    destfile = paste(out_folder, zip_name, sep = "/"),
                    method = "curl")

    }

  } else if(gsub(".zip|.ZIP", "", zip_name) %in% list.files(out_folder)) {

    warning("The file already exist on the local directory and it has not been downloaded. Set overwrite = TRUE if you would like to overwrite it")

  } else {

    if(unzip == TRUE) {

      # Download
      download.file(url = ftp_url,
                    destfile = paste(out_folder, zip_name, sep = "/"),
                    method = "curl")

      # Unzip file and remove it (.zip)
      unzip(zipfile = paste(out_folder, zip_name, sep = "/"),
            exdir   = gsub(".zip|.ZIP", "", paste(out_folder, zip_name, sep = "/")))
      fs::file_delete(paste(out_folder, zip_name, sep = "/"))

    } else {

      # Download
      download.file(url = ftp_url,
                    destfile = paste(out_folder, zip_name, sep = "/"),
                    method = "curl")

    }

  }
}
javiereliomedina/dangeo documentation built on May 13, 2021, 6:25 p.m.