欢迎光临散文网 会员登陆 & 注册

1. 常规数据处理—nc转tif

2023-03-23 21:38 作者:z某人oo  | 我要投稿

我这里的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格式的降水数据,所以代码略有不同,但中心思想是一致的,代买简单,易懂。还可以查查其他文献来学习。

1. 常规数据处理—nc转tif的评论 (共 条)

分享到微博请遵守国家法律