Python:如何计算geotiff数组中值为1的相邻值?

标签 python numpy

假设我们有 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 形成一个簇的所有相邻像素的总和,并具有如下内容:

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/

相关文章:

python - TIS/TSM非主线程错误;由热键触发的 pygame 脚本 (rumps, pygame, keyboard)

python - Accelerate 和 NumPy 为 FFT 产生不同的结果

python - 为什么我的自定义类给 “' int'对象不可调用'

python - 字符串文字中的反斜杠是什么意思?

python - 为什么numpy的float128只有63位尾数?

python - 如何在 numpy.append 中短路扁平化

python - 从热图数据生成边界框

python - Fit 和 inverse_transform 中不同形状的 MinMaxScaler

python - 下载没有 Python unicode 错误的 html

python - 如何使用seaborn为每个数据列设置绘图样式来绘制分类数据?