爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1995|回复: 1

[其他] 代码分享及程序运行时间问题求助。。。

[复制链接]
发表于 2017-3-13 17:18:56 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
刚入门NCL,编的程序有点糙,多包涵,实现功能是全球1000多个站点的ASCII(txt)数据插值到格点数据,然后写入到NC文件。听说NCL对循环处理不好,可是从Matlab 过来的,习惯了循环读取文件,然后相应写出到对应文件。实在想不出来更好的解决办法。。。

使用的NCL version 是6.1.2,故 cd_inv_string 和 get_unique_values 还不支持。所以添加了两个子程序实现上述功能,第三个子程序是按照客户需求编的插值算法,可用obj_anal_ic_Wrap 等插值函数替代。

程序运行基本没有问题,提示的warning 不影响运行结果,生成的NC数据没有问题。现在问题来了,第一天的数据用时2分钟,第二天的3分钟,后面依次增加时间,循环递增,时间也在递增,到后面一次要一个小时生成一个nc文件。经过程序运行的时间节点的分析,发现调用子程序运行的时间在不断增加。但我实在不知道解决办法。。。。求大神指点,谢谢!
  1. load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
  2. load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
  3. load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"

  4. undef("cd_inv_string")
  5. function cd_inv_string(instring, format)
  6. local months, fmonths, century, time, year, month, day, hour, minute,\
  7.     second, doy, inchars, strm, c, n, pm_code, monday, units, format, informat
  8. begin
  9. months = (/"","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"/)
  10. fmonths = (/"","January","February","March","April","May","June","July","August","September","October","November","December"/)

  11. century = get_res_value_keep(format, "century", 2000)
  12. units = get_res_value_keep(format, "units", "hours since 1800-01-01 00:00:00")

  13. time = new( dimsizes(instring), double)
  14. do n=0, dimsizes(instring)-1
  15.    year = 2000
  16.    month = 01
  17.    day = 01
  18.    hour = 00
  19.    minute = 00
  20.    second = 00
  21.    doy = 101
  22.    doy@used = False
  23.    
  24.     if(dimsizes(format).eq.dimsizes(instring))
  25.       inchars = tochar(format(n))
  26.     else
  27.       inchars = tochar(format(0))
  28.     end if
  29.     strm = 0
  30.     do c=0, dimsizes(inchars)-1
  31.         if(inchars(c) .ne. "%")
  32.           strm = strm+ 1
  33.           continue
  34.         else
  35.            c= c+1
  36.            pm_code = inchars(c)

  37.            if(pm_code .eq. "Y")
  38.                year = toint(str_get_cols(instring(n), strm, strm+3 ) )
  39.                strm = strm+4
  40.            end if
  41.            if(pm_code .eq. "y")
  42.                year = toint(str_get_cols(instring(n), strm, strm+1 ) ) + century
  43.                strm = strm+2
  44.            end if
  45.            if(pm_code .eq. "N")
  46.                month = toint(str_get_cols(instring(n), strm, strm+1 ) )
  47.                strm = strm+2
  48.            end if
  49.            if(pm_code .eq. "D")
  50.                day = toint(str_get_cols(instring(n), strm, strm+1 ) )
  51.                strm = strm+2
  52.            end if
  53.            if(pm_code .eq. "H")
  54.                hour = toint(str_get_cols(instring(n), strm, strm+1 ) )
  55.                strm = strm+2
  56.            end if
  57.            if(pm_code .eq. "M")
  58.                minute = toint(str_get_cols(instring(n), strm, strm+1 ) )
  59.                strm = strm+2
  60.            end if
  61.            if(pm_code .eq. "S")
  62.                second = toint(str_get_cols(instring(n), strm, strm+1 ) )
  63.                strm = strm+2
  64.            end if
  65.            if(pm_code .eq. "f")
  66.                second = toint(str_get_cols(instring(n), strm, strm+1 ) )*0.6 ;;; *100/60
  67.                strm = strm+2
  68.            end if
  69.            if(pm_code .eq. "J")
  70.                doy = toint(str_get_cols(instring(n), strm, strm+2 ) )
  71.                doy@used = True
  72.                strm = strm+2
  73.            end if
  74.         end if
  75.     end do
  76.     if(doy@used)    ;  put it at the end so doy can come before a year is defined
  77.      monday = monthday(year, doy)
  78.      month = toint(monday)/100
  79.      day = toint( toint(monday) - (month*100) )
  80.     end if
  81.     time(n) = cd_inv_calendar(year, month, day, hour, minute, second, units,0)
  82. end do
  83. return(time)
  84. end

  85. undef("get_unique_values")
  86. function get_unique_values(var)
  87. local varid, var, levels, i, dummy
  88. begin
  89. var1d = ndtooned(var)
  90. ;printVarSummary(var1d)
  91. levels = new(1,typeof(var1d))
  92. do i=0,dimsizes(var1d)-1
  93.          if (ismissing(levels(0)) .eq. True) then
  94.                  if (ismissing(var1d(i)) .ne. True) then
  95.                  levels(0) = var1d(i)
  96.                  end if
  97.          else
  98.                  if (any(levels.eq.var1d(i)) .or. ismissing(var1d(i)).eq.True) then
  99.                  else
  100.                  dummy = new(dimsizes(levels) + 1, typeof(levels))
  101.                  dummy(0:dimsizes(levels)-1) = levels
  102.                  dummy(dimsizes(dummy)-1) = var1d(i)
  103.                  delete(levels)
  104.                  levels = dummy
  105.                  delete(dummy)
  106.                  end if
  107.          end if
  108. end do

  109. return(levels)
  110. end

  111. undef("mean_within_grid")
  112. function mean_within_grid(lon, lat, data, olon, olat)
  113. local lon,lat,data,olon,olat, nlon, nlat, new_data, i, j, \
  114. min_lon, max_lon, min_lat, max_lat, dummy_lat, x_index, \
  115. y_index, dummy_data, index

  116. begin
  117. nlon = dimsizes(olon)
  118. nlat = dimsizes(olat)
  119. new_data = new((/nlat, nlon/), float, -9999)
  120.    
  121.      do i = 0, nlon-1
  122.                  do j = 0, nlat-1
  123.                    min_lon = olon(i)-5
  124.                    max_lon = olon(i)+5
  125.                    min_lat = olat(j)-5
  126.                    max_lat = olat(j)+5
  127.                    y_index = ind((lon.gt.min_lon).and.(lon.le.max_lon))
  128.                    if any(ismissing(y_index)).eq.False then
  129.                            dummy_lat = lat(y_index)
  130.                            x_index = ind((dummy_lat.gt.min_lat).and. \
  131.                                 (dummy_lat.le.max_lat))
  132.                            if any(ismissing(x_index)).eq.False then
  133.                            index= y_index(x_index)
  134.                            dummy_data = data(index)
  135.                            new_data(j,i) = dim_avg_Wrap(dummy_data)
  136.                            delete([/index,dummy_data/])
  137.                            else
  138.                            new_data(j,i) = -9999
  139.                            end if
  140.                            delete([/x_index, dummy_lat/])
  141.                    else
  142.                            new_data(j,i) = -9999
  143.                    end if
  144.                    delete([/min_lon, max_lon, min_lat, max_lat, \
  145.                                 y_index/])          
  146.                  end do
  147.      end do
  148. return(new_data)
  149. end

  150. begin
  151.     tstart = "20000101"            ;user input
  152.         t1 = cd_inv_string(tstart, "%Y%N%D")   
  153.         tend = "20000110"              ;user input
  154.         t2 = cd_inv_string(tend, "%Y%N%D")
  155.         hours = 0                      ;hours options are 0 or 12
  156.         common_name = "UPAR_WEA_GLB_MUL_FTM_MERGE_radiosonde_"
  157.         common_inpath="/cma/u/Twangzzh/ClimateModel/yjiang/DATAOUT/OUT2000-2016_with_GIS/"
  158.         common_outpath = "/cma/u/Twangzzh/ClimateModel/yjiang/NCL/DATAOUT/"
  159.        
  160.        
  161.         do ntimes = 0,(t2-t1)/24
  162.                 dummy_time = t1 + 24*ntimes + hours; unit in hours since 1800-01-01 00:00:00
  163.             dummy_time@units = "hours since 1800-01-01 00:00:00"
  164.             utc_date = cd_calendar(dummy_time, 0)
  165.             year = tointeger(utc_date(:,0))
  166.             month = tointeger(utc_date(:,1))
  167.             day = tointeger(utc_date(:,2))
  168.             hour = tointeger(utc_date(:,3))   
  169.             date_str = sprinti("%0.4i", year) + sprinti("%0.2i", month) + sprinti("%0.2i", day)\
  170.                + "-" + sprinti("%0.2i", hour)
  171.             in_path = common_inpath + sprinti("%0.4i", year) + "/" + sprinti("%0.2i", month) + "/"   
  172.             input = in_path + common_name + date_str + ".txt"      
  173.             if isfilepresent(input).eq. False then
  174.                         delete([/dummy_time, utc_date, year, month, day, hour, date_str, in_path, input/])
  175.                         continue
  176.                        
  177.             end if
  178.                 dummy := asciiread(input, -1, "string")
  179.                 nrows = numAsciiRow(input)
  180.                 ;printVarSummary(dummy)
  181.                 ;print(nrows)
  182.                 ; if str_is_blank(dummy(nlines-1)).eq.False
  183.                         ; f = dummy
  184.                 ; else
  185.                         ; f = dummy(0:nlines-2)
  186.                 ; end if
  187.                 f = dummy(0:nrows-1)
  188.                 ;printVarSummary(f)
  189.                 station_name = str_get_cols(f, 0, 11);
  190.                 time_str = str_get_cols(f, 12, 24);
  191.                 format = "%Y %N %D %H"
  192.                 format@centry = 1900
  193.                 format@units= "hours since 1900-01-01 00:00:00"
  194.                 system("date")
  195.                 time_s = cd_inv_string(time_str, format)
  196.                 system("date")
  197.                 time = get_unique_values(time_s)
  198.                 system("date")
  199.                 delete(time_s)
  200.                 time!0 = "time"
  201.                 time@long_name = "time"
  202.                 time@units = "hours since 1900-01-01 00:00:00"
  203.                 time@_FillValue = -9999.
  204.                 time&time = time
  205.                 print("time = " + time)
  206.                 ;printVarSummary(time)

  207.                 lat = stringtofloat(str_get_field(f, 6, " "));
  208.                 lon = stringtofloat(str_get_field(f, 7, " "));
  209.                 lon = where(lon.lt.0, lon+360, lon);

  210.                 pre = stringtofloat(str_get_field(f, 8, " "))*0.01;   Pressure in unit pa converting to millibar

  211.                 Ht = stringtofloat(str_get_field(f, 9, " ")); Height in m
  212.                 Ht = where(Ht.eq.-9999., -9999., Ht);
  213.                 Ht@_FillValue = -9999.;

  214.                 temp = stringtofloat(str_get_field(f, 10, " ")); Temperature in C
  215.                 temp = where(temp.eq.-9999., -9999., temp*0.1);
  216.                 temp@_FillValue = -9999.;

  217.                 TD = stringtofloat(str_get_field(f, 11, " ")); Dew temeprature in C
  218.                 TD = where(TD.eq.-9999., -9999., TD*0.1);
  219.                 TD@_FillValue = -9999.;   

  220.                 WD = stringtofloat(str_get_field(f, 12, " ")); Wind direction in degrees north
  221.                 WD = where((WD.eq.-9999.).or.(WD.eq.999.), -9999., WD);
  222.                 WD@_FillValue = -9999.;

  223.                 WS = stringtofloat(str_get_field(f, 13, " ")); Wind speed in m/s
  224.                 WS = where(WS.eq.-9999., -9999., WS*0.1);
  225.                 WS@_FillValue = -9999.;

  226.                 olat = ispan(-85,85,10);
  227.                 olat!0 = "latitude"
  228.                 olat@long_name = "latitude"
  229.                 olat@units ="degrees_north"
  230.                 olat&latitude = olat
  231.                
  232.                 olon = ispan(5,355,10);
  233.                 olon!0 = "longitude"
  234.                 olon@long_name = "longitude"
  235.                 olon@units = "degrees_east"
  236.                 olon&longitude = olon

  237.                 PL = (/1,2,3,5,7,10,20,30,50,70,100,125,150,175,\
  238.                                   200,225,250,300,350,400,450,500,550,600,650,700,750,\
  239.                                   775,800,825,850,875,900,925,950,975,1000/);            defined pressure levels
  240.                 PL!0 = "level"                  
  241.                 PL@long_name = "pressure level"
  242.                 PL@units = "millibars"
  243.                 PL&level = PL       

  244.                 linlog = 1 ;use linear interpolation and avoid out of range extrapolation
  245.                 ; vertical interpolation over pressure levels
  246.                
  247.                 station = get_unique_values(station_name)
  248.                 nstation = dimsizes(station)
  249.                
  250.                 new_lat = new(nstation, float)
  251.                 new_lon = new(nstation, float)
  252.                 new_temp_data = new((/dimsizes(PL), nstation/), float)
  253.                 new_TD_data = new((/dimsizes(PL), nstation/), float)
  254.                 new_WD_data = new((/dimsizes(PL), nstation/), float)
  255.                 new_WS_data = new((/dimsizes(PL), nstation/), float)
  256.                 ;print(station)
  257.                 system("date")
  258.                 print("ntimes="+ntimes+",loop nstation="+(nstation-1))
  259.                 do ista = 0, nstation-1
  260.                         ;print("ntimes="+ntimes+",ista="+ista)
  261.                         lat_data = get_unique_values(lat(ind(station_name.eq.station(ista))))
  262.                         lon_data = get_unique_values(lon(ind(station_name.eq.station(ista))))
  263.                         pre_data = pre(ind(station_name.eq.station(ista)))
  264.                         temp_data = temp(ind(station_name.eq.station(ista)))
  265.                         TD_data = TD(ind(station_name.eq.station(ista)))
  266.                         WD_data = WD(ind(station_name.eq.station(ista)))
  267.                         WS_data = WS(ind(station_name.eq.station(ista)))

  268.                         if dimsizes(get_unique_values(pre_data)).gt.1 then
  269.                                 new_temp = int2p_n(pre_data(::-1), temp_data(::-1), PL, linlog, 0);
  270.                                 new_TD = int2p_n(pre_data(::-1), TD_data(::-1), PL, linlog, 0);
  271.                                 new_WD = int2p_n(pre_data(::-1), WD_data(::-1), PL, linlog, 0);
  272.                                 new_WS = int2p_n(pre_data(::-1), WS_data(::-1), PL, linlog, 0);
  273.                         else   
  274.                                 new_temp = fspan(-9999, -9999, dimsizes(PL));
  275.                                 new_TD = fspan(-9999, -9999, dimsizes(PL));
  276.                                 new_WD = fspan(-9999, -9999, dimsizes(PL));
  277.                                 new_WS = fspan(-9999, -9999, dimsizes(PL));
  278.                                 new_temp@_FillValue = -9999;
  279.                                 new_TD@_FillValue = -9999;
  280.                                 new_WD@_FillValue = -9999;                            
  281.                                 new_WS@_FillValue = -9999;
  282.                         end if
  283.                        
  284.                         ;print(PL + " " +new_temp)
  285.                         new_lat(ista) = lat_data;
  286.                         new_lon(ista) = lon_data;
  287.                         new_temp_data(:,ista) = new_temp;
  288.                         new_TD_data(:,ista) = new_TD;
  289.                         new_WD_data(:,ista) = new_WD;
  290.                         new_WS_data(:,ista) = new_WS;
  291.                         delete([/lat_data, lon_data, pre_data, temp_data, TD_data, WD_data, WS_data,\
  292.                                   new_temp, new_TD, new_WD, new_WS/]);  
  293.                 end do     
  294.                         ;print(new_temp_data(:,0)+ " " + new_temp_data(:,1) + " " + new_temp_data(:,2));
  295.                         ;print(new_lon + " " + new_lat + " " + new_temp_data(35,:));
  296.                         ;print(lat_data+ " " +lon_data+ " " +pre_data+ " "+ temp_data);
  297.                 system("date")
  298.                 ; horiontal interpolation over lat and lon

  299.                 final_temp = new((/dimsizes(time), dimsizes(PL), dimsizes(olat), dimsizes(olon)/), float)
  300.                 final_TD = new((/dimsizes(time), dimsizes(PL), dimsizes(olat), dimsizes(olon)/), float)
  301.                 final_WD = new((/dimsizes(time), dimsizes(PL), dimsizes(olat), dimsizes(olon)/), float)
  302.                 final_WS = new((/dimsizes(time), dimsizes(PL), dimsizes(olat), dimsizes(olon)/), float)
  303.                
  304.                 ;rscan = (/100, 70, 40, 10/);
  305.                 ;opt = False;
  306.                 ;final_temp(0,:,:,:) = obj_anal_ic_Wrap(new_lon,new_lat,new_temp_data, olon, olat,rscan, opt)
  307.                 system("date")
  308.                 ;time dimension here is 1, so s_ntime = 1
  309.                 s_ntime = dimsizes(time)
  310.                 do nlevel  = 0 , dimsizes(PL)-1
  311.                         final_temp(s_ntime-1, nlevel,:,:) = mean_within_grid(new_lon, new_lat, new_temp_data(nlevel,:), olon, olat)
  312.                         final_TD(s_ntime-1, nlevel,:,:) = mean_within_grid(new_lon, new_lat, new_TD_data(nlevel,:), olon, olat)
  313.                         final_WD(s_ntime-1, nlevel,:,:) = mean_within_grid(new_lon, new_lat, new_WD_data(nlevel,:), olon, olat)
  314.                         final_WS(s_ntime-1, nlevel,:,:) = mean_within_grid(new_lon, new_lat, new_WS_data(nlevel,:), olon, olat)
  315.                 end do

  316.                 system("date")
  317.                 final_temp!0 = "time"
  318.                 final_temp!1 = "level"
  319.                 final_temp!2 = "latitude"
  320.                 final_temp!3 = "longitude"
  321.                 final_temp@long_name = "Temperature"
  322.                 final_temp@units = "Celsius_degrees"   ; units?
  323.                 final_temp&time = time
  324.                 final_temp&level =PL
  325.                 final_temp&latitude = olat
  326.                 final_temp&longitude = olon
  327.                 ;print(final_temp(0,35,:,:))
  328.                 ;printVarSummary(final_temp);
  329.                
  330.                 final_TD!0 = "time"
  331.                 final_TD!1 = "level"
  332.                 final_TD!2 = "latitude"
  333.                 final_TD!3 = "longitude"
  334.                 final_TD@long_name = "Dew Temperature"
  335.                 final_TD@units = "Celsius_degrees"   ; units?
  336.                 final_TD&time = time
  337.                 final_TD&level =PL
  338.                 final_TD&latitude = olat
  339.                 final_TD&longitude = olon
  340.                 ;printVarSummary(final_TD);
  341.                
  342.                 final_WD!0 = "time"
  343.                 final_WD!1 = "level"
  344.                 final_WD!2 = "latitude"
  345.                 final_WD!3 = "longitude"
  346.                 final_WD@long_name = "Wind Direction"
  347.                 final_WD@units = "degrees"   ; units?
  348.                 final_WD&time = time
  349.                 final_WD&level =PL
  350.                 final_WD&latitude = olat
  351.                 final_WD&longitude = olon
  352.                 ;printVarSummary(final_WD);

  353.                 final_WS!0 = "time"
  354.                 final_WS!1 = "level"
  355.                 final_WS!2 = "latitude"
  356.                 final_WS!3 = "longitude"
  357.                 final_WS@long_name = "Wind Speed"
  358.                 final_WS@units = "meter per second"   ; units?
  359.                 final_WS&time = time
  360.                 final_WS&level =PL
  361.                 final_WS&latitude = olat
  362.                 final_WS&longitude = olon
  363.                 ;printVarSummary(final_WS);       
  364.                
  365.                 ;;;;;;;;;;;;;;;;;output nc file
  366.                
  367.                 out_path = common_outpath + sprinti("%0.4i", year) + "/" + sprinti("%0.2i", month) + "/"
  368.                 output_name = sprinti("%0.4i", year) + sprinti("%0.2i", month) + sprinti("%0.2i", day)\
  369.                            + "." + sprinti("%0.2i", hour) + ".pl"
  370.                 output = out_path + output_name + ".nc"
  371.                
  372.                 if isfilepresent(out_path).eq.False then
  373.                         cmchar = "mkdir -p " + out_path
  374.                         system(cmchar)
  375.                         delete(cmchar)
  376.                
  377.                 end if
  378.        
  379.                 cnchar = "rm -rf " + output
  380.                 system(cnchar)
  381.                 fout = addfile(output, "c")
  382.                 setfileoption(fout, "DefineMode", True)
  383.                
  384.                 fileAtt       = True
  385.                 fileAtt@title = "Test NetCDF File"
  386.                 fileAtt@creation_data = systemfunc("date")
  387.                 fileattdef(fout,fileAtt)
  388.                
  389.                 dimNames = (/"longitude", "latitude", "level", "time"/)
  390.                 dimSizes = (/dimsizes(olon), dimsizes(olat), dimsizes(PL), 1/)
  391.                 dimUnlim = (/False, False, False, False/)
  392.                 filedimdef(fout, dimNames, dimSizes, dimUnlim)
  393.                
  394.                 filevardef(fout, "longitude", typeof(olon), getvardims(olon))
  395.                 filevardef(fout, "latitude", typeof(olat), getvardims(olat))
  396.                 filevardef(fout, "level", typeof(PL), getvardims(PL))
  397.                 filevardef(fout, "time", typeof(time), getvardims(time))
  398.                 filevardef(fout, "t", typeof(final_temp), getvardims(final_temp))
  399.                 filevardef(fout, "td", typeof(final_TD), getvardims(final_TD))       
  400.                 filevardef(fout, "wd", typeof(final_WD), getvardims(final_WD))
  401.                 filevardef(fout, "ws", typeof(final_WS), getvardims(final_WS))
  402.                
  403.                 filevarattdef(fout, "longitude", olon)
  404.                 filevarattdef(fout, "latitude", olat)
  405.                 filevarattdef(fout, "level", PL)
  406.                 filevarattdef(fout, "time", time)
  407.                 filevarattdef(fout, "t", final_temp)
  408.                 filevarattdef(fout, "td", final_TD)
  409.                 filevarattdef(fout, "wd", final_WD)
  410.                 filevarattdef(fout, "ws", final_WS)       
  411.                
  412.                 fout->longitude = (/olon/)
  413.                 fout->latitude = (/olat/)
  414.                 fout->level = (/PL/)
  415.                 fout->time = (/time/)
  416.                 fout->t = (/final_temp/)
  417.                 fout->td = (/final_TD/)
  418.                 fout->wd = (/final_WD/)
  419.                 fout->ws = (/final_WS/)
  420.                
  421.                 ; system("rm -f test.png")
  422.                 ; wks = gsn_open_wks("png", "test")
  423.                 ; gsn_define_colormap(wks, "BlAqGrYeOrRe")
  424.                 ; gsn_define_colormap(wks, "rainbow")
  425.                  
  426.                 ; res                        = True
  427.                 ; res@gsnAddCyclic           = False
  428.                 ; res@cnFillOn               = True
  429.                 ; res@cnLinesOn              = False
  430.                 ; res@cnLevelSpacingF        = 0.5
  431.                 ; res@gsnSpreadColors        = True
  432.                 ; res@lbAutoLabelStride      = True
  433.                
  434.                 ; plot = gsn_csm_contour_map(wks, final_temp(0,35,:,:), res)
  435.                
  436.                 delete([/dummy_time, utc_date, year, month, day, hour, date_str, in_path, input, f, dummy, nrows, station_name, \
  437.             time_str, format, time, lat, lon, pre, Ht, temp, TD, WD, WS, olat, olon, PL, linlog, station, nstation, new_lat, \
  438.                 new_lon, new_temp_data, new_TD_data, new_WD_data, new_WS_data, final_temp, final_TD, final_WD, final_WS, \
  439.                 out_path, output_name, output, cnchar, fileAtt, dimNames, dimSizes, dimUnlim, fout/])
  440.                 system("date")
  441.         end do
  442.        
  443. end
复制代码



test_a.ncl

15.63 KB, 下载次数: 0, 下载积分: 金钱 -5

代码

UPAR_WEA_GLB_MUL_FTM_MERGE_radiosonde_20000101-00.txt

2.36 MB, 下载次数: 0, 下载积分: 金钱 -5

第一天样例数据

密码修改失败请联系微信:mofangbao
发表于 2017-3-13 20:45:17 | 显示全部楼层
多谢楼主的分享精神!{:5_213:}{:5_213:}
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表