提取栅格值,从最大值到累积总和到 x
Extracting raster values, from maximum, to cumulatively sum to x
我正在尝试确定加起来达到给定数量的栅格像元的位置,从最大值开始,然后向下。
例如,我的 150,000 个像元栅格的总和值为 52,000,000;
raster1 <- raster("myvalues.asc")
cellStats(raster1,sum) = 52,000,000
我可以提取第 95 个百分位以上的细胞;
q95 <- raster1
q95[q95 < quantile(q95,0.95)] <- NA
cellStats(q95,sum) = 14,132,000
如您所见,前 5% 的单元格(基于分位数计算)returns 约为 'raster1' 原始总数的 1400 万。
我想做的是预先确定总和为 10,000,000(或 x),然后对栅格单元格进行累计求和,从最大值开始向下计算,直到我拥有(并且可以绘制)所有单元格总和到 x.
我曾尝试将 'raster1' 转换为向量、排序、累积和等,但无法将其绑定回栅格。非常感谢这里的任何帮助
S
找不到编辑按钮.....
这正是我需要的东西,经过一个小时的摸索;
raster1v <- as.vector(raster1)
raster1vdesc <- sort(raster1v, decreasing=T)
raster1_10m <- raster1vdesc[cumsum(raster1vdesc)<10000000]
test <- raster1
test[!test%in%raster1_10m] <- NA
plot(test)
cellStats(test,sum) = 9,968,073
似乎可行,也许,我不知道。再优雅一点就更好了
以下是您自己的答案,但已重写以使其对其他人更有用(自包含)。我还将 %in%
更改为 <
,这应该更有效率。
图书馆(光栅)
r <- raster(nr=100, nc=100)
r[] = sample(ncell(r))
rs <- sort(as.vector(r), decreasing=TRUE)
r_10m <- min( rs[cumsum(rs) < 10000000] )
test <- r
test[test < r_10m ] <- NA
cellStats(test, sum)
我正在尝试确定加起来达到给定数量的栅格像元的位置,从最大值开始,然后向下。
例如,我的 150,000 个像元栅格的总和值为 52,000,000;
raster1 <- raster("myvalues.asc")
cellStats(raster1,sum) = 52,000,000
我可以提取第 95 个百分位以上的细胞;
q95 <- raster1
q95[q95 < quantile(q95,0.95)] <- NA
cellStats(q95,sum) = 14,132,000
如您所见,前 5% 的单元格(基于分位数计算)returns 约为 'raster1' 原始总数的 1400 万。
我想做的是预先确定总和为 10,000,000(或 x),然后对栅格单元格进行累计求和,从最大值开始向下计算,直到我拥有(并且可以绘制)所有单元格总和到 x.
我曾尝试将 'raster1' 转换为向量、排序、累积和等,但无法将其绑定回栅格。非常感谢这里的任何帮助
S
找不到编辑按钮.....
这正是我需要的东西,经过一个小时的摸索;
raster1v <- as.vector(raster1)
raster1vdesc <- sort(raster1v, decreasing=T)
raster1_10m <- raster1vdesc[cumsum(raster1vdesc)<10000000]
test <- raster1
test[!test%in%raster1_10m] <- NA
plot(test)
cellStats(test,sum) = 9,968,073
似乎可行,也许,我不知道。再优雅一点就更好了
以下是您自己的答案,但已重写以使其对其他人更有用(自包含)。我还将 %in%
更改为 <
,这应该更有效率。
图书馆(光栅)
r <- raster(nr=100, nc=100)
r[] = sample(ncell(r))
rs <- sort(as.vector(r), decreasing=TRUE)
r_10m <- min( rs[cumsum(rs) < 10000000] )
test <- r
test[test < r_10m ] <- NA
cellStats(test, sum)