我有一个数组 (S1_data) 和一个二进制数组掩码 (0,1) (S1_mask)。我想屏蔽二进制数组掩码中对应于 values = 0 的值并保持值 = 1。我想将屏蔽数组保存到 GeoTIFF 中。问题是输出 GeoTIFF 看起来与输入文件(S1_data 数组)完全一样。
这是我的代码:
import numpy.ma as ma
# S1_data = data to be masked
# S1_mask = mask to apply
arr = ma.masked_array(S1_data,mask=S1_mask)
with rio.open('/home/DATA/masked.tif', 'w', **profile) as dst:
# Write to disk
dst.write(arr)
S1_data
数组如下所示:
array([[[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
...,
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan]]], dtype=float32)
S1_mask
:
array([[[1., 1., 1., ..., 1., 1., 1.],
[1., 1., 1., ..., 1., 1., 1.],
[1., 1., 1., ..., 1., 1., 1.],
...,
[1., 1., 1., ..., 1., 1., 1.],
[1., 1., 1., ..., 1., 1., 1.],
[1., 1., 1., ..., 1., 1., 1.]]], dtype=float32)
数组 arr
如下所示:
masked_array(
data=[[[--, --, --, ..., --, --, --],
[--, --, --, ..., --, --, --],
[--, --, --, ..., --, --, --],
...,
[--, --, --, ..., --, --, --],
[--, --, --, ..., --, --, --],
[--, --, --, ..., --, --, --]]],
mask=[[[ True, True, True, ..., True, True, True],
[ True, True, True, ..., True, True, True],
[ True, True, True, ..., True, True, True],
...,
[ True, True, True, ..., True, True, True],
[ True, True, True, ..., True, True, True],
[ True, True, True, ..., True, True, True]]],
fill_value=1e+20,
dtype=float32)