Matlab對NC文件p處理輸出tif

本文基于matlab對普通nc數(shù)據(jù)進行批量處理成為tif的代碼
首先:對路徑進行設(shè)置,并查看nc數(shù)據(jù)的屬性信息,如果是一類的數(shù)據(jù),數(shù)據(jù)內(nèi)部存儲變量的字段基本相同;




文章使用的是gldas數(shù)據(jù),數(shù)據(jù)變量是二維數(shù)據(jù) 比較方便
如果涉及到多維nc數(shù)據(jù) 如降水等 可能是 3各維度 經(jīng)度緯度和時間 就需要按照時間進行輸出
比如:2000-2020的降水數(shù)據(jù) 一年的nc中包括12個月數(shù)據(jù)
就需要進行提取
可以使用? pre=pers(:,:,i);這里主要是括號內(nèi)部 其他pre都是自定義的變量名;(:,:,:)這三個位置分別對應 經(jīng)緯度 與時間?

循環(huán)輸出部分 包括三個步驟第一步讀取經(jīng)緯度信息,讀取 要處理的變量的信息(ps,這里也可以做一些平均操作 比如 平均值 什么的 也可以寫循環(huán)處理 非常簡單);
datas=0
for i=1:12
pre=ncread
data=pre
datas=datas+pre
end
datas就是 累加值
名稱設(shè)置 這是依據(jù)不同的數(shù)據(jù)名稱的命名
翻轉(zhuǎn)圖像是為了 讓tif圖像符合操作 不然輸出的tif圖像就是顛倒的?
使用過程中可以用 imshow查看一下 也可以先處理一個文件 定制翻轉(zhuǎn)的方法?
最后就是使用函數(shù) tif制圖?
georaster是給數(shù)據(jù) 賦予地理信息?
w就是寫成tif文件輸出
參考代碼?

%% 此處為批量處理nc數(shù)據(jù)并轉(zhuǎn)換為tif文件
clc
clear
%% 路徑設(shè)置 需要修改
filepath='E:\DATA\gldas2.1\2020\';
%%獲取nc數(shù)據(jù)的屬性
ncdisp('GLDAS_NOAH025_M.A202001.021.nc4')
info=ncinfo('GLDAS_NOAH025_M.A202001.021.nc4');
%% 數(shù)據(jù)處理 逐個輸出
filelist = dir([filepath,'*.nc4']);
n=length(filelist)
for k=1:n
? ?ncFile=filelist(k).name
? ?lon=double(ncread(ncFile,'lon'));
? ?lat=double(ncread(ncFile,'lat'));
? ?pic = ncread(ncFile,'SoilMoi0_10cm_inst'); %% nc文件中的變量命長
? ?%% 設(shè)置名字
? ?outFileName = filelist(k).name(22:29); %輸出文件名,(1:33)即為第1-33個字符
? ?%% 翻轉(zhuǎn)圖像
? ?pic= flipud(pic);
? ?pic=rot90(pic);
? ?pic=rot90(pic);
? ?pic=rot90(pic);
? ?imshow(pic)
? ?R=georasterref('RasterSize',size(pic),'Latlim',[double(min(lat)) double(max(lat))],'Lonlim',[double(min(lon)) double(max(lon))]);
? ?geotiffwrite([outpath1, '\',outFileName,'.tif'],pic,R)
end
disp("批量處理完成")