从多个光栅获取notnull的2d掩码,并将新值写入mas

2024-09-27 07:25:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有四个光栅图像,它们都有相同的行和列,但nodata值分布在多个行和列中。 我想得到一个二维掩模,因为所有这些光栅图像的值都不是空的。然后将新值传递到遮罩位置以获得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()


Tags: and图像npupdateopenarraygagdal

热门问题