Python 数据块掩蔽

Python 数据块掩蔽,python,dask,raster,Python,Dask,Raster,我有一个应用程序,将光栅数据加载到Dask数组中,然后只需要处理与某个感兴趣区域重叠的块。我知道我可以创建一个Dask屏蔽数组,但我正在寻找一种方法来阻止某些块被处理——因为一些ROI包含多个相距很远的多边形,因此90%的块最终将被丢弃 一个简单的例子是,如下所示,arr2根本不包含任何信息,但需要用于对齐其他块 import numpy as np import dask.array as da arr0 = da.from_array(np.arange(1, 26).reshape(5,

我有一个应用程序,将光栅数据加载到Dask数组中,然后只需要处理与某个感兴趣区域重叠的块。我知道我可以创建一个Dask屏蔽数组,但我正在寻找一种方法来阻止某些块被处理——因为一些ROI包含多个相距很远的多边形,因此90%的块最终将被丢弃

一个简单的例子是,如下所示,
arr2
根本不包含任何信息,但需要用于对齐其他块

import numpy as np
import dask.array as da

arr0 = da.from_array(np.arange(1, 26).reshape(5,5), chunks=(5, 5))
arr1 = da.from_array(np.arange(25, 50).reshape(5,5), chunks=(5, 5))
arr2 = da.from_array(np.zeros((5,5)), chunks=(5, 5)) 
arr3 = da.from_array(np.arange(75, 100).reshape(5,5), chunks=(5, 5))

a = da.block([[arr0, arr1],[arr2, arr3]])
b = da.ma.masked_equal(a, 0)
c = da.min(b)
c.visualize()

通过绘制图,我们可以看到arr2仍然在计算图中,而且,它正在占用内存,因为即使它被屏蔽,它仍然会被计算。我想实现的是一种屏蔽整个块/块的方法,这样在计算中它就被忽略了。

你能提供更多的细节/代码吗?例如,您如何使用什么库加载数据?我如何加载数据与问题无关,我已经添加了更多关于代码的细节。我认为您应该让希望帮助您确定与他们相关的内容的人员了解问题。例如,理解底层数据是什么以及如何加载对于区块来说可能很有趣。在这种情况下,数据是以区块方式加载的地理空间光栅数据(专有格式),其中每个区块/空间区域直接映射到dask中的区块,因为区块具有不同的投影。为了确保精确的地理空间对齐,需要空块。