1

私はterraパッケージが初めてです。aggregateレイヤーが 1 つしかないカテゴリ ラスター (より正確には SpatRaster) を使用しようとしています。結果は、元のラスターのカテゴリと同じ数のレイヤーを持つラスターになります。セルの値には、各カテゴリの元の (より小さい) セルの数が含まれている必要があります。

私が達成しようとしていることを示す例を次に示します。

    library(terra)

    # the SpatRaster with 3 categories: 1, 2, 3
    set.seed(0)
    r <- rast(nrows=4, ncols=4)
    values(r) <- sample(3, ncell(r), replace=TRUE)

    # create one layer per category with binary indicators
    r1 <- subst(r, from=c(2,3), 0)
    r2 <- subst(r, from=c(1,3), 0); r2 <- subst(r2, from=2, 1)
    r3 <- subst(r, from=c(1,2), 0); r3 <- subst(r3, from=3, 1)
    
    # stack
    s <- c(r1, r2, r3)
    names(s) <- c("cat1", "cat2", "cat3")
    
    # aggregate
    a <- aggregate(s, fact = 2, fun = "sum")

これは、この例では機能します。しかし、それは実用的でも効率的でもありません。大規模なラスター データセット (桁数 1GB ~ 10GB) と多くのカテゴリでは、おそらく (?) 実現不可能です。

terraでは、プロはどのようにこれを行うでしょうか?

4

1 に答える 1