numpy 如何计算geotiff数组中值为1的相邻值

piv4azn7  于 2023-05-17  发布在  其他
关注(0)|答案(1)|浏览(180)

假设我们有01的geotiff。

import rasterio
src = rasterio.open('myData.tif')
data = src.read(1)
data
array([[0, 1, 1, 0],
       [1, 0, 0, 1],
       [0, 0, 1, 0],
       [1, 0, 1, 1]])

对于每个像素1,我希望所有相邻像素的总和形成一个1的集群,并具有如下内容:

array([[0, 2, 2, 0],
       [1, 0, 0, 1],
       [0, 0, 3, 0],
       [1, 0, 3, 3]])
9rbhqvlz

9rbhqvlz1#

可以使用scipy.ndimage.label

from scipy.ndimage import label

out = np.zeros_like(data)

labels, N = label(data)
for i in range(N):
    mask = labels==i+1
    out[mask] = mask.sum()

输出:

array([[0, 2, 2, 0],
       [1, 0, 0, 1],
       [0, 0, 3, 0],
       [1, 0, 3, 3]])

相关问题