繁体   English   中英

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

[英]how to create an extent which is not parallel to X and Y axis 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()

根据定义,范围是矩形的(至少在栅格数据包中)。 但是您可以定义一个多边形,然后使用它来裁剪和掩盖栅格数据。

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

我建议尝试use="pol"参数进行select() 尽管结果区域可能不如您所希望的那样精确,但这将允许交互式选择绘图上的区域。

使用代码进行编辑:

这是我的处理方式: x1 <- select(x, use = "pol")

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM