MATLAB读取tif格式图像

tif格式数据本质上就是带有地理信息的矩阵数据。

geotiffread函数

MATLAB帮助-geotiffread
在这里插入图片描述
语法Syntax:

[A,R] = geotiffread(filename) 
[X,cmap,R] = geotiffread(filename)
[A,refmat,bbox] = geotiffread(filename)
[X,cmap,refmat,bbox] = geotiffread(filename)

描述Description:

  • [A,R] = geotiffread(filename)从文件名指定的GeoTIFF文件中读取地理引用的灰度、RGB或多光谱图像或数据网格到A中,并创建空间引用对象R。
  • [X,cmap,R] = geotiffread(filename)将一个索引图像读入X,并将相关的颜色映射读入cmap,并创建一个空间引用对象R。
  • [A,refmat,bbox] = geotiffread(filename)将地理引用的灰度、RGB或多光谱图像或数据网格读入A,对应的引用矩阵读入refmat,边界框读入bbox。
  • [X,cmap,refmat,bbox] = geotiffread(filename)将索引图像读入X,将关联的颜色映射读入cmap,将引用矩阵读入refmat,将边界框读入bbox。引用矩阵必须由GeoTIFF文件明确定义,否则它和边界框返回为空。

1 案例

1.1 案例1:Boston GeoTIFF Image

[boston,R] = geotiffread('boston.tif');
figure
mapshow(boston,R);
axis image off

图像如下所示:
在这里插入图片描述
数据如下所示:
在这里插入图片描述

1.2 案例2:全球人工不透水面积GAIA

数据如下所示:

  • image是图像的二维矩阵
  • geo是地理信息

读取数据格式如下:
在这里插入图片描述
在这里插入图片描述
地理信息如下:

属性
geo.RasterInterpretation‘cells’
geo.XIntrinsicLimits[0.500000000000000,3.712500000000000e+03]
geo.YIntrinsicLimits[0.500000000000000,3.712500000000000e+03]

参考

1.公众号文章-MATLAB将nc转tif并可视化
MATLAB可视化tif:

clc;
clear;
close all
m_proj('Equidistant Cylindrical','long',[110 117],'lat',[31 37]);
inputRasterFile='F:/Rpython/lp36/data/CRU20230101/test/test202008.tif';
% 1.读取栅格文件
[DataRaster,Ref]=geotiffread(inputRasterFile);%读取全国范围的栅格数据
DataRaster=flipud(DataRaster);
[m,n]=size(DataRaster);
lonSpan=Ref.LongitudeLimits;%栅格经度范围 73 135
latSpan=Ref.LatitudeLimits;%栅格纬度范围 18 54
resolution=Ref.CellExtentInLatitude;%栅格分辨率0.2500
resolution2=Ref.CellExtentInLongitude;%栅格分辨率0.2500
xgv=[lonSpan(1)+resolution2/2:resolution2:lonSpan(2)-resolution2/2];
ygv=[latSpan(1)+resolution/2:resolution:latSpan(2)-resolution/2];
[lon lat]=meshgrid(xgv,ygv);
DataRaster(DataRaster==32767)=nan;
max(max(DataRaster))
min(min(DataRaster))
m_contourf(lon,lat,DataRaster,'linestyle','none');
c=colorbar('eastoutside','ticklength',0);
caxis([12,20]);
% 调用ncl色带
load('colorbar-mat/rainbow_r.mat');
colormap(rainbow_r);
% 调整colorbar
ax = gca;
axpos = ax.Position;
c.Position(3) = 0.5*c.Position(3);
ax.Position = axpos;
cbarrow;
%%添加句柄及中国地图
hold on
ma=shaperead('F:/Rpython/lp30/data/HeNan1.shp');
m_line([ma(:).X],[ma(:).Y],'color','k');%绘制范围内的地图
m_grid('ytick',[31:1:37],'xtick',[110:1:117],'tickdir','out','linest','none','fontname','Times','fontsize',12,'linewidth',1.5);
set(get(c,'ylabel'),'string','temperature()','fontsize',12);
xlabel('经度','color','k','fontsize',11,'FontWeight','bold');
ylabel('纬度','color','k','fontsize',11,'FontWeight','bold');
m_text(111,36,'河南省','fontsize',12,'fontweight','bold','fontname','宋体','Color','red');
title('Matlab利用河南省shp裁剪并可视化tif数据', 'Rotation', 0, 'FontSize', 12);%显示图标题

在这里插入图片描述

  • 4
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WW、forever

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值