MATLAB:读取nc文件并将nc文件转为tif文件输出
·
NC(NetCDF network Common Data Form,译为“网络通用数据格式”) 文件是将多个时段的数据存储在一个文件当中。
内容格式如下:
•从数学上来说,netcdf存储的数据就是一个多自变量的单值函数。用公式来说就是f(x,y,z,…)=value;
•函数的自变量x,y,z等在netcdf中叫做维(dimension) 或坐标轴(axix),
•函数值value在netcdf中叫做变量(Variables).
一个Netcdf文件的结构包括以下对象:
•变量(Variables) :变量对应着真实的物理数据。
•维(dimension):一个维对应着函数中的某个自变量,或者说函数图象中的一个坐标轴,在线性代数中就是一个N维向量的一个分量。
•属性(Attribute) :属性对变量值和维的具体物理含义的注释或者说解释。
在处理的时候,可以使用ArcGIS读取并进行处理。
使用ArcGIS工具里的多维工具->创建NetCDF栅格图层来读取nc文件,使用ArcGIS读取好后,可以右键图层导出数据,导出时可以在属性里面修改所要导出数据的时间。如下图:
用ArcGIS处理的时候会比较麻烦,所以可以用matlab批量读取并保存为tif格式文件。
在读取前,首先在matlab控制窗口输入ncdisp(filepath),filepath为文件路径,如ncdisp(‘E:\data\降水气温数据\2000.nc’),读取后将相应的变量名称在下面代码中替换即可。
具体实现代码如下:
clc
clear all
%% 批读取NC文件的准备工作
datadir = 'E:\data\降水气温数据\'; %指定批量数据所在的文件夹
filelist = dir([datadir,'*.nc']); %列出所有满足指定类型的文件
% a = filelist(1).name %查看要读取的文件的编号
% b = filelist(2).name
k=length(filelist);
for i = 1:56 %依次读取并处理,按照文件夹内文件的顺序读取
%% 批量读取NC文件
ncFilePath = ['E:\data\降水气温数据\',filelist(i).name]; %设定NC路径
num = filelist(i).name(24:27); %读取数据编号,以便于保存时以此编号储存tif
%% 读取变量值
%根据ncdisp函数读取到的nc文件变量相应替换
lon=ncread(ncFilePath,'Longitude'); %读取经度信息(范围、精度)
lat=ncread(ncFilePath,'Latitude'); %读取维度信息
time=ncread(ncFilePath,'time'); %读取时间序列
pre=ncread(ncFilePath,'Temperature'); %获取温度数据
sum_pre=sum(pre,3)/12.0; %求年平均温度
%% 展示数据内部结构等信息
%figure(i);
pcolor(lat,lon,sum_pre);
shading flat; %移除网格线,否则图上一片黑什么都没有
[x,y]=meshgrid(lon,lat); %根据经纬度信息产生格网,3600列(经度),1800列(纬度)
phandle=pcolor(x,y,sum_pre'); %显示一个矩阵,其中x,y,sum_pre的行列数必须一致
shading flat;
colorbar
%% 存为tif格式
data=flipud(rot90(sum_pre,1)); %镜像反转,不反转的话最后的图像的南北朝向是错的
%逆时针旋转90°
R = georasterref('RasterSize', size(data),'Latlim', [double(min(lat)) double(max(lat))], 'Lonlim', [double(min(lon)) double(max(lon))]);
geotiffwrite(['E:\data\降水气温数据\',num,'.tif'],data,R);
disp([num,'done'])
end
disp('Done!')
根据以上代码就可以批量对NC文件读取并处理,最后输出为TIFF格式文件了。
推荐内容
更多推荐
相关推荐
查看更多
DeepSeek-V3-0324

DeepSeek最新推出DeepSeek-V3-0324版本,参数量从6710亿增加到6850亿,在数学推理、代码生成能力以及长上下文理解能力方面直线飙升。
javascript

JavaScript 编程指南。
Python

All Algorithms implemented in Python
热门开源项目
活动日历
查看更多
直播时间 2025-03-13 18:32:35

全栈自研企业级AI平台:Java核心技术×私有化部署实战
直播时间 2025-03-11 18:35:18

从0到1:Go IoT 开发平台的架构演进与生态蓝图
直播时间 2025-03-05 14:35:37

国产工作流引擎 终结「996」开发困局!
直播时间 2025-02-25 14:38:13

免费开源宝藏 ShopXO,电商系统搭建秘籍大公开!
直播时间 2025-02-18 14:31:04

从数据孤岛到数据智能 - 企业级数据管理利器深度解析
所有评论(0)