处理速度 rasterstats.zonal_stats

问题描述 投票:0回答:0

我认为我需要的

有人对如何在 python 中更快地运行区域统计有什么建议吗?

zstats = rasterstats.zonal_stats(shapefile, raster, affine=affine, nodata=np.nan,
                                          stats=stats, all_touched=True, geojson_out=True)

关于我的具体问题的更多细节:

我迫切希望找到一种方法来加快我正在运行的区域统计代码的处理时间。在过去的两个月里,我尝试了很多事情,但我一无所获。这一切似乎都源于跑步所需的时间长短

rasterstats.zonal_stats
。我不是一个经验丰富的编码员,所以我真的不知道从哪里开始尝试解压模块的底层代码。

我目前正在使用

concurrent.futures.ThreadPoolExecutor
将它作为一个函数并行运行,但我需要运行它数千次,我估计它需要大约 60 天的时间才能运行,这取决于更小的代码计时样本:

  • 58 个 shapefile,每个 shapefile 有大约 400 个矢量形状(25k 区域)

  • 4 个具有 1500 个波段的多波段栅格

我已经尝试在函数之前加载所有数据,并将其作为函数的一部分分段加载,但似乎都不会影响速度。我试过多处理和多线程(多处理似乎不起作用)。多线程似乎只是将进程运行所需的时间延长了线程数(导致与 for 循环相比相等或更长的时间)。

我什至尝试向 ChatGPT 寻求指导,它建议显着加快处理时间的一件事是将 3d 多波段栅格压缩为 2d 单波段栅格,因此我只需要为每个 shapefile 运行一次,但这似乎影响了要与 shapefile 坐标匹配的栅格。奇怪的是,绘制它似乎仍然正确重叠,所以我真的不明白在那里做什么,或者这是否是一个值得追求的策略。我还能够将 shapefile 压缩到一个文件中,但这并没有加快速度。

如果有帮助,我很乐意分享代码的其他部分。

python multithreading performance raster shapefile
© www.soinside.com 2019 - 2024. All rights reserved.