4

在 R 中有一个光栅,我如何在网格周围绘制一条等高线(不连接中心或其他任何东西,真正遵循网格的边界)具有某些值(或由某些掩码标识)?

下面的例子展示了如何获得值为 0.6 的区域周围的等高线:如何做同样的事情,但线条跟随网格的边界?该函数应返回要添加到绘图的对象(作为SpatialLinesDataFramefor rasterToContour),并且相邻网格应包含在一条等高线中(即,应仅绘制多边形的外边界)。我找不到解决方案rasterToPolygons(有关视觉方面的信息,请参见此处,但在这里对我没有帮助)。

set.seed(2)
r <- raster(nrow=10, ncol=10)
r[] <- runif(ncell(r))
r[r>0.6] <- 0.6
rc <- rasterToContour(r, levels=c(0.6))
plot(r)
plot(rc, add=TRUE)

在此处输入图像描述

4

1 回答 1

8

我会使用clump()和的组合rasterToPolygons()

library(raster)
library(rgeos)  ## For dissolve = TRUE in rasterToPolygons()

## Recreate your data
set.seed(2)
r <- raster(nrow = 10, ncol = 10)
r[] <- runif(ncell(r))   
plot(r)

## Compute and then plot polygons surrounding cells with values greater than 0.6
SP <- rasterToPolygons(clump(r > 0.6), dissolve = TRUE)
plot(SP, add = TRUE)

在此处输入图像描述

于 2015-03-04T16:48:59.953 回答