R terra direction -我只能在一个方向上做吗?

y0u0uwnf  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(109)

terra::direction()返回栅格中每个像元的值。我有一个栅格,其中约50%的像元值为NA,其余的像元值为某个值。我需要的是direction(),但只针对NA像元,其余的像元不进行计算。
我只需要NA像元的方向,因为我拥有的栅格非常庞大,在边缘周围有一个NA像元的细边框,我想知道其方向。我的大型栅格为42893*52031 = 2231765683个像元,而其中的NA部分只有500000个像元左右-我想如果我可以使用direction()忽略非NA像元,可能会更快。
下面是我例子:

r <- rast(nrow=10, ncol=10, crs="+proj=merc")
values(r) <- (c(rep(1, 49), NA, 1, 1, 1, 1, 1, 1, 1, NA, NA, NA, 1, 1, 1, 1, 1, rep(NA, 35)))

b <- (direction(r, degrees=T)

plot(b)

字符串
我可以只对NA单元格做direction()吗?(或相反)任何帮助和见解都非常感谢。

093gszye

093gszye1#

坦率地说,我对这种方法持怀疑态度,但正如目前所写的那样,direction位于空间栅格上的非NA像元之间,这种方法需要选择怪物中不存在的值来替换NA值

r <- rast(nrow=10, ncol=10, crs="+proj=merc")
values(r) <- (c(rep(1, 49), NA, 1, 1, 1, 1, 1, 1, 1, NA, NA, NA, 1, 1, 1, 1, 1, rep(NA, 35)))

x <- subst(r, NA, 11)
x1 <- subst(x, 1, NA) # this could be x <- and avoid three giants on disk
# or x2 <- clamp(x, lower = 11L, upper = 11L, value = FALSE)

direction(x1)
class       : SpatRaster 
dimensions  : 10, 10, 1  (nrow, ncol, nlyr)
resolution  : 36, 18  (x, y)
extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs 
source(s)   : memory
name        :    lyr.1 
min value   : 0.000000 
max value   : 5.695183

字符串
哎呀,我把硬盘装满了.会有人沿着来出更好的主意的。

相关问题