【问题标题】:raster::gridDistance() fails on medium to large raster filesraster::gridDistance() 在大中型光栅文件上失败
【发布时间】:2023-01-12 08:24:53
【问题描述】:

我有一些中等大小的光栅文件(最大大小~190 MB),我想计算网格距离以使用raster::gridDistance()

我发现在最好的情况下,操作非常缓慢,在最坏的情况下,R 只会为我最大的文件崩溃。请注意:我对内存管理建议不太感兴趣(例如最大化memory.limit(),分解成更小的栅格或追求并行处理方法),因为这些正在回避我的真正问题。如果真的不应该为 190+ MB 大小的文件尝试网格距离,那么我将把工作分成更小的块。

raster::gridDistance() documentation 提到该功能“目前仅作为'皇后'案例实现,其中单元格有 8 个邻居”。同样从文档中,我了解到我可以尝试解决“在复杂对象分布在不同块上的情况下的错误......通过改变块大小,请参见函数setOptions()”。并且“'gdistance'包中提供了额外的距离测量和选项(方向,成本距离)”,但我一直在犹豫是否要追求这些而没有真正理解它们的局限性/考虑因素。

感谢这个问题R - terra::distance() equivalent of raster::gridDistance(..., origin = x, omit = y),我知道有一种使用terra::gridDistance()的替代方法,但我无法辨别该操作是否比raster::gridDistance()更有效或更适合我的需要

我没有发布代表或会话信息,因为我的问题实际上如下:

  1. terra::gridDistance()(或{gdistance} 提供的其他替代方案)真的是使用中等大型光栅文件计算网格距离的更有效(更快)或可自定义的方法吗?
  2. 如果不是,使用raster::gridDistance()setOptions()更改网格距离的计算方式(改变块大小或其他方式)有哪些注意事项?

    如果这个问题不完全符合准则,我深表歉意 - 我只是将其作为对上面链接问题的评论发布,但我的声誉不够高。如果有足够的兴趣,我可以重新格式化我的问题,以便它更好地符合带有 reprex 等的准则。此外,我在这里发布问题而不是 Geographic Information Systems,因为原始链接问题已发布在这里。

【问题讨论】:

    标签: r distance raster spatial terra


    【解决方案1】:

    我知道有一种使用 terra::gridDistance() 的替代方法,但我无法辨别该操作是否更有效或适合我的需要

    嗯,你试过了吗?这可能比写一个长问题更有效率。

    帮助文件没有提到raster::gridDistance 的限制,所以你应该好好去。但是注意方法改名为terra::gridDist()

    “terra”包是“raster”包的替代品;所以我认为“terra”是更普遍的最佳起点。

    【讨论】:

    • 感谢@robert-hijmans 抽出宝贵时间发表评论,感谢您在软件包方面所做的出色工作。我开始使用 raster::gridDistance() 的原因是因为我一直在尝试复制一些广泛使用它的作品。在没有更好地理解后果的情况下太深入地改变脚本之前,我想在这里问一下。我将按照您的建议使用terra::gridDist(),并在此处报告任何有趣的发现。
    猜你喜欢
    • 1970-01-01
    • 2020-09-16
    • 2015-07-06
    • 2023-03-17
    • 2021-10-31
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    相关资源
    最近更新 更多