matlab读取tif影像,将 nodata值替换成-9999,并输出带有地理坐标系的代码
时间: 2024-09-09 13:12:23 浏览: 69
在MATLAB中,你可以使用`imread`函数来读取TIFF图像文件,然后使用`imfill`或`isfilled`配合`setnoshade`函数来替换nodata值,最后利用地理信息库(如`geotiffinfo`)添加地理坐标。以下是一个简单的步骤说明:
```matlab
% 1. 读取TIFF图像
img = imread('your_tif_file.tif'); % 替换 'your_tif_file.tif' 为你实际的TIFF文件路径
% 2. 检查并替换nodata值
if ~isfilled(img)
img(~isnan(img)) = -9999; % 如果有nodata,将其设置为-9999
end
% 3. 添加地理坐标信息
% 首先获取原始TIFF的地理坐标信息
gt = geotiffinfo('your_tif_file.tif');
originLonLat = gt.ImageGeolocation.XYOrigin; % 原点经纬度
pixelSize = gt.GeoTransform(1:2); % 单位长度对应的实际距离
% 创建GeoAxes,用于显示地理坐标
figure;
ax = usamap('world');
hold on
image(ax, img);
% 4. 绘制地理坐标轴和标签
% 根据获取的信息绘制地图范围和刻度线
drawmapboundary(ax);
xlabel(['经度 (' num2str(pixelSize(1), '%.3f') ' deg/pixel)'], 'Location', 'EastOutside')
ylabel(['纬度 (' num2str(pixelSize(2), '%.3f') ' deg/pixel)'], 'Location', 'NorthOutside')
% 5. 保存带有地理坐标的新TIFF
geotiffwrite('output_with_coordinates.tif', img, originLonLat, pixelSize); % 输出新的TIFF文件
```
记得将上述代码中的`'your_tif_file.tif'`替换为你要处理的实际TIFF文件路径。
阅读全文