Nothing
test_that("we can convert points & lines to and from sp objects", {
skip_if_not_installed("sp")
pt1 = st_point(1:2)
pt2 = st_point(3:4)
s1 = st_sf(a = c("x", "y"), geom = st_sfc(pt1, pt2))
sp = as(s1, "Spatial")
s2 = st_as_sf(sp)
# expect_identical(s1, s2) -> name differences
expect_identical(class(st_geometry(s2)), c("sfc_POINT", "sfc")) #-> name differences
l = st_linestring(matrix(1:6,3))
l1 = st_sf(a = 1, geom = st_sfc(l))
sp_l = as(l1, "Spatial")
expect_identical(class(sp_l)[[1]], "SpatialLinesDataFrame") #-> name differences
l2 = st_as_sf(sp_l)
expect_identical(class(st_geometry(l2)), c("sfc_LINESTRING", "sfc")) #-> name differences
# test multilinestring -> sp
l = st_multilinestring(list(matrix(1:6,3), matrix(11:16,3), matrix(21:26,3)))
l1 = st_sf(a = 1, geom = st_sfc(l))
sp_l = as(l1, "Spatial")
expect_identical(class(sp_l)[[1]], "SpatialLinesDataFrame") #-> name differences
l2 = st_as_sf(sp_l)
expect_identical(class(st_geometry(l2)), c("sfc_MULTILINESTRING", "sfc")) #-> name differences
})
test_that("we can convert SpatialPolygons objects without SF comments to sfc and back", {
skip_if_not_installed("sp")
# skip_if_not(package_version(sf_extSoftVersion()["GEOS"]) >= "3.11.0"); #2079
library(sp)
# nested holes https://github.com/r-spatial/evolution/issues/9
p1 <- Polygon(cbind(x=c(0, 0, 10, 10, 0), y=c(0, 10, 10, 0, 0)), hole=FALSE) # I
p2 <- Polygon(cbind(x=c(3, 3, 7, 7, 3), y=c(3, 7, 7, 3, 3)), hole=TRUE) # H
p8 <- Polygon(cbind(x=c(1, 1, 2, 2, 1), y=c(1, 2, 2, 1, 1)), hole=TRUE) # H
p9 <- Polygon(cbind(x=c(1, 1, 2, 2, 1), y=c(5, 6, 6, 5, 5)), hole=TRUE) # H
p3 <- Polygon(cbind(x=c(20, 20, 30, 30, 20), y=c(20, 30, 30, 20, 20)), hole=FALSE) # I
p4 <- Polygon(cbind(x=c(21, 21, 29, 29, 21), y=c(21, 29, 29, 21, 21)), hole=TRUE) # H
p5 <- Polygon(cbind(x=c(22, 22, 28, 28, 22), y=c(22, 28, 28, 22, 22)), hole=FALSE) # I
p6 <- Polygon(cbind(x=c(23, 23, 27, 27, 23), y=c(23, 27, 27, 23, 23)), hole=TRUE) # H
p7 <- Polygon(cbind(x=c(13, 13, 17, 17, 13), y=c(13, 17, 17, 13, 13)), hole=FALSE) # I
p10 <- Polygon(cbind(x=c(24, 24, 26, 26, 24), y=c(24, 26, 26, 24, 24)), hole=FALSE) # I
p11 <- Polygon(cbind(x=c(24.25, 24.25, 25.75, 25.75, 24.25), y=c(24.25, 25.75, 25.75, 24.25, 24.25)), hole=TRUE) # H
p12 <- Polygon(cbind(x=c(24.5, 24.5, 25.5, 25.5, 24.5), y=c(24.5, 25.5, 25.5, 24.5, 24.5)), hole=FALSE) # I
p13 <- Polygon(cbind(x=c(24.75, 24.75, 25.25, 25.25, 24.75), y=c(24.75, 25.25, 25.25, 24.75, 24.75)), hole=TRUE) # H
p9a <- Polygon(cbind(x=c(1, 1, 2, 2, 1), y=c(6, 7, 7, 6, 6)), hole=TRUE) # H
p7a <- Polygon(cbind(x=c(14, 14, 15, 15, 14), y=c(13, 14, 14, 13, 13)), hole=TRUE) # H
lp <- list(p1, p2, p13, p7, p7a, p6, p5, p4, p3, p8, p11, p12, p9, p9a, p10)
spls <- SpatialPolygons(list(Polygons(lp, ID="1")))
expect_equal(comment(spls), "FALSE")
expect_true(is.null(comment(slot(spls, "polygons")[[1]])))
spls_sfc <- sf::st_as_sfc(spls)
# rsbivand fork coerce_comments 2022-12-21
spls_rt <- as(spls_sfc, "Spatial")
expect_equal(comment(spls_rt), "TRUE")
expect_equal(comment(slot(spls_rt, "polygons")[[1]]), "0 1 1 1 0 0 6 0 8 0 10 0 12")
})
test_that("as() can convert GEOMETRY to Spatial (#131)", {
skip_if_not_installed("sp")
single <- list(rbind(c(0,0), c(1,0), c(1, 1), c(0,1), c(0,0))) %>% st_polygon()
multi <- list(single + 2, single + 4) %>% st_multipolygon()
# polygons
w <- st_sfc(single, multi)
# class is GEOMETRY
expect_s4_class(as(w, "Spatial"), "SpatialPolygons")
expect_s4_class(as(st_cast(w, "MULTIPOLYGON"), "Spatial"), "SpatialPolygons")
# lines
lns <- st_cast(w, "MULTILINESTRING")
expect_s4_class(as(lns, "Spatial"), "SpatialLines")
expect_warning(ln <- st_cast(w, "LINESTRING"), "first ring")
expect_s4_class(as(ln, "Spatial"), "SpatialLines")
# points
expect_warning(pt <- st_cast(w, "POINT"), "first coordinate")
expect_s4_class(as(pt, "Spatial"), "SpatialPoints")
pts <- st_cast(w, "MULTIPOINT")
expect_s4_class(as(pts, "Spatial"), "SpatialMultiPoints")
expect_warning(pt <- st_cast(w, "POINT"), "first coordinate")
expect_s4_class(as(pt, "Spatial"), "SpatialPoints")
})
test_that("as_Spatial can convert sf (#519)", {
skip_if_not_installed("sp")
h <- st_read(system.file("shape/nc.shp", package = "sf"), quiet = TRUE)
u <- as(h, "Spatial")
s <- as_Spatial(h)
g <- as_Spatial(st_geometry(h))
identical(u, s)
expect_s4_class(s, "SpatialPolygonsDataFrame")
expect_s4_class(g, "SpatialPolygons")
expect_s4_class(as(st_geometry(h), "Spatial"), "SpatialPolygons")
})
test_that("Can convert `XY` objects to sp", {
skip_if_not_installed("sp")
expect_s4_class(as(st_point(1:2), "Spatial"), "SpatialPoints")
expect_error(as(st_point(1:3), "Spatial"))
expect_error(as(st_point(1:4), "Spatial"))
})
test_that("Can't convert `M` dimension to sp", {
skip_if_not_installed("sp")
skip_if_not(sf_extSoftVersion()[["GDAL"]] >= "2.1.0")
x <- read_sf(system.file("shape/storms_xyzm_feature.shp", package = "sf"), quiet = TRUE)
expect_error(as_Spatial(x), "not supported by sp")
})
test_that("conversion to sp breaks on empty geometries", {
skip_if_not_installed("sp")
mysfc <- st_sfc(list(
st_polygon(list(matrix(c(1,3,2,1,0,0,1,0), 4, 2))),
st_polygon() # empty polygon
))
expect_error(as_Spatial(mysfc), "conversion failed")
})
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.