我有下面的代码,它创建一个与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()
答案 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
对象。您可以打印/保存它。