Получить 2d маску not-null от нескольких растров и записать новое значение в маску - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть четыре растровых изображения, все они имеют одинаковую строку и столбец, но имеют значение 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 ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...