Я бы хотел умножить 4-полосный растр из каталога с соответствующими 1-полосными облачными масками, чтобы в итоге получить 4-полосный растр без облаков.В своей попытке я начал с умножения первой полосы на маску облака.Проблема в том, что скрипты иногда возвращают один файл и показывают ошибки, которые я не понимаю:
ERROR 1: Deleting D:/SR\20170207_4band.tif failed:
Permission denied
import pandas as pd
import gdal
import os
import numpy as np
import glob
SR_images = 'D:/SR'
sr = glob.glob(os.path.join(SR_images, '*.tif'))
reclass = 'D:/reclass'
mask = glob.glob(os.path.join(reclass, '*.tif'))
savedest = r'D:\maskedsr'
for e, i in zip(sr, mask):
print(e)
print(i)
srraster = gdal.Open(os.path.join(SR_images, e))
maskraster = gdal.Open(os.path.join(reclass, i))
band1 = srraster.GetRasterBand(1).ReadAsArray()
band2 = srraster.GetRasterBand(2).ReadAsArray()
band3 = srraster.GetRasterBand(3).ReadAsArray()
band4 = srraster.GetRasterBand(4).ReadAsArray()
bandmask = maskraster.GetRasterBand(1).ReadAsArray()
geotransform = srraster.GetGeoTransform()
geoproj = srraster.GetProjection()
xsize = srraster.RasterXSize
ysize = srraster.RasterYSize
format1 = "GTiff"
driver = gdal.GetDriverByName(format1)
dst_datatype = gdal.GDT_UInt16
cal_band1 = band1 * bandmask
name = e
output_path = os.path.join(savedest, name)
dst_ds = driver.Create(output_path, xsize, ysize, 1, dst_datatype)
dst_ds.GetRasterBand(1).WriteArray(cal_band1)
dst_ds.SetGeoTransform(geotransform)
dst_ds.SetProjection(geoproj)
dst_ds.FlushCache()
dst_ds = None
Спасибо