我正在使用 R 中的光栅和相关包来做一些遥感工作。对于我正在编写的许多函数,我很想快速计算邻域/移动窗口统计信息。不幸的是,我或其他人编写的任何 R 实现都非常非常慢。
我知道 caTools 包提供了用 C 语言编写的向量/时间序列功能,可以节省 10 倍以上的时间。是否有人熟悉为矩阵和空间数据提供此功能的类似包或函数?
快速示例:
# Generate a raster with random values
r <- raster(nrows=100, ncols=100)
values(r) <- rbinom(dim(r)[1] * dim(r)[2], 1, 0.1)
# Now generate a raster highlighting the original values plus immediate neighbors
# (By default ngb yields a queen-esque weighting system)
r.neighbor <- focal(r, ngb=3, fun=max)
# system.time() of the above function for a 100x100 raster takes 0.8 seconds on my laptop
# and takes over 15 seconds for a 1000x1000 raster
理想情况下,我想更快地执行此操作并且用于更大的栅格。
非常感谢,尼克
附言。这里有一些关于 R 函数在向量上进行移动窗口操作的巨大速度差异的有趣讨论:http: //tolstoy.newcastle.edu.au/R/help/04/10/5161.html