我有两个 SpatialPolygonsDataFrame
文件:dat1,dat2
extent(dat1)
class : Extent
xmin : -180
xmax : 180
ymin : -90
ymax : 90
extent(dat2)
class : Extent
xmin : -120.0014
xmax : -109.9997
ymin : 48.99944
ymax : 60
我想使用dat2的范围裁剪文件dat1 . 我不知道怎么做 . 我之前只使用“crop”函数处理光栅文件 .
当我将此函数用于当前数据时,会发生以下错误:
> r1 <- crop(BiomassCarbon.shp,alberta.shp)
Error in function (classes, fdef, mtable) :
unable to find an inherited method for function ‘crop’ for signature"SpatialPolygonsDataFrame"’
4 回答
Streamlined method added 2014-10-9 :
raster::crop()
可用于裁剪Spatial*
(以及Raster*
)个对象 .例如,以下是如何使用它来裁剪
SpatialPolygons*
对象:Original (and still functional) answer:
rgeos 函数
gIntersection()
使这非常简单 .使用mnel的漂亮示例作为跳跃点:
以下是使用世界 Map 作为示例如何使用
rgeos
执行此操作的示例这来自Roger Bivand,发表于R-sig-Geo mailing list . Roger是
sp
包的作者之一 .以世界 Map 为例
您不能在sp多边形对象上使用裁剪 . 您将需要创建一个表示dat2的bbox坐标的多边形,然后可以在rgeos库中使用gIntersects .
编辑:此评论与2012年提供的版本有关,现在已不再适用 .
看?作物
您需要使用栅格包中的
rasterize
函数栅格化第一个SpatialPolygon我创建了一些数据来展示如何使用栅格化:
如果我尝试:
现在使用栅格化