Nothing
#' Bulk download from GISCO API
#'
#'
#' @family political
#'
#' @description
#' Downloads zipped data from GISCO and extract them on the
#' [`cache_dir`][gisco_set_cache_dir()] folder.
#'
#' @return Silent function.
#'
#' @param year Release year of the file. See **Details**.
#'
#' @param id_giscoR Type of dataset to be downloaded. Values supported are:
#' * `"coastallines"`.
#' * `"communes"`.
#' * `"countries"`.
#' * `"lau"`.
#' * `"nuts"`.
#' * `"urban_audit"`.
#'
#' @inheritParams gisco_get_countries
#'
#' @inheritSection gisco_get_countries About caching
#'
#' @param ext Extension of the file(s) to be downloaded. Formats available are
#' `"geojson"`, `"shp"`, `"svg"`, `"json"`, `"gdb"`. See **Details**.
#'
#' @param recursive Tries to unzip recursively the zip files (if any) included
#' in the initial bulk download (case of `ext = "shp"`).
#'
#' @details
#'
#' See the years available in the corresponding functions:
#' * [gisco_get_coastallines()].
#' * [gisco_get_communes()].
#' * [gisco_get_countries()].
#' * [gisco_get_lau()].
#' * [gisco_get_nuts()].
#' * [gisco_get_urban_audit()].
#'
#' The usual extension used across \CRANpkg{giscoR} is `"geojson"`,
#' however other formats are already available on GISCO.
#'
#'
#' @source <https://gisco-services.ec.europa.eu/distribution/v2/>
#'
#'
#' @examplesIf gisco_check_access()
#' \dontrun{
#'
#' # Countries 2016 - It would take some time
#' gisco_bulk_download(id_giscoR = "countries", resolution = "60")
#' }
#' @export
gisco_bulk_download <- function(
id_giscoR = c(
"countries", "coastallines", "communes", "lau", "nuts",
"urban_audit"
),
year = "2016", cache_dir = NULL, update_cache = FALSE, verbose = FALSE,
resolution = "10", ext = c("geojson", "shp", "svg", "json", "gdb"),
recursive = TRUE) {
valid <- c(
"coastallines", "communes", "countries", "lau", "nuts",
"urban_audit"
)
names(valid) <- c("coastline", "communes", "countries", "lau", "nuts", "urau")
id_giscoR <- match.arg(id_giscoR)
ext <- match.arg(ext)
# Standard parameters for the call
year <- as.character(year)
epsg <- "4326"
spatialtype <- "RG"
level <- "all"
if (id_giscoR == "urban_audit" && year < "2014") {
level <- "CITY"
}
routes <- gsc_api_url(id_giscoR, year, epsg, resolution, spatialtype,
"geojson",
nuts_level = "all", level = level, verbose = verbose
)
api_entry <- unlist(strsplit(routes, "/geojson/"))[1]
remain <- unlist(strsplit(routes, "/geojson/"))[2]
api_entry <- file.path(api_entry, "download")
getalias <- names(valid[valid == id_giscoR])
# Clean names
remain2 <- gsub(spatialtype, "", remain)
remain2 <- gsub(epsg, "", remain2)
remain2 <- gsub(year, "", remain2)
remain2 <- gsub(".geojson", "", remain2)
remain2 <- gsub(level, "", remain2)
remain2 <- (unlist(strsplit(remain2, "_")))[-1]
remain2 <- tolower(paste0(remain2, collapse = ""))
# Create url
zipname <- paste0("ref-", getalias, "-", year, "-", remain2, ".", ext, ".zip")
url <- file.path(api_entry, zipname)
destfile <- gsc_api_cache(
url,
zipname, cache_dir, update_cache,
verbose
)
if (is.null(destfile)) {
return(NULL)
}
# Clean cache dir name for extracting
unzip_dir <- gsub(paste0("/", zipname), "", destfile)
# Unzip
gsc_unzip(destfile, unzip_dir, ext, recursive, verbose, update_cache)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.