假设我们有 0
和 1
的 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
形成一个簇的所有相邻像素的总和,并具有如下内容:
array([[0, 2, 2, 0],
[1, 0, 0, 1],
[0, 0, 3, 0],
[1, 0, 3, 3]])
最佳答案
您可以使用 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]])
关于Python:如何计算geotiff数组中值为1的相邻值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73882042/