这个问题出现在GIS(ArcMap 10.1)中的计算需要一个多月才能计算(并且尚未完成)之后。现在我想在R中找到更快的解决方案。
我有一个约30,000 x 80,000个单元格的矩阵,每个单元格代表一个5x5米的正方形。我需要计算每个单元格中给定半径(3000米)范围内的单元格中的值的总和。 对于矩阵边缘的单元格,我假设矩阵外的值为0。
问题是如何定义半径范围内的单元格。 必须有一个具有此功能的库,但我找不到任何。
有什么建议吗?
答案 0 :(得分:2)
您可以测试的快速方法是使用extract
并将buffer
设置为3000米,然后在sum
参数中使用fun
。您可以按顺序提取栅格中的每个单元格编号。但我仍然认为这需要花费大量时间。我们假设您的栅格名为r
....
# in the first instance I would set y to be smallish, like say 1:100 and see how long it takes
extract( r , y = 1:ncell(r) , buffer = 3000 , fun = sum )
现在,raster
软件包确实内置了一些并行性,可以访问大型的大型大型多核机器,可以通过运行加快操作速度。 ..
beginCluster()
extract( r , y = 1:ncell(r) , buffer = 3000 , fun = sum )
endCluster()
不要忘记将extract
的输出分配给变量。