这个问题是在 GIS (ArcMap 10.1) 中的计算需要一个多月的时间来计算(并且尚未完成)之后出现的。现在我正在尝试在 R 中找到更快的解决方案。
我有一个约 30,000 x 80,000 个单元格的矩阵,其中每个单元格代表一个 5x5 平方米的正方形。我需要计算每个单元格在给定半径(3000 米)内的单元格中的值的总和。对于矩阵边缘的单元格,我假设矩阵外的值为 0。
问题是如何定义落在半径内的单元格。必须有一个具有此功能的库,但我找不到。
有什么建议么?
这个问题是在 GIS (ArcMap 10.1) 中的计算需要一个多月的时间来计算(并且尚未完成)之后出现的。现在我正在尝试在 R 中找到更快的解决方案。
我有一个约 30,000 x 80,000 个单元格的矩阵,其中每个单元格代表一个 5x5 平方米的正方形。我需要计算每个单元格在给定半径(3000 米)内的单元格中的值的总和。对于矩阵边缘的单元格,我假设矩阵外的值为 0。
问题是如何定义落在半径内的单元格。必须有一个具有此功能的库,但我找不到。
有什么建议么?
您可以测试的一种快速方法是使用extract
并设置buffer
为 3000m,然后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
变量。