检索输出光栅比较R中的两个评级器层
我有两个尺寸为检索输出光栅比较R中的两个评级器层,r,statistics,geospatial,raster,r-raster,R,Statistics,Geospatial,Raster,R Raster,我有两个尺寸为(78017651)的光栅层。我想将一个光栅层的每个像素与另一个进行比较,并创建一个新的光栅,该光栅在最初的两个光栅中具有最小像素值。也就是说,如果光栅1的任何i,j像素的值为25,而光栅2的相同i,j像素的值为20,则在输出光栅中,i,j像素应为20。您可以使用两个光栅层的min。 让我们从一个可复制的示例开始: library(raster) r1 <- raster(ncol = 5, nrow = 5) r1[] <- 1:ncell(r1) plot(r1)
(78017651)
的光栅层。我想将一个光栅层的每个像素与另一个进行比较,并创建一个新的光栅,该光栅在最初的两个光栅中具有最小像素值。也就是说,如果光栅1的任何i,j像素
的值为25,而光栅2的相同i,j像素的值为20,则在输出光栅中,i,j像素
应为20。您可以使用两个光栅层的min
。让我们从一个可复制的示例开始:
library(raster)
r1 <- raster(ncol = 5, nrow = 5)
r1[] <- 1:ncell(r1)
plot(r1)
r2 <- raster(ncol = 5, nrow = 5)
r2[] <- ncell(r2):1
par(mfrow = c(1,3))
plot(r1)
plot(r2)
之后,可以对这些值应用函数
r3[] <- apply(cbind(r1[], r2[]), 1, min)
r3[]以@loki为例,您还有三个选项可以计算两层的最小值:
library(raster)
calc(stack(r1,r2),fun=min,na.rm=T)
stackApply(stack(r1,r2),indices = c(1,1),fun='min',na.rm=T)
overlay(r1,r2,fun=min,na.rm=T)
我尝试了,但输出光栅没有最小值。b1是具有上述值范围的光栅:0、16637(最小值、最大值),b2也是具有值0、16961(最小值、最大值)的光栅,当我使用此最小值函数时,得到的输出范围为0、24838(最小值、最大值)光栅是陆地卫星8波段。请查看。由于您似乎在处理大型LS8数据,请尝试用一个较小的示例来说明大型数据集的错误/困难。
r3[] <- apply(cbind(r1[], r2[]), 1, min)
library(raster)
calc(stack(r1,r2),fun=min,na.rm=T)
stackApply(stack(r1,r2),indices = c(1,1),fun='min',na.rm=T)
overlay(r1,r2,fun=min,na.rm=T)