Get the path of .pbf and .gpkg files associated with an input OSM extract
Source:R/find.R
oe_find.RdThis function takes a place name and returns the path of .pbf/.gpkg
files associated with it.
Usage
oe_find(
place,
provider = "geofabrik",
download_directory = oe_download_directory(),
download_if_missing = FALSE,
return_pbf = TRUE,
return_gpkg = TRUE,
quiet = FALSE,
...
)Arguments
- place
Description of the geographical area that should be matched with a
.osm.pbffile. Can be either a length-1 character vector, ansf/sfc/bboxobject with any CRS, or a numeric vector of coordinates with length 2. In the last case, it is assumed that the EPSG code is 4326 specified as c(LON, LAT), while you can use any CRS withsf/sfc/bboxobjects. See Details and Examples inoe_match().- provider
Which provider should be used to download the data? Available providers can be browsed with
oe_providers(). Foroe_get()andoe_match(), ifplaceis equal toITS Leeds, thenprovideris internally set equal to"test". This is just for simple examples and internal tests.- download_directory
Directory where the function looks for matches.
- download_if_missing
Should we attempt to download the matched file if it cannot be found?
FALSEby default.- return_pbf
Logical of length 1. If
TRUE, the function returns the path of the .osm.pbf file that matches the inputplace.- return_gpkg
Logical of length 1. If
TRUE, the function returns the path of the .gpkg file that matches the inputplace.- 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.- ...
Extra arguments that are passed to
oe_match()andoe_get(). Please note that you cannot pass the argumentdownload_only.
Value
A character vector of length one (or two) representing the path(s) of
the .pbf/.gpkg files associated with the input place. The files are
sorted in alphabetical order, which implies that if both formats are
present in the download_directory, then the .gpkg file should be
returned first.
Details
The matching between the existing files (saved in the directory
specified by download_directory parameter) and the input place is
performed using list.files(), setting the pattern argument equal to the
basename of the URL associated to the input place. For example, if you
specify place = "Isle of Wight", then your input is matched (via
oe_match()) with the URL of Isle of Wight. Finally, the files are
selected using a pattern equal to the basename of that URL.
If there is no file in the download_directory that can be matched with
the basename of the URL and download_if_missing is TRUE, then the
function tries to download it (geofabrik is the default provider) and
returns the path. Otherwise it stops with an error.
By default, this function returns the path of both .osm.pbf and .gpkg
files associated with the input place (if any). You can exclude one of the
two formats using the arguments return_pbf or return_gpkg to FALSE.
Examples
# Copy the ITS file to tempdir() to make sure that the examples do not
# require internet connection. You can skip the next 4 lines (and start
# directly with oe_get_keys) when running the examples locally.
res = file.copy(
from = system.file("its-example.osm.pbf", package = "osmextract"),
to = file.path(tempdir(), "test_its-example.osm.pbf"),
overwrite = TRUE
)
res = oe_get("ITS Leeds", quiet = TRUE, download_directory = tempdir())
oe_find("ITS Leeds", provider = "test", download_directory = tempdir())
#> The input place was matched with: ITS Leeds
#> [1] "/tmp/Rtmp0QR1Sm/test_its-example.gpkg"
#> [2] "/tmp/Rtmp0QR1Sm/test_its-example.osm.pbf"
oe_find(
"ITS Leeds", provider = "test",
download_directory = tempdir(), return_gpkg = FALSE
)
#> The input place was matched with: ITS Leeds
#> [1] "/tmp/Rtmp0QR1Sm/test_its-example.osm.pbf"
if (FALSE) { # \dontrun{
oe_find("Isle of Wight", download_directory = tempdir())
oe_find("Malta", download_if_missing = TRUE, download_directory = tempdir())
oe_find(
"Leeds",
provider = "bbbike",
download_if_missing = TRUE,
download_directory = tempdir(),
return_pbf = FALSE
)} # }
# Remove .pbf and .gpkg files in tempdir
oe_clean(tempdir())