计算给定半径内的阵列单元格的总和

时间:2013-08-22 10:49:02

标签: r

这个问题出现在GIS(ArcMap 10.1)中的计算需要一个多月才能计算(并且尚未完成)之后。现在我想在R中找到更快的解决方案。

我有一个约30,000 x 80,000个单元格的矩阵,每个单元格代表一个5x5米的正方形。我需要计算每个单元格中给定半径(3000米)范围内的单元格中的值的总和。 对于矩阵边缘的单元格,我假设矩阵外的值为0。

问题是如何定义半径范围内的单元格。 必须有一个具有此功能的库,但我找不到任何。

有什么建议吗?

1 个答案:

答案 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的输出分配给变量。