Nothing
test_that("sf result coercers work", {
skip_if_not_installed("sf")
skip_if_not(has_qgis())
buffer_longlake <- function(OUTPUT, ...) {
qgis_run_algorithm(
"native:buffer",
INPUT = system.file("longlake/longlake.gpkg", package = "qgisprocess"),
DISTANCE = 100,
DISSOLVE = TRUE,
MITER_LIMIT = 2,
OUTPUT = OUTPUT,
END_CAP_STYLE = 0,
JOIN_STYLE = 0,
.quiet = TRUE
)
}
result <- buffer_longlake(OUTPUT = qgis_tmp_vector())
result_alt <- buffer_longlake(
OUTPUT = glue::glue("ogr:dbname={qgis_tmp_vector()} table=llbuffer")
)
# test coercing of qgis_result
result_sf <- sf::st_as_sf(result)
expect_s3_class(result_sf, "sf")
result_sf_alt <- sf::st_as_sf(result_alt)
expect_identical(result_sf, result_sf_alt)
# test coercing of qgis_outputVector
output <- qgis_extract_output(result)
output_alt <- qgis_extract_output(result_alt)
result_sf <- sf::st_as_sf(output)
expect_s3_class(result_sf, "sf")
result_sf_alt <- sf::st_as_sf(output_alt)
expect_identical(result_sf, result_sf_alt)
# test coercing of qgis_outputLayer
attr(output, "class") <- "qgis_outputLayer"
attr(output_alt, "class") <- "qgis_outputLayer"
result_sf <- sf::st_as_sf(output)
expect_s3_class(result_sf, "sf")
result_sf_alt <- sf::st_as_sf(output_alt)
expect_identical(result_sf, result_sf_alt)
# test behaviour on empty output
result$OUTPUT <- NULL
expect_error(sf::st_as_sf(result), "Can't extract object.")
})
test_that("sf argument coercers work", {
skip_if_not_installed("sf")
sf_obj <- sf::read_sf(system.file("shape/nc.shp", package = "sf"))
expect_error(
as_qgis_argument(sf_obj),
"Can't convert 'sf' object"
)
tmp_file <- expect_match(
as_qgis_argument(sf_obj, qgis_argument_spec(qgis_type = "layer")),
"\\.gpkg$"
)
expect_s3_class(tmp_file, "qgis_tempfile_arg")
unlink(tmp_file)
})
test_that("sf crs work", {
skip_if_not_installed("sf")
sf_obj <- sf::read_sf(system.file("shape/nc.shp", package = "sf"))
crs_representation <- expect_match(
as_qgis_argument(sf::st_crs(sf_obj), qgis_argument_spec(qgis_type = "crs")),
"^GEOGCS"
)
expect_type(crs_representation, "character")
})
test_that("sf bbox work", {
skip_if_not_installed("sf")
sf_obj <- sf::read_sf(system.file("shape/nc.shp", package = "sf"))
skip_if( # false positive in r-universe R-oldrel on macOS (specific to https://github.com/r-universe/inbo)
!identical(sf::st_crs(sf_obj)$epsg, 4267L) ||
inherits(try(sf::st_crs("EPSG:4267"), silent = TRUE), "try-error"),
"sf not properly working with EPSG in this setup"
)
bbox_representation <- expect_match(
as_qgis_argument(sf::st_bbox(sf_obj), qgis_argument_spec(qgis_type = "extent")),
"-84\\.3238525390625,-75\\.4569778442383,33\\.8819923400879,36\\.5896492004395\\[EPSG:4267\\]"
)
expect_s3_class(bbox_representation, "character")
})
test_that("sf crs and bbox work", {
skip_if_not_installed("sf")
skip_if_not(has_qgis())
sf_obj <- sf::read_sf(system.file("shape/nc.shp", package = "sf"))
result <- qgis_run_algorithm(
"native:createconstantrasterlayer",
EXTENT = sf::st_bbox(sf_obj),
TARGET_CRS = sf::st_crs(5514),
PIXEL_SIZE = 1000,
OUTPUT_TYPE = "Byte",
OUTPUT = qgis_tmp_raster(),
NUMBER = 5,
.quiet = TRUE
)
expect_true(file.exists(result$OUTPUT))
qgis_clean_result(result)
})
test_that("sfc to QGIS point work", {
skip_if_not_installed("sf")
skip_if( # false positive in r-universe R-oldrel on macOS (specific to https://github.com/r-universe/inbo)
inherits(try(sf::st_crs("EPSG:5514"), silent = TRUE), "try-error"),
"sf not properly working with EPSG in this setup"
)
point <- sf::st_sfc(sf::st_point(c(1, 2)), crs = sf::st_crs("EPSG:5514"))
point_representation <- expect_match(
as_qgis_argument(point, qgis_argument_spec(qgis_type = "point")),
"1,2\\[EPSG:5514\\]"
)
expect_s3_class(point_representation, "character")
point <- sf::st_sfc(sf::st_point(c(1, 2)))
point_representation <- expect_match(
as_qgis_argument(point, qgis_argument_spec(qgis_type = "point")),
"1,2"
)
expect_s3_class(point_representation, "character")
})
test_that("sfc to QGIS point raises issues", {
skip_if_not_installed("sf")
skip_if( # false positive in r-universe R-oldrel on macOS (specific to https://github.com/r-universe/inbo)
inherits(try(sf::st_crs("EPSG:5514"), silent = TRUE), "try-error"),
"sf not properly working with EPSG in this setup"
)
points <- sf::st_sfc(list(sf::st_point(c(1, 2)), sf::st_point(c(1, 2))), crs = sf::st_crs("EPSG:5514"))
expect_error(
as_qgis_argument(
points,
qgis_argument_spec(qgis_type = "point")
),
"Can't convert 'sfc' object to QGIS type 'point' as the length is not equal to 1"
)
points <- sf::st_sfc(sf::st_multipoint(matrix(1:15, ncol = 3)), crs = sf::st_crs("EPSG:5514"))
expect_error(
as_qgis_argument(
points,
qgis_argument_spec(qgis_type = "point")
),
"Can't convert 'sfc' object to QGIS type 'point' as type is not 'POINT'"
)
})
test_that("sf to QGIS point raises issues", {
skip_if_not_installed("sf")
suppressWarnings(
points <- sf::st_centroid(sf::read_sf(system.file("shape/nc.shp", package = "sf")))
)
expect_error(
as_qgis_argument(
points,
qgis_argument_spec(qgis_type = "point")
),
"Can't convert 'sfc' object to QGIS type 'point' as the length is not equal to 1"
)
points <- sf::read_sf(system.file("shape/nc.shp", package = "sf"))[1, ]
expect_error(
as_qgis_argument(
points,
qgis_argument_spec(qgis_type = "point")
),
"Can't convert 'sfc' object to QGIS type 'point' as type is not 'POINT'"
)
})
test_that("POINT to QGIS point work", {
skip_if_not_installed("sf")
point <- sf::st_point(c(1, 2))
point_representation <- expect_match(
as_qgis_argument(point, qgis_argument_spec(qgis_type = "point")),
"1,2"
)
expect_s3_class(point_representation, "character")
})
test_that("sf to QGIS point work", {
skip_if_not_installed("sf")
skip_if( # false positive in r-universe R-oldrel on macOS (specific to https://github.com/r-universe/inbo)
inherits(try(sf::st_crs("EPSG:32019"), silent = TRUE), "try-error"),
"sf not properly working with EPSG in this setup"
)
data <- sf::read_sf(system.file("shape/nc.shp", package = "sf"))
data <- sf::st_transform(data, sf::st_crs("EPSG:32019"))
suppressWarnings(
points <- sf::st_centroid(data[1, ])
)
point_representation <- expect_match(
as_qgis_argument(
points,
qgis_argument_spec(qgis_type = "point")
),
"1265036\\.90059[0-9]+,985175\\.481905[0-9]+\\[EPSG:32019\\]"
)
expect_s3_class(point_representation, "character")
})
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.