1

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

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

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

有什么建议么?

4

1 回答 1

2

您可以测试的一种快速方法是使用extract并设置buffer为 3000m,然后sumfun参数中使用。您可以按顺序提取栅格中的每个像元编号。但我仍然认为这将花费大量时间。假设您的栅格被称为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变量。

于 2013-08-22T11:16:49.297 回答