Rasterio写入GeoTIFF时报TIFF目录缺失StripOffsets字段错误如何解决?
报错解决方案:TIFF directory is missing required "StripOffsets" field
核心报错根因
报错栈显示错误触发在_delete_dataset_if_exists阶段,即rasterio写入新文件前,尝试校验、删除同路径下已有旧文件时,发现旧文件损坏缺失必要字段,尚未进入新文件写入逻辑。
解决步骤
- 第一步:手动删除工作目录下已存在的损坏文件
vaesto1960.tif,即可跳过旧文件校验报错。 - 第二步:修正代码冗余逻辑,
with上下文管理器会自动处理资源的打开与关闭,不需要手动调用close()方法,提前手动释放资源可能导致读取的profile元数据不完整。 - 第三步:清理从NetCDF文件继承的冲突配置项,NetCDF驱动的profile包含大量GTiff不兼容的元数据、块设置参数,直接使用会导致写入逻辑异常,需先清理冲突参数再更新GTiff配置。
修正后参考代码
import rasterio # 读取NetCDF数据 with rasterio.open('data/total_pop_05dgr.nc') as pop: vaesto = pop.read() profile = pop.profile.copy() vaesto1960 = vaesto[4] # 清理NetCDF专属的冲突参数 exclude_keys = ['blockxsize', 'blockysize', 'tiled', 'compress', 'NC_GLOBAL'] for k in exclude_keys: if k in profile: del profile[k] # 更新GTiff写入配置 profile.update( nodata = 0, driver = 'GTiff', tiled = False, height = vaesto1960.shape[0], width = vaesto1960.shape[1], count = 1 ) # 写入GeoTIFF文件 with rasterio.open("vaesto1960.tif", 'w', **profile) as out: out.write(vaesto1960, 1)
内容的提问来源于stack exchange,提问作者mja
相关产品推荐
相关产品推荐

