matlab利用geotiffread读取tif文件报错:‘错误使用 tifflib, 无法打开 TIFF 文件’

在使用matlab读取TIF格式文件时:

[a,R]=geotiffread('C:\2009.tif')

报错:

错误使用 tifflib,无法打开 TIFF 文件 'C:\2009.tif'

原因:

geotiff函数不能读取的情形:

手动修改后缀,包括修改后缀为.tif,envi中band math等保存时修改为.tif

geotiff函数可以读取以下途径获得的TIF类型文件:

1.envi中另存为tif的文件,即File-Save as-Save as (ENVI,TIFF......),选择TIFF保存
2.envi中由图层转化成的tif文件,即export layer to tiff
3.ARCMAP中转化得到的TIF,即数据-导出数据,导出TIF格式,以及栅格计算器、掩膜提取等操作时保存的TIF文件

三种方法读取的结果不同
我的是单波段影像278,243
方法一、三:278,243,1在这里插入图片描述
方法二:278,243,3在这里插入图片描述在这里插入图片描述
所以读取完矩阵如果需要reshape操作时需要注意

### 使用 `geotiffread` 批量读取多个 TIFF 文件MATLAB 中,可以通过组合使用 `dir` 和循环结构来实现批量处理功能。以下是具体方法: #### 获取文件列表 首先,使用 `dir` 函数获取指定路径下的所有 `.tif` 或 `.tiff` 文件。这一步骤会返回一个包含文件信息的结构体数组。 ```matlab file_path = 'C:\path\to\tif_files'; % 替换为实际路径 img_path_list = dir(fullfile(file_path, '*.tif')); % 获取该文件夹中所有TIF格式的图像 img_num = length(img_path_list); % 获取图像总数量 ``` 上述代码中的 `dir` 函数用于查找特定目录下的所有符合条件的文件[^2]。 #### 循环读取文件 接着,在循环中逐一调用 `geotiffread` 函数读取每个 TIFF 文件的内容及其地理信息。 ```matlab for i = 1:img_num full_file_name = fullfile(file_path, img_path_list(i).name); [image_data{i}, geo_info{i}] = geotiffread(full_file_name); % 返回图像数据和地理信息 end ``` 此处的关键点在于: - `fullfile` 构造完整的文件路径。 - `geotiffread` 同时返回两个变量:一个是图像的二维矩阵(或三维矩阵),另一个是与之关联的地理信息[^3]。 #### 数据存储与后续操作 为了便于管理大量数据,可以将每次读取的结果存入元胞数组或其他容器中。例如,上面代码中的 `image_data` 是一个元胞数组,其中每项对应一幅图像的数据;而 `geo_info` 则保存对应的地理信息。 如果需要进一步分析这些数据,则可以在循环内部加入额外逻辑,或者待全部加载完成后统一执行计算。 --- ### 示例完整脚本 下面是一个更具体的例子,展示如何完成整个流程: ```matlab % 设置输入路径 file_path = 'C:\path\to\tif_files'; % 获取所有 .tif 文件 img_path_list = dir(fullfile(file_path, '*.tif')); img_num = length(img_path_list); % 初始化存储空间 image_data = cell(1, img_num); geo_info = cell(1, img_num); % 遍历并读取每一个文件 for i = 1:img_num full_file_name = fullfile(file_path, img_path_list(i).name); try [image_data{i}, geo_info{i}] = geotiffread(full_file_name); catch ME fprintf('Error reading file "%s": %s\n', full_file_name, ME.message); end end % 显示部分结果作为验证 disp('First image size:'); disp(size(image_data{1})); disp('Geographic information of first image:'); disp(geo_info{1}); ``` 此脚本不仅实现了基本的功能需求,还加入了异常捕获机制以应对可能存在的错误情况,如损坏的文件等[^5]。 --- ### 注意事项 当处理 Landsat7 的数据时需特别注意其行列号可能存在不一致的情况,这种差异可能导致导出过程中出现匹配问题。相比之下,Landsat8 的数据更加规整,通常不会引发此类冲突。 ---
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值