| oe_get | R Documentation |
This function is used to find, download, translate, and read OSM extracts
obtained from several providers. It is a wrapper around oe_match() and
oe_read(). Check the introductory vignette, the examples, and the help
pages of the wrapped functions to understand the details behind all
parameters.
oe_get(
place,
layer = "lines",
...,
provider = "geofabrik",
match_by = "name",
max_string_dist = 1,
level = NULL,
version = "latest",
download_directory = oe_download_directory(),
force_download = FALSE,
max_file_size = 5e+08,
vectortranslate_options = NULL,
osmconf_ini = NULL,
extra_tags = NULL,
force_vectortranslate = FALSE,
boundary = NULL,
boundary_type = c("spat", "clipsrc"),
download_only = FALSE,
skip_vectortranslate = FALSE,
never_skip_vectortranslate = FALSE,
quiet = FALSE
)
place |
Description of the geographical area that should be matched with
a |
layer |
Which |
... |
(Named) arguments that will be passed to |
provider |
Which provider should be used to download the data? Available
providers can be browsed with |
match_by |
Which column of the provider's database should be used for
matching the input |
max_string_dist |
Numerical value greater or equal than 0. What is the
maximum distance in fuzzy matching (i.e. Approximate String Distance, see
|
level |
An integer representing the desired hierarchical level in case
of spatial matching. For the |
version |
The version of the OSM extract to download. The default is
"latest". Other possible values are typically specified using the format
YYMMDD (e.g. "200101"). The complete list of all available historic files
for a given extract can be browsed from the Geofabrik website (e.g.
https://download.geofabrik.de/europe/italy.html and then click on 'raw
directory index'). Note: the geographical coverage of an extract may
change over time. For example, recent (2021+) extracts for Barcelona are
at the regional level (cataluna), while older (2012-2021) extracts are at
the national level (spain). This means that downloading historical data
for a place like Barcelona may require changing the |
download_directory |
Directory to store the file containing OSM data?. |
force_download |
Should the |
max_file_size |
The maximum file size to download without asking in
interactive mode. Default: |
vectortranslate_options |
Options passed to the |
osmconf_ini |
The configuration file. See documentation at
gdal.org. Check details in the
introductory vignette and the help page of |
extra_tags |
Which additional columns, corresponding to OSM tags, should
be in the resulting dataset? |
force_vectortranslate |
Boolean. Force the original |
boundary |
An |
boundary_type |
A character vector of length 1 specifying the type of
spatial filter. The |
download_only |
Boolean. If |
skip_vectortranslate |
Boolean. If |
never_skip_vectortranslate |
Boolean. This is used in case the user
passed its own |
quiet |
Boolean. If |
The algorithm that we use for importing an OSM extract data into R is divided into 4 steps:
match the input place with the url of a .pbf file;
download the .pbf file;
convert it into .gpkg format;
read-in the .gpkg file.
The function oe_match() is used to
perform the first operation and the function oe_read() (which is a
wrapper around oe_download(), oe_vectortranslate() and sf::st_read())
performs the other three operations.
An sf object.
oe_match(), oe_download(), oe_vectortranslate(), and
oe_read().
# Copy ITS file to tempdir so that the examples do not require internet
# connection. You can skip the next 4 lines when running the examples
# locally.
its_pbf = file.path(tempdir(), "test_its-example.osm.pbf")
file.copy(
from = system.file("its-example.osm.pbf", package = "osmextract"),
to = its_pbf,
overwrite = TRUE
)
# Match, download (not really) and convert OSM extracts associated to a simple test.
its = oe_get("ITS Leeds", download_directory = tempdir())
class(its)
unique(sf::st_geometry_type(its))
# Get another layer from ITS Leeds extract
its_points = oe_get("ITS Leeds", layer = "points", download_directory = tempdir())
unique(sf::st_geometry_type(its_points))
# Get the .osm.pbf and .gpkg files paths
oe_get(
"ITS Leeds", download_only = TRUE, quiet = TRUE,
download_directory = tempdir()
)
oe_get(
"ITS Leeds", download_only = TRUE, skip_vectortranslate = TRUE,
quiet = TRUE, download_directory = tempdir()
)
# See also ?oe_find()
# Add additional tags
its_with_oneway = oe_get(
"ITS Leeds", extra_tags = "oneway",
download_directory = tempdir()
)
names(its_with_oneway)
table(its_with_oneway$oneway, useNA = "ifany")
# Use the query argument to get only oneway streets:
q = "SELECT * FROM 'lines' WHERE oneway == 'yes'"
its_oneway = oe_get("ITS Leeds", query = q, download_directory = tempdir())
its_oneway[, c(1, 3, 9)]
# Apply a spatial filter during the vectortranslate operations
its_poly = sf::st_sfc(
sf::st_polygon(
list(rbind(
c(-1.55577, 53.80850),
c(-1.55787, 53.80926),
c(-1.56096, 53.80891),
c(-1.56096, 53.80736),
c(-1.55675, 53.80658),
c(-1.55495, 53.80749),
c(-1.55577, 53.80850)
))
),
crs = 4326
)
its_spat = oe_get("ITS Leeds", boundary = its_poly, download_directory = tempdir())
its_clipped = oe_get(
"ITS Leeds", boundary = its_poly, boundary_type = "clipsrc",
quiet = TRUE, download_directory = tempdir()
)
plot(sf::st_geometry(its), reset = FALSE, col = "lightgrey")
plot(sf::st_boundary(its_poly), col = "black", add = TRUE, lty = 2)
plot(sf::st_boundary(sf::st_as_sfc(sf::st_bbox(its_poly))), col = "black", add = TRUE)
plot(sf::st_geometry(its_spat), add = TRUE, col = "darkred")
plot(sf::st_geometry(its_clipped), add = TRUE, col = "orange")
# More complex examples
## Not run:
west_yorkshire = oe_get("West Yorkshire")
# If you run it again, the function will not download the file
# or convert it again
west_yorkshire = oe_get("West Yorkshire")
# Match with place name
oe_get("Milan") # Warning: the .pbf file is 400MB
oe_get("Vatican City") # Check all providers
oe_get("Zurich") # Uses Nominatim API for geolocating places
# Match with coordinates (any EPSG)
milan_duomo = sf::st_sfc(sf::st_point(c(1514924, 5034552)), crs = 3003)
oe_get(milan_duomo, quiet = FALSE) # Warning: the .pbf file is 400MB
# Match with numeric coordinates (EPSG = 4326)
oe_match(c(9.1916, 45.4650), quiet = FALSE)
# Check also alternative providers
baku = oe_get(place = "Baku")
# Other examples:
oe_get("RU", match_by = "iso3166_1_alpha2", quiet = FALSE)
# The following example mimics read_sf
oe_get("Andora", stringsAsFactors = FALSE, quiet = TRUE, as_tibble = TRUE)
## End(Not run)
# Remove .pbf and .gpkg files in tempdir
oe_clean(tempdir())
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.