Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中基于空间多边形裁剪光栅_R_Crop_R Raster_Sp - Fatal编程技术网

如何在R中基于空间多边形裁剪光栅

如何在R中基于空间多边形裁剪光栅,r,crop,r-raster,sp,R,Crop,R Raster,Sp,我想基于空间多边形对象裁剪光栅。我知道我们可以在光栅包中使用裁剪功能 raster::crop(rasterFile, SpatialPolygonsObject) 但此函数基于空间多边形对象的范围,因此裁剪结果为矩形。然而,在某些情况下,空间多边形对象不是矩形,如何处理这些情况 您可以使用光栅::遮罩。下面是一个可复制的示例: library(raster) r = raster(vals = rnorm(400), nrows=20, ncols=20, ext= extent(c(0,

我想基于
空间多边形
对象裁剪光栅。我知道我们可以在
光栅
包中使用
裁剪
功能

raster::crop(rasterFile, SpatialPolygonsObject)

但此函数基于
空间多边形
对象的
范围
,因此裁剪结果为矩形。然而,在某些情况下,
空间多边形
对象不是矩形,如何处理这些情况

您可以使用
光栅::遮罩
。下面是一个可复制的示例:

library(raster)
r = raster(vals = rnorm(400), nrows=20, ncols=20, ext= extent(c(0, 20, 0, 20)))
p = Polygon(matrix(5, 5, 15, 12, 7, 16, 3, 10), ncol=2, byrow = T))
p = SpatialPolygons(list(Polygons(list(p), "p")))

plot(r)
lines(p)


如果您还需要剪裁光栅的范围以删除遮罩周围的空行和空列,则您可以在应用
遮罩之前使用
裁剪
,也可以在应用
遮罩之后使用
修剪(r2,values=NA)

谢谢您的回复。但是如何删除这些未包含在遮罩中的单元格?但是您可以在
遮罩
之前执行
裁剪
以尽可能多地删除单元格,或者使用修剪功能(从光栅包中)删除具有NA值的外部行和列:
修剪(r2,values=NA)
r2 = mask(r,p)
plot(r2)