R:光栅包中sf对象的处理

R:光栅包中sf对象的处理,r,r-raster,sf,R,R Raster,Sf,以前我使用的是graster::crop和graster::mask和类Spatial*的shapefile,使用rgal::readOGR读入 我只是在“升级”我的脚本,以便使用sf读取和操作多边形 光栅::裁剪 raster::crop需要一个“extent”对象作为第二个参数。到目前为止,这是从空间*对象中自动提取的。所以我可以只做光栅::裁剪(光栅,多边形) 要使用sf对象实现这一点,我可以调用raster::crop(raster,as.vector(st_bbox(polygon))

以前我使用的是
graster::crop
graster::mask
和类Spatial*的shapefile,使用
rgal::readOGR
读入

我只是在“升级”我的脚本,以便使用
sf
读取和操作多边形

光栅::裁剪
raster::crop
需要一个“extent”对象作为第二个参数。到目前为止,这是从空间*对象中自动提取的。所以我可以只做
光栅::裁剪(光栅,多边形)

要使用
sf
对象实现这一点,我可以调用
raster::crop(raster,as.vector(st_bbox(polygon))
作为一种难看的解决方法

光栅:掩模 由于
raster::mask
显然需要
raster*对象或space*对象
,因此唯一的解决方案是使用
as(“space”)
sf
对象强制回space*对象

我假设这个问题可以推广到所有
光栅
函数?我是否忽略了什么,或者仅仅是因为
光栅
包(尚未)无法处理
sf
对象

CRAN上的可用版本于2017年1月编写。
会议于2016年6月举行

“sf”软件包太新,无法与光栅软件包一起使用。

所以,现在,你需要使用你的“丑陋的变通方法”…

作为将来的参考,现在就可以了!下面是一些从2017年11月13日发布的
?crop
中略作修改的示例代码,使用光栅测试

library(raster)
library(sf)

r <- raster(nrow=45, ncol=90)
r[] <- 1:ncell(r)

# crop Raster* with sf object
b <- as(extent(0, 8, 42, 50), 'SpatialPolygons')
crs(b) <- crs(r)
b <- st_as_sf(b) # convert polygons to 'sf' object
rb <- crop(r, b)

# mask Raster* with sf object
mb <- mask(r, b)
库(光栅)
图书馆(sf)

r您不希望
as.vector(st_bbox(pnt_buf))
而是
as.vector(st_bbox(pnt_buf))[c(1,3,2,4)]
,因为crop期望
c(xmin,xmax,ymin,ymax)
您可以打印sf版本吗?这会在方法中产生错误::validObject(y):无效的类“区段”对象:TRUE,相同的光栅版本。Sure@bw4sz,
packageVersion(“sf”)
'0.6.4'
。我在OSX(Mojave)上的sf
0.7.1
和光栅
2.7.15
仍然会遇到这个错误。这是没有修好的吗?