This function is used to download a file given a URL. It focuses on OSM
extracts with .osm.pbf format stored by one of the providers implemented in
the package. The URL is specified through the parameter file_url.
Usage
oe_download(
file_url,
provider = NULL,
file_basename = basename(file_url),
download_directory = oe_download_directory(),
file_size = NA,
force_download = FALSE,
max_file_size = 5e+08,
quiet = FALSE
)Arguments
- file_url
A URL pointing to a (typically
.osm.pbf) file.- provider
Which provider stores the file? If
NULL(the default), the function tries to infer it. It must be specified for non-standard cases. See details and examples.- file_basename
The basename of the file. The default behaviour is to auto-generate it from the URL using
basename().- download_directory
Directory to store the file containing OSM data?.
- file_size
How big is the file? Optional.
NAby default. If it's bigger thanmax_file_sizeand the function is run in interactive mode, then an interactive menu is displayed, asking for permission for downloading the file.- force_download
Should the
.osm.pbffile be updated even if it has already been downloaded?FALSEby default. This parameter is used to update old.osm.pbffiles.- max_file_size
The maximum file size to download without asking in interactive mode. Default:
5e+8, half a gigabyte.- quiet
Boolean. If
FALSE, the function prints informative messages. Starting fromsfversion 0.9.6, ifquietis equal toFALSE, then vectortranslate operations will display a progress bar.
Details
This function runs several checks before actually downloading a new
file to avoid overloading the OSM providers. The first step is the
definition of the file path associated to the input file_url. The path is
created by pasting together the download_directory, the name of chosen
provider (which may be inferred from the URL), and the basename of the
URL. For example, if file_url is equal to
"https://download.geofabrik.de/europe/italy-latest.osm.pbf", and
download_directory = "/tmp", then the path is built as
"/tmp/geofabrik_italy-latest.osm.pbf". If this file already exists, the
function just returns its path. The parameter force_download can be used
to modify this behaviour. If there is no file associated with the new path,
the function downloads it using httr::GET(). The timeout for the download
can be modified using options("timeout"). The default value is 300s.
Two further checks guard against working with unusable data. When a file is
already present, its age is reported and force_download = TRUE is
suggested once it is older than options("osmextract.stale_days") days
(365 by default), since providers frequently refresh their extracts with
updated OSM data. Furthermore, when a file is downloaded, its source is
checked before the function reports success. In particular, the function
tests that the URL used to download the data (after the possible
redirection) points to a .osm.pbf file. A file that fails the check is
deleted and an error is raised.
Examples
(its_match = oe_match("ITS Leeds", quiet = TRUE))
#> $url
#> [1] "https://github.com/ropensci/osmextract/raw/master/inst/its-example.osm.pbf"
#>
#> $file_size
#> [1] 40792
#>
if (FALSE) { # \dontrun{
oe_download(
file_url = its_match$url,
file_size = its_match$file_size,
provider = "test",
download_directory = tempdir()
)
iow_url = oe_match("Isle of Wight")
oe_download(
file_url = iow_url$url,
file_size = iow_url$file_size,
download_directory = tempdir()
)
Sucre_url = oe_match("Sucre", provider = "bbbike")
oe_download(
file_url = Sucre_url$url,
file_size = Sucre_url$file_size,
download_directory = tempdir()
)} # }