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);%显示图标题