test_that("oe_vectortranslate: simplest examples work", {
withr::local_envvar(
.new = list(
"OSMEXT_DOWNLOAD_DIRECTORY" = tempdir(),
"TESTTHAT" = "true"
)
)
its_pbf = setup_pbf()
its_gpkg = oe_vectortranslate(its_pbf, quiet = TRUE)
expect_equal(tools::file_ext(its_gpkg), "gpkg")
})
test_that("oe_vectortranslate returns file_path when .gpkg exists", {
withr::local_envvar(
.new = list(
"OSMEXT_DOWNLOAD_DIRECTORY" = tempdir(),
"TESTTHAT" = "true"
)
)
its_pbf = setup_pbf()
its_gpkg = oe_vectortranslate(its_pbf, quiet = TRUE)
expect_message(
oe_vectortranslate(its_pbf),
class = "oe_vectortranslate_skipOperations"
)
})
test_that("oe_vectortranslate succesfully adds new tags", {
withr::local_envvar(
.new = list(
"OSMEXT_DOWNLOAD_DIRECTORY" = tempdir(),
"TESTTHAT" = "true"
)
)
its_pbf = setup_pbf()
# Check all layers, ref https://github.com/ropensci/osmextract/issues/229
# Check points:
its_gpkg = oe_vectortranslate(
its_pbf,
layer = "points",
extra_tags = "crossing",
force_vectortranslate = TRUE,
quiet = TRUE
)
expect_match(
paste(names(sf::st_read(its_gpkg, "points", quiet = TRUE)), collapse = "-"),
"crossing"
)
# Check lines:
its_gpkg = oe_vectortranslate(
its_pbf,
layer = "lines",
extra_tags = "oneway",
force_vectortranslate = TRUE,
quiet = TRUE
)
expect_match(
paste(names(sf::st_read(its_gpkg, "lines", quiet = TRUE)), collapse = "-"),
"oneway"
)
# Check multilinestrings :
its_gpkg = oe_vectortranslate(
its_pbf,
layer = "multilinestrings",
extra_tags = "operator",
force_vectortranslate = TRUE,
quiet = TRUE
)
expect_match(
paste(names(sf::st_read(its_gpkg, "multilinestrings", quiet = TRUE)), collapse = "-"),
"operator"
)
# Check multipolygons:
its_gpkg = oe_vectortranslate(
its_pbf,
layer = "multipolygons",
extra_tags = "foot",
force_vectortranslate = TRUE,
quiet = TRUE
)
expect_match(
paste(names(sf::st_read(its_gpkg, "multipolygons", quiet = TRUE)), collapse = "-"),
"foot"
)
# Check other_relations:
its_gpkg = oe_vectortranslate(
its_pbf,
layer = "other_relations",
extra_tags = "site",
force_vectortranslate = TRUE,
quiet = TRUE
)
expect_match(
paste(names(sf::st_read(its_gpkg, "other_relations", quiet = TRUE)), collapse = "-"),
"site"
)
})
test_that("oe_vectortranslate adds new tags to existing file", {
withr::local_envvar(
.new = list(
"OSMEXT_DOWNLOAD_DIRECTORY" = tempdir(),
"TESTTHAT" = "true"
)
)
its_pbf = setup_pbf()
its_gpkg = oe_vectortranslate(its_pbf, quiet = TRUE)
new_its_gpkg = oe_vectortranslate(its_pbf, extra_tags = c("oneway"), quiet = TRUE)
expect_match(
paste(names(sf::st_read(new_its_gpkg, quiet = TRUE)), collapse = "-"),
"oneway"
)
})
test_that("oe_vectortranslate returns no warning with duplicated field in extra_tags", {
withr::local_envvar(
.new = list(
"OSMEXT_DOWNLOAD_DIRECTORY" = tempdir(),
"TESTTHAT" = "true"
)
)
its_pbf = setup_pbf()
# The idea is that the user may request one or more fields that are already
# included in the default ones. In that case, GDAL returns a message like:
# GDAL Message 1: Field 'natural' already exists. Renaming it as 'natural2'.
# After the following discussion
# https://github.com/ropensci/osmextract/issues/229#issuecomment-941002791 I
# included a call to unique to filter the duplicated fields.
expect_warning(
object = {
its_gpkg = oe_vectortranslate(its_pbf, quiet = TRUE, extra_tags = c("highway", "barrier", "oneway"))
},
regexp = NA
)
})
test_that("vectortranslate_options are autocompleted", {
withr::local_envvar(
.new = list(
"OSMEXT_DOWNLOAD_DIRECTORY" = tempdir(),
"TESTTHAT" = "true"
)
)
its_pbf = setup_pbf()
expect_error(
oe_vectortranslate(
its_pbf,
quiet = TRUE,
vectortranslate_options = c("-t_srs", "EPSG:27700")
),
NA
)
})
test_that("vectortranslate is not skipped if force_download is TRUE", {
withr::local_envvar(
.new = list(
"OSMEXT_DOWNLOAD_DIRECTORY" = tempdir(),
"TESTTHAT" = "true"
)
)
its_pbf = setup_pbf()
# See https://github.com/ropensci/osmextract/issues/144
# I need to download the following files in a new directory since they could
# be mixed with previously downloaded files (and hence ruin the tests)
small_its_leeds = oe_read(
its_pbf,
download_directory = tempdir(),
vectortranslate_options = c(
# the other options should be filled automatically
"-where", "highway IN ('service')"
),
quiet = TRUE
)
# Download it again
its_leeds = oe_read(
its_pbf,
download_directory = tempdir(),
force_vectortranslate = TRUE,
quiet = TRUE
)
expect_gte(nrow(its_leeds), nrow(small_its_leeds))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.