首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用最少特定图层的镶嵌栅格堆栈

使用最少特定图层的镶嵌栅格堆栈
EN

Stack Overflow用户
提问于 2015-06-10 16:13:57
回答 1查看 306关注 0票数 1

我正在尝试镶嵌42个遥感栅格堆栈(具有250个波段),其依据是在重叠区域中,应采用具有最低视角的像素

除了我的光栅堆栈之外,我还有42个光栅(每个堆栈一个),每个像素都有相应的视角。

你知道怎么解决这个问题吗?

我尝试在堆栈中包含视角栅格,并使用类似于

代码语言:javascript
复制
mosaic(a,b,fun=function(x)(min(x[[251]])) 

但那并不管用。

有什么建议吗?

提前谢谢你,

R.

EN

回答 1

Stack Overflow用户

发布于 2015-06-11 11:51:59

当问这样的R问题时,你应该用代码建立一个简单的例子,以更好地说明你的问题,并使其更容易回答。

问题就在这里

代码语言:javascript
复制
library(raster)
r <- raster(ncol=100, nrow=100)
r1 <- crop(r, extent(-10, 11, -10, 11))
r2 <- crop(r, extent(0, 20, 0, 20))
r3 <- crop(r, extent(9, 30, 9, 30))

# reflectance values
r1[] <- 1:ncell(r1)
r2[] <- 1:ncell(r2)
r3[] <- 1:ncell(r3)

set.seed(0)
# nadir values
n1 <- setValues(r1, runif(ncell(r1)))
n2 <- setValues(r2, runif(ncell(r2)))
n3 <- setValues(r3, runif(ncell(r3)))

您的问题是如何基于n中的值合并/镶嵌r(当存在具有值的重叠单元格时,使用具有最高对应值n(i)的r(i)的值)。

以下是解决此问题的一般方法:

代码语言:javascript
复制
r <- list(r1, r2, r3)
n <- list(n1, n2, n3)

whichmax <- function(x, ...) { 
    ifelse(all(is.na(x)), NA, which.max(x)) 
}

n$fun <- whichmax
# which layer has the highest nadir value?   
m <- do.call(mosaic, n)

q <- list()
for (i in 1:length(r)) {
    y <- r[[i]]
    x <- crop(m, y)
    y[x != i] <- NA
    q[i] <- y
}

M <- do.call(merge, q)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30750750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档