基于Matlab的中國地面氣候資料日值數(shù)據(jù)集(V3.0)快速處理

本次主要是對中國氣象數(shù)據(jù)網(wǎng)的V3.0地面氣象觀測數(shù)據(jù)集進行快速處理辞州,將原先分散的txt各個要素整合到一個列表中画畅,一行代表一個站點贸毕。直接從全國的數(shù)據(jù)集中來提取出來自己想要的站點數(shù)據(jù)集,該過程也包含了一年缺測數(shù)據(jù)低于30天的站點數(shù)據(jù)線性內(nèi)插夜赵,同時參考數(shù)據(jù)說明對異常值進行了處理明棍。本次以新疆省內(nèi)的氣象站點為例子,從全國V3.0數(shù)據(jù)集中提取新疆站點寇僧。

% author email: yinlichang3064@163.com
station=xlsread('D:\xj\新疆.xlsx');% 一列新疆的站點數(shù)據(jù)
%
for year=2000:2017
    datasum=[];
   for mon=1:12
       if mon<10
            filename_pre=['F:\Day1951-2012yuanshi\DAY_PRE195101201612\SURF_CLI_CHN_MUL_DAY-PRE-13011-',int2str(year),'0',int2str(mon),'.TXT'];
            filename_temp=['F:\Day1951-2012yuanshi\DAY_TEM195101201612\SURF_CLI_CHN_MUL_DAY-TEM-12001-',int2str(year),'0',int2str(mon),'.TXT'];
            filename_rhu=['F:\Day1951-2012yuanshi\DAY_RHU195101201612\SURF_CLI_CHN_MUL_DAY-RHU-13003-',int2str(year),'0',int2str(mon),'.TXT'];
            filename_SSD=['F:\Day1951-2012yuanshi\DAY_SSD195101201612\SURF_CLI_CHN_MUL_DAY-SSD-14032-',int2str(year),'0',int2str(mon),'.TXT'];
            filename_WIN=['F:\Day1951-2012yuanshi\DAY_WIN195101201612\SURF_CLI_CHN_MUL_DAY-WIN-11002-',int2str(year),'0',int2str(mon),'.TXT'];
            filename_prs=['F:\Day1951-2012yuanshi\DAY_PRS195101201612\SURF_CLI_CHN_MUL_DAY-PRS-10004-',int2str(year),'0',int2str(mon),'.TXT'];
       else
            filename_pre=['F:\Day1951-2012yuanshi\DAY_PRE195101201612\SURF_CLI_CHN_MUL_DAY-PRE-13011-',int2str(year),int2str(mon),'.TXT'];
            filename_temp=['F:\Day1951-2012yuanshi\DAY_TEM195101201612\SURF_CLI_CHN_MUL_DAY-TEM-12001-',int2str(year),int2str(mon),'.TXT'];
            filename_rhu=['F:\Day1951-2012yuanshi\DAY_RHU195101201612\SURF_CLI_CHN_MUL_DAY-RHU-13003-',int2str(year),int2str(mon),'.TXT'];
            filename_SSD=['F:\Day1951-2012yuanshi\DAY_SSD195101201612\SURF_CLI_CHN_MUL_DAY-SSD-14032-',int2str(year),int2str(mon),'.TXT'];
            filename_WIN=['F:\Day1951-2012yuanshi\DAY_WIN195101201612\SURF_CLI_CHN_MUL_DAY-WIN-11002-',int2str(year),int2str(mon),'.TXT'];
            filename_prs=['F:\Day1951-2012yuanshi\DAY_PRS195101201612\SURF_CLI_CHN_MUL_DAY-PRS-10004-',int2str(year),int2str(mon),'.TXT'];
       end
       
       data_prec=importdata(filename_pre);
       data_temp=importdata(filename_temp);
       data_rhu=importdata(filename_rhu);
       data_ssd=importdata(filename_SSD);
       data_win=importdata(filename_WIN);
       data_prs=importdata(filename_prs);
       totalsum=[];
       for i=1:size(station,1)
           sta=station(i);
           syz_prec=find(data_prec(:,1)==sta);
           syz_temp=find(data_temp(:,1)==sta);
           syz_rhu=find(data_rhu(:,1)==sta);
           syz_ssd=find(data_ssd(:,1)==sta);
           syz_win=find(data_win(:,1)==sta);
           syz_prs=find(data_prs(:,1)==sta);
           if length(syz_prec)==length(syz_temp) && length(syz_temp)==length(syz_rhu) && length(syz_rhu)==length(syz_ssd) && length(syz_ssd)==length(syz_win) && length(syz_prs)==length(syz_win)
               dates1=data_prec(syz_prec,1:7);
               precz=data_prec(syz_prec,8:10);
               tempz=data_temp(syz_temp,8:10);
               rhuz=data_rhu(syz_rhu,8:9);
               ssdz=data_ssd(syz_ssd,8);
               winz=data_win(syz_win,8:9);
               prsz=data_win(syz_prs,8);
               total1=[dates1,precz,tempz,rhuz,ssdz,winz,prsz]; %1-7 8-10 11-13 14-15 16 17-18 ,19
               totalsum=[totalsum;total1];
           end
       end
       datasum=[datasum;totalsum];
   end
   %首先對異常數(shù)據(jù)進行處理
    %臺站海拔高度 +100000 當(dāng)臺站海拔高度為估測值時摊腋,在估測數(shù)據(jù)基礎(chǔ)上加100000
    dem=datasum(:,4);
    dem(dem>100000)=dem(dem>100000)-100000;
    datasum(:,4)=dem;
    %各要素項   32766   數(shù)據(jù)缺測或無觀測任務(wù)
    
    datasum(datasum==32766)=NaN; %待插補數(shù)據(jù)
    
    % 風(fēng)速    +1000   當(dāng)風(fēng)速超過儀器測量上限時,在上限數(shù)據(jù)基礎(chǔ)上加1000
    winz=datasum(:,17:18);
    winz(winz>1000)=winz(winz>1000)-1000; 
    datasum(:,17:18)=winz;
    % 降水量   32700   表示降水"微量"
    %           32XXX   XXX為純霧露霜
    %           31XXX   XXX為雨和雪的總量
    %           30XXX   XXX為雪量(僅包括雨夾雪嘁傀,雪暴)
    prec=datasum(:,8:10);
    prec(prec==32700)=0.1;%相當(dāng)于0.01mm了兴蒸,原有的數(shù)據(jù)單位是0.1mm
    prec(prec>32000 & prec<32999)=prec(prec>32000 & prec<32999)-32000;
    prec(prec>31000 & prec<31999)=prec(prec>31000 & prec<31999)-31000;
    prec(prec>30000 & prec<30999)=prec(prec>30000 & prec<30999)-30000;
    datasum(:,8:10)=prec;
    % -10000    實際溫度(零下)超儀器下限刻度,在下限數(shù)據(jù)基礎(chǔ)上減10000
    temp=datasum(:,11:13);
    temp(temp<-10000)=temp(temp<-10000)+10000;
    datasum(:,11:13)=temp;
    
    % 對缺測數(shù)據(jù)進行填補细办,采用線性內(nèi)插法
    total=[];
    for i=1:size(station,1)
        sta=station(i);
        sy=find(datasum(:,1)==sta);
        if length(sy)>=365
            value=datasum(sy,:); %得到該站點全部的數(shù)據(jù)
            cd=size(value,1);
            % 依次進行插值處理
            for k=8:19 %要素從第15列開始
                   element=value(:,k);
                   syz=find(~isnan(element)); %找到非NaN值
                if length(syz)>340 & length(syz)<cd %高于340個有效值
                    if isnan(element(1))
                        element(1)=element(syz(1)) % 如果第一個為NaN值橙凳,則用鄰近值進行填補
                    end
                    if isnan(element(cd))
                        element(cd)=element(syz(end)) % 如果最后個為NaN值蕾殴,則用鄰近值進行填補
                    end
                    valuez=interp1(syz,element(syz),[1:cd])';%得到有效點
                else
                    valuez=element;
                end
                value(:,k)=valuez;
            end
        end
        total=[total;value];
    end
    filename=['F:\Day1951-2012yuanshi\xj\',int2str(year),'年新疆氣象要素數(shù)據(jù)集.xlsx'];
    xlswrite(filename,total)
end

結(jié)果如下


QQ圖片20191228141625.png

注意:經(jīng)度,緯度和高程的順序在使用時請再次確認下岛啸,作者表示很懶钓觉,不想在去確認了

更多需求,請查看個人介紹

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坚踩,一起剝皮案震驚了整個濱河市荡灾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瞬铸,老刑警劉巖批幌,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嗓节,居然都是意外死亡荧缘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門拦宣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來截粗,“玉大人,你說我怎么就攤上這事恢着⊥┯洌” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵掰派,是天一觀的道長从诲。 經(jīng)常有香客問我,道長靡羡,這世上最難降的妖魔是什么系洛? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮略步,結(jié)果婚禮上描扯,老公的妹妹穿的比我還像新娘。我一直安慰自己趟薄,他們只是感情好绽诚,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著杭煎,像睡著了一般恩够。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上羡铲,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天蜂桶,我揣著相機與錄音,去河邊找鬼也切。 笑死扑媚,一個胖子當(dāng)著我的面吹牛腰湾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疆股,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼费坊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了押桃?” 一聲冷哼從身側(cè)響起葵萎,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤导犹,失蹤者是張志新(化名)和其女友劉穎唱凯,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谎痢,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡磕昼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了节猿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片票从。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖滨嘱,靈堂內(nèi)的尸體忽然破棺而出峰鄙,到底是詐尸還是另有隱情,我是刑警寧澤太雨,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布吟榴,位于F島的核電站,受9級特大地震影響囊扳,放射性物質(zhì)發(fā)生泄漏吩翻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一锥咸、第九天 我趴在偏房一處隱蔽的房頂上張望狭瞎。 院中可真熱鬧,春花似錦搏予、人聲如沸熊锭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碗殷。三九已至,卻和暖如春校镐,著一層夾襖步出監(jiān)牢的瞬間亿扁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工鸟廓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留从祝,地道東北人襟己。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像牍陌,于是被迫代替她去往敵國和親擎浴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351