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

出现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条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

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

      悬赏问题

      • ¥15 MATLAB 调用comsol如何加速设计?
      • ¥15 echarts地图添加点击事件
      • ¥15 openpyxl库无法全部写入文本到单元格
      • ¥15 不知道带什么标题好随便搞一个吧
      • ¥15 ffmpeg 图片合成视频
      • ¥15 软科大学爬取获取所有数据
      • ¥15 如何修改损失函数以及代码讲解
      • ¥15 有偿咨询!!程序的小数点怎么取到后四位啊!
      • ¥15 IRS智能反射面相关文章代码
      • ¥15 landsat5的两幅影像镶嵌前波段是123457,为什么镶嵌后波段变成了123456?