如何使用多边形切割砖块?

4
我有一个生物气候变量的砖块文件,这个砖块文件是由四个30秒砖块合并而成的,因此它有点大。我想通过使用多边形作为边界来剪切我的砖块文件以获取我的研究区域的砖块文件。我该怎么办?否则,如果不能用砖块实现,我能用栅格吗?
提前感谢~
马可

格式是什么?可以使用栅格或adehabitat,我有一些用于处理.asc生物气候文件的定制函数。 - J. Win.
它是来自raster包的栅格或砖块,也被称为“grd”。这是raster包的默认格式。 - Marco
1个回答

4

如果你想将砖块裁剪成一个更小的矩形,可以使用extent()。如果你更愿意通过点击来选择,可以使用drawExtent()

编辑:由于你使用了“切割”和“遮罩”这两个术语,我不确定我是否理解正确,但以下两种方法可能会有所帮助。你甚至可以同时使用两种方法。

# an example with dimensions: 77, 101, 3  (nrow, ncol, nlayers)
myGrid_Brick <- brick(system.file("external/rlogo.grd", package="raster"))

# a simple polygon within those dimensions
myTriangle_P <- Polygon(cbind(c(10, 80, 50, 10), c(10, 20, 65, 10)))
myTriangle_Ps <- Polygons(list(myTriangle_P), "fubar")
myTriangle_SP <- SpatialPolygons(list(myTriangle_Ps))
myTriangle_Ras <- rasterize(myTriangle_SP, myBrick)

# this will crop a brick to minimal rectangle that circumscribes the polygon
# extent(myCrop) is smaller than extent(myGrid) but no values are changed
myCrop_Brick <- crop(myGrid_Brick, myTriangle_SP)

# while this converts every coordinate that is NA in
# the mask to become NA in the returned brick
# while leaving the brick extent unchanged
myMask_Brick <- mask(myGrid_Brick, myTriangle_Ras)

谢谢Jonw!我认为crop()、extent()或drawExtent()并不是用于限制“边界”或“掩码”,而只是用于范围,即网格的四个角。换句话说,我想知道是否有任何方法可以使我的所有步骤仅在该边界内生效? - Marco
再次感谢jonw!我认为mask是我需要的! - Marco
1
@Marco:如果这是正确的答案,你可以点击投票旁边的勾号将其标记为未来用户查看。另外,如果你接受了我的回答,我也会得到一些积分。 :) - J. Win.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接