我正在运行R 3.4.0和SF版本0.4.1。 sf文档中提到了
as_Spatial
函数,但是由于某些原因在我的安装中不可用。 #1 楼
我使用了 as(nc, 'Spatial')
作为Edzer Pebesma指出的小插图的第2部分(滚动到页面底部)。
评论
看到了。但是我只是在最近才发现这个问题,当我看到这个问题时,我感到有将其放入一个正确答案的渴望;)
– andschar
17年5月5日在7:46
而且重要的是,将来的读者也不会忽略已接受的答案。
– Kazuhito
17年5月6日在2:05
为了使它真正像SPDF一样工作,我需要执行以下操作:tmp <-as(nc,'Spatial'),然后tmpid <-sapply(slot(tmp,“ polygons”),function(x)slot(x ,“ ID”)),然后row.names(tmp)<-tmpid
–西蒙
17年5月15日在11:50
“像SPDF一样真正工作”是什么意思?我看不到转换带来的不利影响。
– andschar
17年5月15日在14:16
#2 楼
我必须使用sf:::as_Spatial()
作为解决方法。library(sf)
nc <- st_read(system.file("shape/nc.shp", package="sf"))
# sf -> sp
nc_sp <- as_Spatial(nc$geom) # Error: could not find function "as_Spatial"
nc_sp <- sf:::as_Spatial(nc$geom) # This works
library(sp)
plot(nc_sp)
评论
有没有办法使数据框保持完整?
–西蒙
17年5月4日在8:03
通过@mdsumner作为(sf,“ Spatial”)运行,我确认它会产生SpatialPolygonsDataFrame,这更适合您的要求。似乎as_Spatial()仅采用sfc(即几何)。
– Kazuhito
17年5月4日在8:08
该函数是一个方法,可以使用as()进行调用。它没有导出为功能对象,这就是为什么要直接调用它,您需要“ :::”。
–杰弗里·埃文斯(Jeffrey Evans)
17年5月4日在17:29
评论
强制性方法在0.4-1可用,在尝试调用该函数时会发生什么?as(sf,“空间”)
Kazuhito的@Jeffrey Evans,下面的答案重复了该问题(并提供了部分解决方案)