如何创建与X轴和Y轴R栅格不平行的范围

时间:2015-06-17 21:31:22

标签: r raster

我有下面的代码,它创建一个与X轴和Y轴平行的范围。

有没有办法创建一个不直的范围 - 例如我想创建两条平行于一条对角线的线。但是一条线在该对角线下方10个像素,另一条线在对角线上方10个像素。以类似的方式再创建2条线,但围绕另一条对角线,并使用这4条线作为我的范围边缘

library(raster)
r1 <- brick(system.file("external/rlogo.grd", package="raster"))
x <- crop(r1, extent(0,50,0,50))
plotRGB(x)

png("aaa.png",width=20,height=20)
par(mai=c(0,0,0,0))
image(crop(x,extent(c(0,30,0,30))))
dev.off()

2 个答案:

答案 0 :(得分:2)

根据定义,范围是矩形的(至少在光栅包中)。但是你可以定义一个多边形并使用它来裁剪&amp;屏蔽您的栅格数据。

library(raster)
r <- brick(system.file("external/rlogo.grd", package="raster"))
plotRGB(r)
p <- spPolygons(rbind(c(20, 20), c(30, 50), c(70, 50), c(60, 20)))
plot(p, add=TRUE, lwd=4, border='red')

x <- crop(r, p)
m <- mask(x, p)
plotRGB(m)
plot(p, add=TRUE, lwd=4, border='red')

答案 1 :(得分:0)

我建议您使用select()参数尝试use="pol"。这将允许在绘图上交互选择区域,尽管生成的区域可能不如您想要的那么精确。

使用代码编辑:

以下是我将如何做到这一点: x1 <- select(x, use = "pol")

这将在新窗口中打开x作为图像(如果使用RStudio,则在“图”选项卡中)。现在,您可以使用鼠标选择区域:只需单击您想要拥有的区域周围的点。完成后单击Esc,新图像将保存为x1对象。您可以打印/保存它。