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

出现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日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵