月值數(shù)據(jù)轉(zhuǎn)換
月值數(shù)據(jù)處理,除了日值氣象要素外,我們還經(jīng)常用到月值數(shù)據(jù),針對月值氣象要素如何批量變成AUSPLIN需要的格式呢。
月值數(shù)據(jù)如下:

image.png
上圖第一列為氣象站點,第二列為月份,第三列為年份,第四列為氣象要素
需要轉(zhuǎn)換成以下形式:

image.png
代碼如下所示:
a=xlsread('D:\日降水插值\中國氣象站點shp\china-station1.xlsx'); %已經(jīng)帶有全部站點的變成以m為單位的經(jīng)緯度和高程
filename='D:\temp-L1\new\數(shù)據(jù)\中國插值格式的'; %存放結(jié)果數(shù)據(jù)的位置
station=a(:,1);x=a(:,2);y=a(:,3);dem=a(:,4);%站點,經(jīng)度,緯度,高程;
e=dir(fullfile('*.xlsx'));% 要轉(zhuǎn)換的excel數(shù)據(jù),見圖1
for i=1:size(e,1)
a=xlsread(e(i).name);
st=a(:,1);year=a(:,3);month=a(:,2);termtemmax=a(:,4:end);
sta=unique(st);
datatotal=[];
for j=1:size(sta,1)
sta1=sta(j);
sy=find(st==sta1);
datasum=[];
for mon=1:12
symon=find(mon==month);
sy_inter=intersect(symon,sy);
if length(sy_inter)<1
value=NaN;
datasum=[datasum,value];
else
datasum=[datasum,termtemmax(sy_inter)];
end
end
datatotal=[datatotal;datasum];
end
datatotal=[sta,datatotal];
zz1=[];
for n=1:length(sta)
st1=sta(n);
data2=datatotal(n,:);
sy=find(station==st1);
if length(sy)==1
zz=[x(sy),y(sy),dem(sy),data2];
zz1=[zz1;zz];
end
end
%除掉存在NaN值的
datasum=[];
for kkk=1:size(zz1,1)
value=zz1(kkk,:);
if sum(abs(value)>=0)==16;
datasum=[datasum;value];
end
end
datasum=[datasum(:,4),datasum(:,1:3),datasum(:,5:end)];
datasum=[[NaN,NaN,NaN,NaN,[1:12]];datasum];
name1=e(i).name;
name1=strcat(filename,name1);
xlswrite(name1,datasum);
end
通過上述代碼即可以得到圖2,完成月份數(shù)據(jù)的轉(zhuǎn)換