登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 skylark 于 2017-7-20 15:24 编辑
最近的一个Program用到了NOAA的OISST的SST数据,发现OISST的SST在陆地上还有数据,于是查了下官网 :“[size=13.6937px]The OI analysis is done over all ocean areas and the Great Lakes. There is no analysis over land. The land values are filled by a Cressman interpolation to produce a complete grid for possible interpolation to other grids. The ocean and land areas are defined by a land sea mask (the lsmask.nc file). Land values for sst do not necessarily coincide with land values from ice analysis”,官网解释陆地上的数据是克雷斯曼插值得到的,可以用官网给的lsmask.nc文件来剔除陆地上的数据,楼主用matlab打开了lsmask.nc文件,是一个360 x 180矩阵由1和0组成,其中1代表着海洋,0代表着陆地(用grads的set clevs 0或者1后d mask得出结论)。与之前一位同学的结论一致,不过她给的是Fortran的代码(这里给出她的帖子作为参考:http://bbs.06climate.com/forum.p ... 41303&extra=&page=1),楼主已经2,3年没用过了Fortran了,所以就编了个 matlab版本的,方便以后用,毕竟NOAA的OISST的数据以后还是要经常用到的。
代码:
%提取数据
sst=ncread('e:/SouthAfrica/sst.mnmean.nc','sst');
nlat=ncread('e:/SouthAfrica/sst.mnmean.nc','lat');
nlon=ncread('e:/SouthAfrica/sst.mnmean.nc','lon');
nt=ncread('e:/SouthAfrica/sst.mnmean.nc','time');
mask=ncread('e:/SouthAfrica/lsmask.nc','mask');
prep_bimodal_use=importdata('e:/SouthAfrica/prep_bimodal_use_420.mat');
prep_unimodal_use=importdata('e:/SouthAfrica/prep_unimodal_use_420.mat');
%剔除陆地数据
[I,J]=find(mask==0);
for i=1:length(I)
sst(I(i),J(i),:)=nan;
end;
%处理后的sst就为剔除掉陆地上数据的sst数据
代码已进行验证,没有问题。 用到的lsmask.nc可以在官网下载: https://www.esrl.noaa.gov/psd/da ... .noaa.oisst.v2.html
|