【问题标题】:How to cut brick using polygon?如何使用多边形切割砖块?
【发布时间】:2011-02-11 01:48:58
【问题描述】:

我有一个 bioclim 变量的砖文件,砖是由四个 30 秒的砖合并而成的,所以有点大。我想通过使用多边形作为边界切割它来获得我研究区域的砖文件。我该怎么办?否则,如果不能用砖做,我可以用光栅做吗?

先谢谢了~

马可

【问题讨论】:

  • 格式是什么? Raster 或 adehabitat 都可以,我有一些自定义函数来处理 .asc bioclim 文件。
  • raster包中的raster或brick,也称为“grd”。它是光栅包的默认格式。

标签: r polygon cut raster


【解决方案1】:

如果您想将砖裁剪成更小的矩形,请查看extent()。如果您更愿意通过点击进行选择,也可以drawExtent()

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

# 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)

【讨论】:

  • 谢谢琼!我认为crop(),extent()或drawExtent()不是为了限制“bounday”或“Mask”,而只是为了限制范围,即网格的四个角。换句话说,我想知道有没有什么方法可以让我所有的步骤都只能在那个边界内生效?
  • 再次感谢 jonw!我认为面具是我需要的!
  • @Marco:如果这是正确答案,您可以通过单击投票数旁边的复选标记将其标记以供未来用户查看。另外,如果你接受我的回答,我会得到一些分数。 :)
猜你喜欢
  • 1970-01-01
  • 2015-04-28
  • 1970-01-01
  • 2010-12-19
  • 2011-08-09
  • 2012-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多