У меня есть четыре растровых изображения, все они имеют одинаковую строку и столбец, но имеют значение nodata, распределенное по нескольким строкам и столбцам.Я хочу получить 2D маску, так как все эти растровые изображения не равны нулю.А затем передайте новые значения в замаскированное место, чтобы получить изображение TIF.У меня есть некоторые проблемы, чтобы получить 2D маску.
Я пытаюсь использовать 'и', чтобы получить маску, но она не удалась.
def readtif (tif1,tif2,tif3,tif4):
In1 = gdal.Open(tif1, gdal.GA_Update)
R1 = np.array(In.GetRasterBand(1).ReadAsArray())
In2 = gdal.Open(tif2, gdal.GA_Update)
R2 = np.array(In1.GetRasterBand(1).ReadAsArray())
In3 = gdal.Open(tif3, gdal.GA_Update)
R3 = np.array(In2.GetRasterBand(1).ReadAsArray())
In4 = gdal.Open(tif4, gdal.GA_Update)
R4 = np.array(In3.GetRasterBand(1).ReadAsArray())
ndv = In.GetRasterBand(1).GetNoDataValue()
mask = [R1 != ndv and R2 != ndv and R3 != ndv and R4 != ndv and R4 < 50]
return In4, R4, mask
(ReferRaster, ReferArray, valid) = readtif(tif1,tif2,tif3,tif4)
with open(path2+estY, 'r') as csvfile:
Update_M = []
for row in csv.reader(csvfile, delimiter=' ', quotechar='|'):
Update_M.append(float(row[0])) # careful here with [0]
ReferRaster[valid] = Update_M
driver = gdal.GetDriverByName('Gtiff')
dst_ds = driver.CreateCopy(ReferRaster, ReferArray, 1)
dst_ds.GetRasterBand(1).WriteArray(ReferRaster)
Существует проблема с получением маски с несколькими 'и' ValueError: истинное значениемассив с более чем одним элементом неоднозначен.Используйте a.any () или a.all ()