1. 常规数据处理—nc转tif
我这里的nc格式的数据转tif,与CMIP模式的nc数据是不同的,这里的nc数据是等间距投影,与CMIP6的模式数据相比要更简单。
这里我使用的是matlab来处理。
咱们也不是专门搞编程的,怎么简单怎么处理,网上的教程很多,复杂的语言,代码也很多。我们的目的就是为了得到这个数据,会处理,会使用,那就OK了。
直接上代码,粘贴到matlab,改改路径,就可以直接运行,没有编程基础的人也可以轻松上手,代码不难。

datadir = 'G:\1901_2021\1960-2020month_pcp\2_nc\'; %指定批量数据所在的文件夹
filelist = dir([datadir,'*.nc']); %列出所有满足指定类型的文件
for year=1960:1984
ncFilePath=['G:\1901_2021\1960-2020month_pcp\2_nc\CN_Prec_MonthlyMean_1km_',num2str(year),'.nc'];
lon=ncread(ncFilePath,'longitude');
lat=ncread(ncFilePath,'latitude');
time=ncread(ncFilePath,'time');
tmp=ncread(ncFilePath,'pre');
k=0;
datasum = zeros(4251,7397);
datasum=double(datasum);
for j=1:12
k=k+1;
tmp1=tmp(:,:,k);
data=flipud(tmp1);
data(data==-32768)=NaN;
R = georasterref('RasterSize', size(data),'Latlim', [double(min(lat)) double(max(lat))], 'Lonlim', [double(min(lon)) double(max(lon))]);%地理栅格数据参考对象(类)
if j==1||3||5||7||8||10||12
data=data*31;
elseif j==4||6||9||11
data=data*30;
else
data=data*28;
end
filename1=['G:\1901_2021\1960-2020month_pcp\3_tif\pcp_',num2str(year),'_',num2str(j),'.tif'];
geotiffwrite(filename1,data,R);
datasum = data + datasum;
end
filename1=['G:\1901_2021\1960-2020month_pcp\3_tif\pcpyearsum_',num2str(year),'.tif'];
geotiffwrite(filename1,datasum,R);
datasum = datasum./12.0;
filename1=['G:\1901_2021\1960-2020month_pcp\3_tif\pcpyearavg_',num2str(year),'.tif'];
geotiffwrite(filename1,datasum,R);
end

上述代码处理的数据集为如下:1960-2020年中国1公里分辨率月降水数据集
瞿莉莎, 朱求安, 朱超凡, 等. 1960-2020年中国1公里分辨率月降水数据集[DS/OL]. Science Data Bank,2022[2022-03-31].http://www.scidb.cn/cstr/31253.11.sciencedb.01607. CSTR:31253.11.sciencedb.01607.

代码可以参考的博客链接为:
https://zhuanlan.zhihu.com/p/396339178
再次基础上做了修改,我们处理的是不同数据源的nc格式的降水数据,所以代码略有不同,但中心思想是一致的,代买简单,易懂。还可以查查其他文献来学习。

