R Under development (unstable) (2024-03-16 r86144 ucrt) -- "Unsuffered Consequences" Copyright (C) 2024 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > #library(rgdal2) > #openOGRLayer("PG:dbname=postgis" , "meuse2") > > suppressPackageStartupMessages(library(sf)) > options(rgdal_show_exportToProj4_warnings = "none") > outer = matrix(c(0,0,10,0,10,10,0,10,0,0),ncol=2, byrow=TRUE) > hole1 = matrix(c(1,1,1,2,2,2,2,1,1,1),ncol=2, byrow=TRUE) > hole2 = matrix(c(5,5,5,6,6,6,6,5,5,5),ncol=2, byrow=TRUE) > pol1 = list(outer, hole1, hole2) > pol2 = list(outer + 12, hole1 + 12) > pol3 = list(outer + 24) > mp = list(pol1,pol2,pol3) > mp1 = st_multipolygon(mp) > sf = st_sf(a=1, st_sfc(mp1)) > if (suppressPackageStartupMessages(require(sp, quietly = TRUE))) { + a = as(sf, "Spatial") + print(class(a)) + b = st_as_sf(a) + a2 = as(a, "SpatialPolygonsDataFrame") + print(all.equal(a, a2)) # round-trip + + b1 = as(a, "sf") + print(all.equal(b, b1)) + b = st_as_sfc(a) + b1 = as(a, "sfc") + print(all.equal(b, b1)) + } [1] "SpatialPolygonsDataFrame" attr(,"package") [1] "sp" [1] TRUE [1] TRUE [1] TRUE > > # SpatialMultiPoints > if (require(sp, quietly = TRUE)) { + suppressWarnings(RNGversion("3.5.3")) + set.seed(1331) + # example(SpatialMultiPoints, ask = FALSE, echo = FALSE) # loads mpdf + cl1 = cbind(rnorm(3, 10), rnorm(3, 10)) + cl2 = cbind(rnorm(5, 10), rnorm(5, 0)) + cl3 = cbind(rnorm(7, 0), rnorm(7, 10)) + mpdf = SpatialMultiPointsDataFrame(list(a=cl1, b=cl2, c=cl3), data.frame(a = 1:3, row.names=c("a", "b", "c"))) + m = st_as_sf(mpdf) + all.equal(as(m, "Spatial"), mpdf) # TRUE + + demo(meuse, ask = FALSE, echo = FALSE) + #meuse = spTransform(meuse, CRS("+proj=longlat +ellps=WGS84 +no_defs")) + pol.grd = as(meuse.grid, "SpatialPolygonsDataFrame") + #meuse.grd = spTransform(meuse.grid, CRS("+proj=longlat +ellps=WGS84 +no_defs")) + #pol.grd = spTransform(pol.grd, CRS("+proj=longlat +ellps=WGS84 +no_defs")) + #meuse.area = spTransform(meuse.area, CRS("+proj=longlat +ellps=WGS84 +no_defs")) + #meuse.riv = spTransform(meuse.riv, CRS("+proj=longlat +ellps=WGS84 +no_defs")) + #summary(st_as_sf(meuse)) + #summary(st_as_sf(meuse.grd)) + #x <- st_as_sf(meuse.grid) # don't print: CRS variations. + #summary(st_as_sf(meuse.area)) + #summary(st_as_sf(meuse.riv)) + #summary(st_as_sf(as(meuse.riv, "SpatialLines"))) + #summary(st_as_sf(pol.grd)) + #summary(st_as_sf(as(pol.grd, "SpatialLinesDataFrame"))) + + nc = st_read(system.file("gpkg/nc.gpkg", package="sf"), "nc.gpkg", quiet = TRUE) + all.equal(nc, st_as_sf(as(nc, "Spatial"))) + st_crs(nc) == st_crs(st_as_sf(as(nc, "Spatial"))) + + detach("package:sp") + } > > proc.time() user system elapsed 1.09 0.14 1.23