学习python努力gogogo 2022-05-26 21:52 采纳率: 100%
浏览 1653
已结题

出现AttributeError: 'NoneType' object has no attribute 'Create'的错误,如何解决?

问题遇到的现象和发生背景

在利用python进行图像处理的时候,定义了函数,在运用时出现了错误

问题相关代码,请勿粘贴截图
    def write(self, image, file_name, bands, format='TIFF'):

        ds = gdal.Open(self.band_file_name[0])
        projection = ds.GetProjection()   ###栅格数据的投影
        geotransform = ds.GetGeoTransform()   ###获取图像中任意一点地理坐标
        x_size = ds.RasterXSize   ##宽度
        y_size = ds.RasterYSize   ##
        del ds
        band_count = bands
        dtype = gdal.GDT_Float32   ##返回32位浮点数值

        driver = gdal.GetDriverByName(format)  ##读取某一类型的数据,需要先载入数据驱动,初始化一个对象
        new_ds = driver.Create(file_name, x_size, y_size, band_count, dtype)  ##创建空文件,并确定开辟多大内存;每个像素都有一个对应的值,这个值得类型用数据类型指定。这里的数据类型是gdal数据类型
        new_ds.SetGeoTransform(geotransform)  #写入仿射变换参数,(左上角x坐标,东西方向上图像的分辨率,地图的旋转角度,左上角y坐标,地图的旋转角度,南北方向上地图的分辨率)
        new_ds.SetProjection(projection) #写入投影信息,

        for band in range(self.bands):
            new_ds.GetRasterBand(band + 1).WriteArray(image[:, :, band])
            new_ds.FlushCache()  #用FlushCache()把缓存数据写入磁盘

        del new_ds


reader.write(cali_image, file_path, reader.bands)

运行结果及报错内容
Traceback (most recent call last):
  File "D:/PyCharm/pythonProject1/ENVI_practice/yanshi.py", line 100, in <module>
    reader.write(cali_image, file_path, reader.bands, format='dat')
  File "D:/PyCharm/pythonProject1/ENVI_practice/yanshi.py", line 53, in write
    new_ds = driver.Create(file_name, x_size, y_size, band_count, dtype)  
AttributeError: 'NoneType' object has no attribute 'Create'

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • __程序喵__ 2022-05-28 11:00
    关注

    driver = gdal.GetDriverByName(format)
    这一行里的函数返回值可能为None,于是下面就无法对None(即driver)调用Create方法了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月5日
  • 已采纳回答 5月28日
  • 创建了问题 5月26日