Matlab 从怀俄明大学上爬取探空数据

 

function sounding
%设置爬取时间  49行可以选取早八晚八,默认是都下载
start_year       =2019     ;
start_month      =06        ;
start_day        =04        ;
end_year         =2019      ;
end_month        =07        ;
end_day          =24        ;
%读取爬取站点编号
stan=xlsread('');    %%%站号信息在后面保存excel
%设置保存文件夹
total_folder     = '';
%设置重新载入时间(s)
timeout          = 30       ;


for i_stan=1:1:size(stan,1)  %多站点循环,如果只下载单一站点,修改下一行
    %station_nu =stan(i_stan,1);
    station_nu =59280; %清远站
    %station_nu =54511          %读取单一站点,北京站
    for year=start_year:1:end_year
        start_month1=start_month;
        end_month1  = end_month;
        
        if year > start_year %判断一年中的起止月份
            start_month1 =  1;
        end
        if year < end_year
            end_month1  = 12;
        end
        
        if ISLEAPYRAR(year) %判断是否为闰年
            months_day=[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
        else
            months_day=[31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
        end
        
        for month=start_month1:1:end_month1
            
            start_day1=start_day;
            end_day1=end_day    ;
            if month > start_month1 %判断一月中的起止日期
                start_day1 =  1;
            end
            if month < end_month1
                end_day1  = months_day(month);
            end
            
            for day=start_day1:1:end_day1
                for time=[0,12]    %探空时间
                    tic;
                    [sourcefile, status] =urlread(sprintf('http://weather.uwyo.edu/cgi-bin/sounding?region=seasia&TYPE=TEXT%%3ALIST&YEAR=%04d&MONTH=%02d&FROM=%02d%02d&TO=%02d%02d&STNM=%05d&ICE=1',year,month,day,time,day,time,station_nu),'Timeout',timeout);
                    
                    
                    if ~status
                        itime=1;
                        while (~status)&&(itime<=3)
                            disp(['!!!!  载入失败  stn=',num2str(station_nu,'%05d'),' ,Data ',num2str(year,'%04d'),num2str(month,'%02d'),num2str(day,'%02d'),' ,Time ',num2str(time,'%02d'),'尝试重新载入 ',num2str(itime,'%1d次'),' !!']);
                            [sourcefile, status] =urlread(sprintf('http://weather.uwyo.edu/cgi-bin/sounding?region=seasia&TYPE=TEXT%%3ALIST&YEAR=%04d&MONTH=%02d&FROM=%02d%02d&TO=%02d%02d&STNM=%05d&ICE=1',year,month,day,time,day,time,station_nu),'Timeout',timeout);
                            itime=itime+1;
                        end
                        if itime>3
                            disp(['!!!!  载入失败  stn=',num2str(station_nu,'%05d'),' ,Data ',num2str(year,'%04d'),num2str(month,'%02d'),num2str(day,'%02d'),' ,Time ',num2str(time,'%02d'),' !!'])
                        end
                    end
                    
                    %去除sourcefile不相关字符,这个地方可根据自己需要调整。如果只需要探空数据截止 则不需要更改
                    sourcefile = sourcefile(strfind(sourcefile,'   PRES   HGHT'):strfind(sourcefile,'<P>Station information')-11);
                    t=toc;
                    if (strfind(sourcefile,'   PRES   HGHT')>0)  %判断是否有缺测
                        %保存文件到对应文件夹
                        folder=[total_folder, station_nu,'00-12Time','\'];
                        if exist(folder,'dir')==0 %判断站点文件是否已经存在
                            mkdir(folder);
                        end
                        filename=[folder,num2str(year,'%04d'),num2str(month,'%02d'),num2str(day,'%02d'),num2str(time,'%02d'),'.txt'];
                        fid=fopen(filename,'w');
                        fprintf(fid,'%s',sourcefile);
                        fclose(fid);
                        disp(['**  Finish  stn=',num2str(station_nu,'%05d'),' ,Data ',num2str(year,'%04d'),num2str(month,'%02d'),num2str(day,'%02d'),' ,Time ',num2str(time,'%02d'),' ,t= ',num2str(t,' %03f'),' **',])
                    else
                        disp(['**  cannot get  stn_',num2str(station_nu,'%05d'),' ,Data ',num2str(year,'%04d'),num2str(month,'%02d'),num2str(day,'%02d'),' ,Time ',num2str(time,'%02d'),' ,t= ',num2str(t,' %03f'),' **',])
                    end
                    
                    clear sourcefile
                end
            end
            
        end
    end
end

function [result]=ISLEAPYRAR(year)
        %判断是否为闰年
        if((rem(year,100)~=0)&&(rem(year,4)==0))
            result=0;
        elseif(rem(year,4)==0)
            result=0;
        else result=1;
        end
    end
end

   用MATLAB在俄怀明大学上爬取探空资料,设置爬取时间区间,以及站号进行下载。如果只需要Station上面的数据,则不需要进行修改。

需要下面的数据,对sourcefile进行修改。

站号信息

29862Hakasskaja, NO53.7691.31
30635Ust-Barguzin, IR53.41109.01
30758Chita, IR (UIAA)52.08113.48
30935Krasnyj Chikoj, IR50.36108.75
30965Borzja, IR50.4116.51
31510Blagovescensk, HA50.53127.5
31538Sutur50.07132.13
31736Habarovsk, HA48.53135.23
31873Dalnerechensk, HA45.86133.73
31977Vladivostok (Sad Gorod), HA43.26132.05
32150Juzhno-Sahalinsk, HA (UHSS)46.95142.71
35394Karaganda, AL49.873.15
35671Zhezkazgan, AL47.867.71
36003Pavlodar, AL52.376.93
36096Kyzyl, NO51.7194.5
36872Almaty, AL43.3677
38064Kyzylorda44.7765.52
38341Zhambyl, AL42.8571.38
40745Mashhad (OIMM)36.2659.63
40856Zahedan (OIZH)29.4660.88
40948Kabul Airport (OAKB)34.5569.21
41859Rangpur
41891Sylhet (VGSY)24.991.88
41907Ishurdi (VGIS)
41923Dhaka (VGTJ)23.7690.38
41936Jessore (VGJR)
41977Chittagong (Ambagan)22.3591.81
42027Srinagar34.0874.83
42101Patiala30.3376.46
42182New Delhi/Safdarjung (VIDD)28.5877.2
42299Gangtok27.3388.61
42314Dibrugarh/Mohanbari (VEMN)27.4895.01
42339Jodhpur (VIJO)26.373.01
42361Gwalior (VIGR)26.2378.25
42369Lucknow/Amausi (VILK)26.7580.88
42379Gorakhpur (VEGK)26.7583.36
42410Gauhati (VEGT)26.191.58
42492Patna (VEPT)25.685.1
42647Ahmadabad (VAAH)23.0672.63
42667Bhopal/Bairagarh (VABP)23.2877.35
42701M.O. Ranchi (VERC)23.3185.31
42724Agartala (VEAT)23.8891.25
42809Calcutta/Dum Dum (VECC)22.6588.45
42867Nagpur Sonegaon (VANP)21.179.05
42874Pbo Raipur21.2381.65
42971Bhubaneswar (VEBS)20.2585.83
43003Bombay/Santacruz (VABB)19.1172.85
43041Jagdalpur19.0882.03
43063Poona18.5373.85
43128Hyderabad Airport (VOHY)17.4578.46
43150Vishakhapatnam/Waltair17.783.3
43185Mapatnam16.281.15
43192Goa/Panjim15.4873.81
43279Madras/Minambakkam (VOMM)1380.18
43285Mangalore/Panambur12.9574.83
43295Bangalore12.9677.58
43333Port Blair (VEPB)11.6692.71
43369Minicoy8.373.15
43371Thiruvananthapuram8.4876.95
43418Trincomalee (VCCT)
43466Colombo
43497Hambantota
44231Muren49.56100.16
44292Ulaan-Baator47.55106.52
44373Dalanzadgad43.35104.25
45004Kings Park22.31114.17
47102Baengnyeongdo37.97124.63
47104Bukgangneung37.81128.85
47122Osan Ab (RKSO)37.1127.03
47138Pohang36.03129.38
47158Kwangju Ab (RKJJ)35.11126.81
47169Heuksando34.68125.45
47186National Typhoon Centre33.33126.68
47401Wakkanai45.41141.68
47412Sapporo43.05141.33
47418Kushiro42.98144.4
47580Misawa Ab (RJSM)40.7141.38
47582Akita39.71140.1
47600Wajima37.38136.9
47646Tateno36.05140.13
47678Hachijyojima/Omure33.11139.78
47741Matsue35.45133.07
47778Shionomisaki33.45135.76
47807Fukuoka33.58130.38
47827Kagoshima31.55130.55
47909Naze/Funchatoge28.38129.55
47918Ishigakijima (ROIG)24.33124.16
47945Minamidaitojima (ROMD)25.83131.23
48327Chiang Mai (VTCC)18.7898.98
48378Phitsanulok (VTPS)
48407Ubon Ratchathani (VTUU)15.25104.86
48431Nakhon Ratchasima (VTUN)
48453Bangna13.67100.6
48477Sattahip
48500Prachuap Khirikhan (VTBP)
48551Surat Thani (VTSB)
48565Phuket Airport (VTSP)8.1198.31
48568Songkhla (VTSH)7.2100.6
48601Penang/Bayan Lepas (WMKP)5.3100.26
48615Kota Bharu (WMKC)6.16102.28
48650Sepang2.71101.7
48657Kuantan (WMKD)3.78103.21
48698Singapore/Changi Arpt (WSSS)1.36103.98
48811Dien Bien Phu21.4103.02
48820Ha Noi (VVNB)21.01105.8
48839Bach Longvi20.13107.72
48845Vinh (VVVH)18.68105.67
48870Qui Nhon
48877Nha Trang
48887Phan Thiet
48900Ho Chi Minh (VVTS)10.81106.66
48914Ca Mau
50527Hailar, SY49.21119.75
50557Nenjiang, SY49.16125.23
50774Yichun, SY47.71128.9
50953Harbin, SY45.75126.76
51076Altay, UQ47.7388.08
51431Yining, UQ (ZWYN)43.9581.33
51463Urumqi, UQ43.7887.62
51644Kuqa, UQ41.7182.95
51709Kashi, UQ (ZWSH)39.4675.98
51777Ruoqiang, UQ39.0388.16
51828Hotan, UQ (ZWTN)37.1379.93
51839Minfeng, UQ37.0682.71
52203Hami, UQ (ZWHM)42.8193.51
52267Ejin Qi, LZ41.95101.06
52323Mazong Shan, LZ41.897.03
52418Dunhuang, LZ40.1594.68
52533Jiuquan, LZ (ZLJQ)39.7698.48
52681Minqin, LZ38.63103.08
52818Golmud, LZ36.4194.9
52836Dulan, LZ36.398.1
52866Xining, LZ (ZLXN)36.71101.75
52983Yu Zhong, LZ35.87104.15
53068Erenhot, BJ43.65112
53463Hohhot, BJ (ZBHH)40.81111.68
53513Linhe, BJ40.76107.4
53614Yinchuan, LZ (ZLIC)38.48106.21
53772Taiyuan, BJ (ZBYN)37.78112.55
53845Yan An, LZ (ZLYA)36.6109.5
53915Pingliang, LZ35.55106.66
54102Xilin Hot, BJ43.95116.06
54135Tongliao, SY43.6122.26
54161Changchun, SY (ZYCC)43.9125.21
54218Chifeng, SY42.26118.96
54292Yanji, SY42.88129.46
54374Linjiang, SY41.71126.91
54511Beijing, BJ (ZBAA)39.93116.28
54662Dalian, BJ (ZYTL)38.9121.63
54727Zhangqiu36.7117.55
54857Qingdao, BJ (ZSQD)36.06120.33
55299Nagqu, CD31.4892.06
55591Lhasa, CD (ZULS)29.6691.13
56029Yushu, LZ33.0197.01
56080Hezuo, LZ35102.9
56137Qamdo, CD31.1597.16
56146Garze, CD31.61100
56187Wenjiang30.7103.83
56571Xichang, CD27.9102.26
56691Weining, CD26.86104.28
56739Tengchong, CD25.1198.48
56778Kunming, CD (ZPPP)25.01102.68
56964Simao, CD22.76100.98
56985Mengzi, CD23.38103.38
57083Zhengzhou, BJ (ZHCC)34.71113.65
57127Hanzhong, LZ33.06107.03
57131Jinghe34.43108.97
57178Nanyang, BJ33.03112.58
57447Enshi, HK30.28109.46
57461Yichang, HK30.7111.3
57494Wuhan, HK (ZHHH)30.61114.13
57516Chongqing, CD (ZUCK)29.51106.48
57749Huaihua, HK27.56110
57816Guiyang, CD (ZUGY)26.48106.65
57957Guilin, GZ (ZGKL)25.33110.3
57972Chenzhou, HK25.8113.03
57993Ganzhou, HK (ZSGZ)25.85114.95
58027Xuzhou, SH34.28117.15
58150Sheyang, SH33.76120.25
58203Fuyang, HK32.86115.73
58238Nanjing, SH (ZSNJ)32118.8
58362Shanghai, SH31.4121.46
58424Anqing, HK30.53117.05
58457Hangzhou, SH (ZSHC)30.23120.16
58606Nanchang, HK (ZSCN)28.6115.91
58633Qu Xian, SH28.96118.86
58665Hongjia, SH28.61121.41
58725Shaowu, SH27.33117.46
58847Fuzhou, SH (ZSFZ)26.08119.28
58968Taibei, SH25.03121.51
59134Xiamen, SH (ZSAM)24.48118.08
59211Baise, GZ23.9106.6
59265Wuzhou, GZ23.48111.3
59280Qing Yuan, GZ23.66113.05
59316Shantou, GZ (ZGOW)23.35116.66
59431Nanning, GZ (ZGNN)22.63108.21
59758Haikou, GZ (ZGHK)20.03110.35
59981Xisha Dao, GZ16.83112.33
96009Lhokseumawe/Malikussaleh (WITM)
96011Banda Aceh/Blang Bintang (WITT)5.5195.41
96035Medan/Polonia (WIMM)3.5698.68
96073Sibolga/Pinangsori (WIMS)
96091Tanjung Pinang/Kijang (WIKN)
96109Pekan Baru/Simpangtiga (WIBB)
96145Tarempa
96147Ranai (WION)3.95108.38
96163Padang/Tabing (WIMG)-0.88100.35
96171Rengat/Japura (WIPR)
96179Singkep/Dabo (WIKS)
96195Jambi/Sultan Taha (WIPA)
96221Palembang/St. Badarudin (WIPP)
96237Pangkal Pinang (WIKK)-2.16106.13
96249Tanjung Pandan/Buluh (WIKD)
96253Bengkulu/Padang Kemiling (WIPL)-3.88102.33
96295Tanjung Karang/Radin (WIIT)
96315Brunei Airport (WBSB)4.93114.93
96413Kuching (WBGG)1.48110.33
96441Bintulu (WBGB)3.2113.03
96471Kota Kinabalu (WBKK)5.93116.05
96481Tawau (WBKW)4.26117.88
96509Tarakan/Juwata (WRLR)3.33117.56
96535Paloh
96581Pontianak/Supadio (WIOO)-0.15109.4
96607Samarinda/Temindung (WRLS)
96633Balikpapan/Sepinggan (WRLL)-1.26116.9
96645Pangkalan Bun/Iskandar (WRBI)-2.7112.7
96655Palangka Raya/Tjilik (WRBP)
96685Banjarmasin/Syamsudin (WRBB)-3.43114.75
96749Jakarta/Soekarno-Hatta (WIII)-6.11106.65
96791Cirebon/Jatiwangi
96797Tegal
96805Cilacap (WIIL)-7.73109.01
96839Semarang/Ahmad Yani (WIIS)
96925Sangkapura (Bawean Is.)
96935Surabaya/Juanda (WRSJ)-7.36112.76
96973Kalianget (Madura Is)
96987Banyuwangi
97014Menado/ Sam Ratulangi (WAMM)1.53124.91
97048Gorontalo/Jalaluddin (WAMG)
97072Palu/Mutiara (WAML)-0.68119.73
97096Poso/Kasiguncu (WAMP)
97180Ujung Pandang/Hasanuddin (WAAA)-5.06119.55
97192Bau-Bau/Beto Ambari (WAAB)
97230Denpasar/Ngurah Rai (WRRR)
97240Mataram/Selaparang (WRRA)
97260Sumbawa Besar/Brangbiji (WRRS)
97270Bima/M.Salahuddin (WRRB)
97300Maumere/Wai Oti (WRKC)
97340Waingapu/Mau Hau (WRRW)
97372Kupang/Eltari (WRKK)-10.16123.66
97430Ternate/Babullah (WAMT)0.76127.36
98223Laoag (RPLI)18.18120.53
98328Baguio (RPUB)16.41120.6
98433Tanay14.56121.36
98444Legaspi (RPMP)13.13123.73
98618Puerto Princesa (RPVP)9.75118.73
98646Mactan (RPMT)10.3123.96
98747Cagayan De Oro8.41124.61
98753Davao Airport (RPMD)7.11125.65

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 27
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值