【发布时间】:2017-08-13 03:14:26
【问题描述】:
以前我使用raster::crop 和raster::mask 与Spatial* 类的shapefile,使用rgal::readOGR 读入。
我只是在“升级”我的脚本以使用sf 来读取和操作多边形。
光栅::裁剪
raster::crop 需要一个“范围”对象作为第二个参数。到目前为止,这是从 Spatial* 对象中自动提取的。所以我可以做raster::crop(raster, polygon)。
要使用 sf 对象进行此操作,我可以调用 raster::crop(raster, as.vector(st_bbox(polygon))) 作为一个丑陋的解决方法。
光栅::掩码
由于raster::mask 显然期望Raster* object or a Spatial* object,唯一的解决方案是使用as("Spatial") 将sf 对象强制回Spatial* 对象。
我假设这个问题适用于所有raster 函数?我是否忽略了某些事情,或者只是raster 包(还)不能与sf 对象一起使用?
【问题讨论】:
-
你不需要
as.vector(st_bbox(pnt_buf)),而是as.vector(st_bbox(pnt_buf))[c(1, 3, 2, 4)],因为crop期望c(xmin, xmax, ymin, ymax)