用 python 中另一幅图像的值替换光栅图像中的区域
Replace regions in a raster image with values from another image in python
我有两个与 numpy 数组具有相同面积和 x,y 维度的光栅图像。图 1 是土地利用分类(例如 类 0 到 5),图 2 是云阴影遮罩(值:0 = 无云,255 = 云/阴影区域)。
我想结合这些图像。 take/clip 图像 2 中的所有 255 个值并将它们镶嵌到图像 1 上。或者用在图像 1 中的特定像素位置找到的值替换图像 2 中的所有 0 值。
我尝试将 2d 数组设为 1d 并替换 0 值,但随后无法将其正确转换回 2d。
在 python 中完全开源地执行此栅格计算的最简单或最佳方法是什么???
您可以使用 numpy 的布尔索引功能来做到这一点。
img1 = np.array([[0, 1, 0, 1],[1, 0, 1, 0]])
img2 = np.array([[1, 2, 3, 4],[5, 6, 7, 8]])
bool_arr = img1 == 0
img1[bool_arr] = img2[bool_arr]
print(img1)
# outputs: [[1 1 3 1]
# [1 6 1 8]]
我有两个与 numpy 数组具有相同面积和 x,y 维度的光栅图像。图 1 是土地利用分类(例如 类 0 到 5),图 2 是云阴影遮罩(值:0 = 无云,255 = 云/阴影区域)。
我想结合这些图像。 take/clip 图像 2 中的所有 255 个值并将它们镶嵌到图像 1 上。或者用在图像 1 中的特定像素位置找到的值替换图像 2 中的所有 0 值。
我尝试将 2d 数组设为 1d 并替换 0 值,但随后无法将其正确转换回 2d。
在 python 中完全开源地执行此栅格计算的最简单或最佳方法是什么???
您可以使用 numpy 的布尔索引功能来做到这一点。
img1 = np.array([[0, 1, 0, 1],[1, 0, 1, 0]])
img2 = np.array([[1, 2, 3, 4],[5, 6, 7, 8]])
bool_arr = img1 == 0
img1[bool_arr] = img2[bool_arr]
print(img1)
# outputs: [[1 1 3 1]
# [1 6 1 8]]