windows下wgrib/wgrib2和python读取grib2数据

windows下没有api可以直接读grib或者grib2的数据。所以下载wgrib或者wgrib2来读grib数据。wgrib可以读grib1格式(.grb)的数据,wgrib2可以读grib2格式(.grib)的数据,根据不同格式的数据选择下载wgrib或者wgrib2

1.wgrib和wgrib2下载

  • wgrib,下载地址:ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib
  • wgrib2,下载地址:ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib2(64位系统用 ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/Windows_64/)
    找到对应的版本,下载速度比较慢,请耐心等待。。。
    下载完成后把所有文件放到同一个文件夹下,比如wgrib文件可以都放在wgrib文件夹下,wgrib2文件可以都放在wgrib2文件夹下

2.wgrib和wgrib2设置

wgrib和wgrib2是不需要安装的,只需要在环境变量里进行设置。
windows下wgrib/wgrib2和python读取grib2数据_第1张图片
右键此电脑,点击属性
windows下wgrib/wgrib2和python读取grib2数据_第2张图片
点击高级系统设置
windows下wgrib/wgrib2和python读取grib2数据_第3张图片
点击环境变量
windows下wgrib/wgrib2和python读取grib2数据_第4张图片
在系统变量里找到Path,点击编辑
windows下wgrib/wgrib2和python读取grib2数据_第5张图片
点击新建,然后把wgrib和wgrib2的路径输入进去

3.验证是否设置成功

windows下wgrib/wgrib2和python读取grib2数据_第6张图片
同时按下windows和R键,输入cmd,点击确定
windows下wgrib/wgrib2和python读取grib2数据_第7张图片
输入wgrib2
windows下wgrib/wgrib2和python读取grib2数据_第8张图片
显示出wgrib2的使用说明,说明设置成功

4. 读取grib和grib2数据

4.1使用wgrib/wgrib2读取数据

 -else            else         else
 -elseif_fs       elif  X      elseif X (fixed string) conditional execution
 -elseif_n        elif  X      elseif (inv numbers in range), X=(start:end:step)
 -elseif_rec      elif  X      elseif (record numbers in range), X=(start:end:step)
 -elseif_reg      elif  X      elseif rpn registers defined, X = A, A:B, A:B:C, etc A = register number
 -elseif          elif  X      elseif X (POSIX regular expression) conditional on match
 -endif           endif        endif
 -if              if    X      if X (POSIX regular expression), conditional execution on match
 -if_fs           if    X      if X (fixed string), conditional execution on match
 -if_n            if    X      if (inv numbers in range), X=(start:end:step)
 -if_rec          if    X      if (record numbers in range), X=(start:end:step)
 -if_reg          if    X      if rpn registers defined, X = A, A:B, A:B:C, etc A = register number
 -not_if          if    X      not_if X (regular expression), conditional execution on not match
 -not_if_fs       if    X      if X (fixed string) does not match, conditional execution up to next output/fi
 -0xSec           inv   X      Hex dump of section X (0..8)
 -aerosol_size    inv          optical properties of an aerosol
 -aerosol_wavelength inv          optical properties of an aerosol
 -bitmap          inv          bitmap mode
 -center          inv          center
 -checksum        inv   X      CRC checksum of section X (0..8), whole message (X = -1/message) or (X=data)
 -disc            inv          discipline (code table 0.0)
 -domain          inv          find rectangular domain for g2ctl/GrADS plots
 -end_ft          inv          verf time = reference_time + forecast_time + stat. proc time (YYYYMMDDHH) (same as -vt)
 -end_FT          inv          verf time = reference_time + forecast_time + stat. proc time (YYYYMMDDHHMMSS) (same as -VT)
 -ens             inv          ensemble information
 -ext_name        inv          extended name, var+qualifiers
 -ftime           inv          either ftime1 or ftime2 dep on version_ftime
 -ftime1          inv          forecast time
 -ftime2          inv          timestamp -- will replace -ftime in the future TESTING
 -ftn_api_fn0     inv          n npnts nx ny msg_no submsg i11,5(1x,i11)
 -full_name       inv          extended name, var+qualifiers
 -gdt             inv          contents of Grid Definition Template (g2c)
 -get_byte        inv   X Y Z  get bytes in Section X, Octet Y, number of bytes Z (decimal format)
 -get_hex         inv   X Y Z  get bytes in Section X, Octet Y, number of bytes Z (bytes in hexadecimal format)
 -get_ieee        inv   X Y Z  get ieee float in Section X, Octet Y, number of floats Z
 -get_int         inv   X Y Z  get 4-byte ints in Section X, Octet Y, number of ints Z
 -get_int2        inv   X Y Z  get 2-byte ints in Section X, Octet Y, number of ints Z
 -grib_max_bits   inv          maximum bits used in grib encoding
 -grid            inv          grid definition
 -grid_id         inv          show values from grid_id
 -hybrid          inv          shows vertical coordinate parameters from Sec4
 -ij              inv   X Y    value of field at grid(X,Y) X=1,..,nx Y=1,..,ny (WxText enabled)
 -ijlat           inv   X Y    lat,lon and grid value at grid(X,Y) X=1,..,nx Y=1,..,ny (WxText enabled)
 -ilat            inv   X      lat,lon and grid value at Xth grid point, X=1,..,npnts (WxText enabled)
 -JMA             inv          inventory for JMA locally defined PDT
 -lev             inv          level (code table 4.5)
 -ll2i            inv   X Y    x=lon y=lat, converts to (i), 1..ndata
 -ll2ij           inv   X Y    x=lon y=lat, converts lon-lat to (i,j) using gctpc
 -lon             inv   X Y    value at grid point nearest lon=X lat=Y (WxText enabled)
 -match_inv       inv          inventory used by -match, -not, -if and -not_if
 -Match_inv       inv          same as -match_inv except d=YYYYMMDDHH <-> D=YYYYMMDDHHmmss
 -max             inv          print maximum value
 -min             inv          print minimum value
 -misc            inv          variable name qualifiers like chemical, ensemble, probability, etc
 -MM              inv          reference time MM
 -model_version_date inv          prints model date code
 -n               inv          prints out inventory number
 -N_ens           inv          number of ensemble members
 -nl              inv          inserts new line into inventory
 -nlons           inv          number of longitudes for each latitude
 -npts            inv          number of grid points
 -nxny            inv          nx and ny of grid
 -packing         inv          shows the packing mode (use -v for more details)
 -pdt             inv          Product Definition Table (Code Table 4.0)
 -precision       inv          precision of packing
 -print           inv   X      inserts string (X) into inventory
 -prob            inv          probability information
 -process         inv          Process (code table 4.3)
 -processid       inv          process id (locally defined)
 -proj4_ij2ll     inv   X Y    X=x Y=y, converts to (i,j) to lon-lat using proj.4 (experimental) we:sn
 -proj4_ll2i      inv   X Y    x=lon y=lat, converts to (i) using proj.4 (experimental) 1..ndata
 -proj4_ll2ij     inv   X Y    x=lon y=lat, converts lon-lat (i,j) using proj.4 (experimental)
 -radius          inv          radius of Earth
 -range           inv          print out location of record in bytes, 0 = first byte
 -RT              inv          type of reference Time
 -s               inv          simple inventory
 -S               inv          simple inventory with minutes and seconds (subject to change)
 -s2              inv          simple inventory .. for testing ftime2
 -scale           inv          scale for packing
 -scaling         inv          scaling for packing (old format)
 -scan            inv          scan order of grid
 -Sec_len         inv          length of various grib sections
 -Sec0            inv          contents of section0
 -Sec3            inv          contents of section 3 (Grid Definition Section)
 -Sec4            inv          Sec 4 values (Product definition section)
 -Sec5            inv          Sec 5 values (Data representation section)
 -Sec6            inv          show bit-map section
 -spatial_proc    inv          show spacial processing, pdt=4.15
 -spectral_bands  inv          spectral bands for satellite, pdt=4.31 or 4.32
 -start_ft        inv          verf time = reference_time + forecast_time (YYYYMMDDHH) : no stat. proc time
 -start_FT        inv          verf time = reference_time + forecast_time (YYYYMMDDHHMMSS) - no stat. proc time
 -stats           inv          statistical summary of data values
 -subcenter       inv          subcenter
 -t               inv          reference time YYYYMMDDHH, -v2 for alt format
 -T               inv          reference time YYYYMMDDHHMMSS
 -table           inv          parameter table
 -timer           inv          reads OpenMP timer
 -unix_time       inv          print unix timestamp for rt & vt
 -V               inv          diagnostic output
 -var             inv          short variable name
 -varX            inv          raw variable name - discipline mastertab localtab center parmcat parmnum
 -vector_dir      inv          grid or earth relative winds
 -verf            inv          simple inventory using verification time
 -vt              inv          verf time = reference_time + forecast_time, -v2 for alt format
 -VT              inv          verf time = reference_time + forecast_time (YYYYMMDDHHMMSS)
 -warn_old_g2     inv          warn if old g2lib would have problem
 -wave_partition  inv          ocean surface wave partition (pdt=4.52)
 -YY              inv          reference time YYYY
 -inv_f77         inv>  X Y Z  match inventory written to Z with character*(Y) and X=(bin,ieee)
 -last            inv>  X      write last inv item to file X
 -last0           inv>  X      write last inv item to beginning of file X
 -nl_out          inv>  X      write new line in file X
 -print_out       inv>  X Y    prints string (X) in file (Y)
 -s_out           inv>  X      simple inventory written to X
 -big_endian      misc         sets ieee output to big endian (default is big endian)
 -box_ave         misc  X Y Z  box average X=odd integer (lon) Y=odd integer (lat) critical_weight
 -colon           misc  X      replace item deliminator (:) with X
 -config          misc         shows the configuration
 -count           misc         prints count, number times this -count was processed
 -end             misc         stop after first (sub)message (save time)
 -error_final     misc  X Y Z  error if at end X=count Y=ne,eq,le,lt,gt,ge Z=integer
 -fix_CFSv2_fcst  misc  X Y Z  fixes CFSv2 monthly fcst X=daily or 00/06/12/18 Y=pert no. Z=number ens fcsts v1.0
 -fix_ncep        misc         fix ncep PDT=8 headers produced by cnvgrib
 -gctpc           misc  X       X=0,1 use gctpc library (default=1)
 -grid_changes    misc         prints number of grid changes
 -grid_def        misc         read lon and lat data from grib file -- experimental
 -h               misc         help, shows common options
 -header          misc         f77 header or nx-ny header in text output (default)
 -help            misc  X      help [search string|all], -help all, shows all options
 -ijundefine      misc  X Y Z  sets grid point values to undefined X=(in-box|out-box) Y=ix0:ix1 Z=iy0:iy1 ix=(1..nx) iy=(1..ny)
 -import_bin      misc  X      read binary file (X) for data
 -import_grib     misc  X      read grib2 file (X) for data
 -import_grib_fs  misc  X Y    read grib2 file (Y) sequentially for record that matches X (fixed string)
 -import_ieee     misc  X      read ieee file (X) for data
 -import_netcdf   misc  X Y Z  TESTING X=file Y=var Z=hyper-cube specification
 -import_text     misc  X      read text file (X) for data
 -limit           misc  X      stops after X fields decoded
 -little_endian   misc         sets ieee output to little endian (default is big endian)
 -mem_del         misc  X      delete mem file X
 -mem_final       misc  X Y    write mem file X to file Y at cleanup step
 -mem_init        misc  X Y    read mem file X from file Y (on initialization)
 -ndate           misc  X Y    X=date Y=dt print date + dt
 -ndates          misc  X Y Z  X=date0 Y=(date1|dt1) Z=dt2 for (date=date0; date<(date1|date0+dt1); date+=dt2) print date
 -ndates_fmt      misc  X      X = C format for ndates option
 -new_grid_interpolation misc  X      new_grid interpolation X=bilinear,bicubic,neighbor,budget
 -new_grid_ipopt  misc  X      new_grid ipopt values X=i1:i2..:iN N <= 20
 -new_grid_vectors misc  X      change fields to vector interpolate: X=none,default,UGRD:VGRD,(U:V list)
 -new_grid_winds  misc  X      new_grid wind orientation: X = grid, earth (no default)
 -no_header       misc         no f77 header or nx-ny header in text output
 -proj4           misc  X      X=0,1 use proj4 library for geolocation (testing)
 -rewind_final    misc  X      rewinds file X on cleanup step if already opened, CW2
 -rewind_proc     misc  X      rewinds file X on processing step if already opened, CW2
 -rpn             misc  X      reverse polish notation calculator
 -rpn_rcl         misc  X      data = register X .. same as -rpn rcl_X .. no geolocation calc needed
 -rpn_sto         misc  X      register X = data.. same as -rpn sto_X .. no geolocation calc needed
 -scaling_0001    misc         changes scaling testing (sample)
 -set             misc  X Y    set X = Y, X=local_table,etc (help: -set help help)
 -set_ave         misc  X      set ave/acc .. only use on pdt=4.0/4.8 (old code)
 -set_bin_prec    misc  X      X use X bits and ECMWF-style grib encoding
 -set_bitmap      misc  X      use bitmap when creating complex packed files X=1/0
 -set_byte        misc  X Y Z  set bytes in Section X, Octet Y, bytes Z (a|a:b:c)
 -set_date        misc  X      changes date code, X=(+|-)N(hr|dy|mo|yr), YYYYMMDDHHmmSS
 -set_ens_num     misc  X Y Z  convert PDT 0,1 -> 1, 8,11 -> 11, X=code table 4.6 Y=pert num Z=num ens members -1=No Change
 -set_ensm_derived_fcst misc  X Y    convert PDT 0,1,2 -> 2, 8,11,12 -> 12, X=code table 4.7 Y=num ens members
 -set_ftime       misc  X      either set_ftime1 or set_ftime2 dep on version_ftime
 -set_ftime1      misc  X      set ftime
 -set_ftime2      misc  X      set ftime2 .. will be replace -set_ftime/ave in the future -- TESTING ---
 -set_grib_max_bits misc  X      sets scaling so number of bits does not exceed N in (new) grib output
 -set_grib_type   misc  X      set grib type = jpeg, simple, ieee, complex(1|2|3), aec, same
 -set_hex         misc  X Y Z  set bytes in Section X, Octet Y, bytes Z (a|a:b:c|abc) in hexadecimal
 -set_ieee        misc  X Y Z  set ieee float in Section X, Octet Y, floats Z (a|a:b:c)
 -set_ijval       misc  X Y Z  sets grid point value X=ix Y=iy Z=val
 -set_int         misc  X Y Z  set 4-byte ints in Section X, Octet Y, signed integers Z (a|a:b:c)
 -set_int2        misc  X Y Z  set 2-byte ints in Section X, Octet Y, signed integers Z (a|a:b:c)
 -set_ival        misc  X Y    sets grid point value X=i1:i2:.. Y=va1:val2:.. grid[i1] = val1,etc
 -set_lev         misc  X      changes level code .. not complete
 -set_metadata    misc  X      read meta-data for grib writing from file X
 -set_metadata_str misc  X      X = metadata string
 -set_pdt         misc  X      makes new pdt, X=(+)PDT_number or X=(+)PDT_number:size of PDT in octets, +=copy metadata
 -set_percentile  misc  X      convert PDT 0..6 -> 6, 8..15 -> 10, X=percentile (0..100)
 -set_prob        misc  5 args X/Y forecasts Z=Code Table 4.9 A=lower limit B=upper limit
 -set_radius      misc  X      set radius of Earth X= 0,2,4,5,6,8,9 (Code Table 3.2), 1:radius , 7:major:minor
 -set_scaling     misc  X Y    set decimal scaling=X/same binary scaling=Y/same new grib messages
 -set_sec_size    misc  X Y    resizes section , X=section number, Y=size in octets, DANGEROUS
 -set_ts_dates    misc  X Y Z  changes date code for time series X=YYYYMMDDHH(mmss) Y=dtime Z=#msgs/date
 -set_var         misc  X      changes variable name
 -start_timer     misc         starts OpenMP timer
 -status          misc  X      X X=file
 -submsg          misc  X      process submessage X (0=process all messages)
 -sys             misc  X      run system/shell command, X=shell command
 -text_col        misc  X      number of columns on text output
 -text_fmt        misc  X      format for text output (C)
 -udf             misc  X Y    run UDF, X=program+optional_args, Y=return file
 -udf_arg         misc  X Y    add grib-data to UDF argument file, X=file Y=name
 -undefine        misc  X Y Z  sets grid point values to undefined X=(in-box|out-box) Y=lon0:lon1 Z=lat0:lat1
 -undefine_val    misc  X      grid point set to undefined if X=val or X=low:high
 -v               misc         verbose (v=1)
 -v0              misc         not verbose (v=0)
 -v2              misc         really verbose (v=2)
 -version         misc         print version
 --version        misc         print version
 -AAIG            out          writes Ascii ArcInfo Grid file, lat-lon grid only (alpha)
 -AAIGlong        out          writes Ascii ArcInfo Grid file, lat-lon grid only long-name *.asc (alpha)
 -ave             out   X Y    average X=time step Y=output v2
 -ave_var         out   X Y    average/std dev/min/max X=time step, Y=output
 -ave0            out   X Y    average X=time step, Y=output grib file needs file is special order
 -bin             out   X      write binary data to X
 -cress_lola      out   X..Z,A lon-lat grid values X=lon0:nlon:dlon Y=lat0:nlat:dlat Z=file A=radius1:radius2:..:radiusN
 -csv             out   X      make comma separated file, X=file (WxText enabled)
 -csv_long        out   X      make comma separated file, X=file (WxText enabled)
 -cubeface2global out   X Y    write faces X as global cubed grid to Y: X=list of faces to exclude
 -ens_processing  out   X Y    ave/min/max/spread X=output Y=future use
 -fcst_ave        out   X Y    average X=time step Y=output v2
 -fcst_ave0       out   X Y    average X=time step, Y=output grib file needs file is special order
 -fi              out          depreceated
 -grib            out   X      writes GRIB record (one submessage) to X
 -GRIB            out   X      writes entire GRIB record (all submessages)
 -grib_ieee       out   X      writes data[] to X.grb, X.head, X.tail, and X.h
 -grib_out        out   X      writes decoded/modified data in grib-2 format to file X
 -grib_out_irr    out   X Y    writes irregular grid grib (GDT=130 not adopted) X=(all|defined) Y=(output file)
 -grib_out_irr2   out   5 args writes irregular grid grib GDT 101 X=npnts Y=grid_no Z=grid_ref A=UUID B=(output file)
 -gridout         out   X      text file with grid: i j lat lon (1st record)
 -ieee            out   X      write (default:big-endian) IEEE data to X
 -ijbox           out   X..Z,A grid values in bounding box X=i1:i2[:di] Y=j1:j2[:dj] Z=file A=[bin|text|spread]
 -ijsmall_grib    out   X Y Z  make small domain grib file X=ix0:ix1 Y=iy0:iy1 Z=file
 -irr_grid        out   X Y Z  make irregular grid (GDT=130 not adopted), nearest neighbor, X=lon-lat list Y=radius (km) Z=output grib file
 -lola            out   X..Z,A lon-lat grid values X=lon0:nlon:dlon Y=lat0:nlat:dlat Z=file A=[bin|text|spread|grib]
 -merge_fcst      out   X Y    merge forecast ave/acc/min/max X=number to intervals to merge (0=every) Y=output grib file
 -mysql           out   5 args H=[host] U=[user] P=[password] D=[db] T=[table]
 -mysql_dump      out   7 args H=[host] U=[user] P=[password] D=[db] T=[table] W=[western_lons:0|1] PV=[remove unlikely:0|1]
 -mysql_speed     out   7 args H=[host] U=[user] P=[password] D=[db] T=[table] W=[western_lons:0|1] PV=[remove unlikely:0|1]
 -ncep_norm       out   X      normalize NCEP-type ave/acc X=output grib file
 -ncep_uv         out   X      combine U and V fields into one message like NCEP operations
 -netcdf          out   X      write netcdf data to X
 -new_grid        out   X..Z,A bilinear interpolate: X=projection Y=x0:nx:dx Z=y0:ny:dy A=grib_file alpha
 -reduced_gaussian_grid out   X Y Z  reduced Gaussian grid, X=outputfile Y=-1 Z=(neighbor|linear)[-extrapolate]
 -small_grib      out   X Y Z  make small domain grib file X=lonW:lonE Y=latS:latN Z=file
 -spread          out   X      write text - spread sheet format into X (WxText enabled)
 -submsg_uv       out   X      combine vector fields into one message
 -text            out   X      write text data into X
 -time_processing out   X..Z,A average X=CodeTable 4.10 Y=CodeTable 4.11 Z=time step A=output
 -tosubmsg        out   X      convert GRIB message to submessage and write to file X
 -wind_dir        out   X      calculate wind direction, X = output gribfile (direction in degrees, 0=wind from north, 90=wind from east)
 -wind_speed      out   X      calculate wind speed, X = output gribfile (U then V in datafile)
 -wind_uv         out   X      calculate UGRD/VGRD from speed/dir, X = output gribfile
 -alarm           init  X      terminate after X seconds
 -append          init         append mode, write to existing output files
 -crlf            init         make the end of the inventory a crlf (windows) instead of newline (unix)
 -d               init  X      dump message X (n or n.m), only 1 -d allowed
 -egrep           init  X      egrep X | wgrib2 (X is POSIX regular expression)
 -egrep_v         init  X      egrep -v X | wgrib2 (X is POSIX regular expression)
 -eof_bin         init  X Y    send (binary) integer to file upon EOF: X=file Y=integer
 -eof_string      init  X Y    send string to file upon EOF: X=file Y=string
 -err_bin         init  X Y    send (binary) integer to file upon err exit: X=file Y=integer
 -err_string      init  X Y    send string to file upon err exit: X=file Y=string
 -fgrep           init  X      fgrep X | wgrib2
 -fgrep_v         init  X      fgrep -v X | wgrib2
 -fix_ncep_2      init         ncep bug fix 2, probability observation < -ve number
 -fix_ncep_3      init         sets flag to fix ncep bug 3 (constant fields)
 -fix_ncep_4      init         fixes NCEP grib2 files where DX and DY are undefined
 -for             init  X      process record numbers in range, X=(start:end:step), only one -for allowed
 -for_n           init  X      process inv numbers in range, X=(start:end:step), only one -for allowed
 -g2clib          init  X      X=0/1/2 0=WMO std 1=emulate g2clib 2=use g2clib
 -i               init         read Inventory from stdin
 -i_file          init  X      read Inventory from file
 -inv             init  X      write inventory to X
 -match           init  X      process data that matches X (POSIX regular expression)
 -match_fs        init  X      process data that matches X (fixed string)
 -match_inv_add   init  X Y Z  add new options to match_inventory
 -nc_grads        init         require netcdf file to be grads v1.9b4 compatible (fixed time step only)
 -nc_nlev         init  X      netcdf, X = max LEV dimension for {TIME,LEV,LAT,LON} data
 -nc_pack         init  X      pack/check limits of all NEW input variables, X=min:max[:byte|short|float]
 -nc_table        init  X      X is conversion_to_netcdf_table file name
 -nc_time         init  X      netcdf, [[-]yyyymmddhhnnss]:[dt{s[ec]|m[in]|h[our]|d[ay]}], [-] is for time alignment only
 -nc3             init         use netcdf3 (classic)
 -nc4             init         use netcdf4 (compressed, controlled endianness etc)
 -ncpu            init  X      number of threads, default is environment variable OMP_NUM_THREADS/number of cpus
 -no_append       init         not append mode, write to new output files (default)
 -no_nc_grads     init         netcdf file may be not grads v1.9b4 compatible, variable time step
 -no_nc_pack      init         no packing in netcdf for NEW variables
 -no_nc_table     init         disable previously defined conversion_to_netcdf_table
 -no_nc_time      init         netcdf, disable previously defined initial or relative date and time step
 -not             init  X      process data that does not match X (POSIX regular expression)
 -not_fs          init  X      process data that does not match X (fixed string)
 -one_line        init         puts all on one line (makes into inventory format)
 -order           init  X      decoded data in X (raw|we:sn|we:ns) order, we:sn is default
 -persistent      init  X      makes file X persistent if already opened (default on open), CW2
 -rewind_init     init  X      rewinds file X on initialization if already opened, CW2
 -set_ext_name    init  X      X=0/1 extended name on/off
 -set_regex       init  X      set regex mode X = 0:extended regex (default) 1:pattern 2:extended regex & quote metacharacters
 -set_version_ftime init  X      set version of ftime X=1, 2
 -tigge           init         use modified-TIGGE grib table
 -transient       init  X      make file X transient, CW2

以上为wgrib2的使用说明

Inventory/diagnostic-output selections
   -s/-v                   short/verbose inventory
   -V                      diagnostic output (not inventory)
   (none)                  regular inventory
 Options
   -PDS/-PDS10             print PDS in hex/decimal
   -GDS/-GDS10             print GDS in hex/decimal
   -verf                   print forecast verification time
   -ncep_opn/-ncep_rean    default T62 NCEP grib table
   -4yr                    print year using 4 digits
   -min                    print minutes
   -ncep_ens               ensemble info encoded in ncep format
Decoding GRIB selection
   -d [record number|all]  decode record number
   -p [byte position]      decode record at byte position
   -i                      decode controlled by stdin (inventory list)
   (none)                  no decoding
 Options
   -text/-ieee/-grib/-bin  convert to text/ieee/grib/bin (default)
   -nh/-h                  output will have no headers/headers (default)
   -dwdgrib                output dwd headers, grib (do not append)
   -H                      output will include PDS and GDS (-bin/-ieee only)
   -append                 append to output file
   -o [file]               output file name, 'dump' is default
 Misc
   -cmc [file]             use NCEP tables for CMC (dangerous)

以上为wgrib的使用说明

wgrib和wgrib2大部分语句是通用的,有部分不一样,使用的时候请注意。

wgrib2 D:\\data.grib -v0

使用 -v0命令查看数据目录
windows下wgrib/wgrib2和python读取grib2数据_第9张图片
拿到该数据时不确定里面有什么数据,通过 -v命令查看目录可以看到有一个表示属性的字段“SOIL_M”,土壤湿度,于是新建一个csv文件以SOIL_M作为字段名,使用 -match命令进行匹配
windows下wgrib/wgrib2和python读取grib2数据_第10张图片
输入SOIL_M并保存为csv格式

wgrib2 D:\\data.grib -match ':SOIL_M' -csv D:\\abc.csv

使用 -match命令进行匹配, -csv命令将grib数据写入csv
注意wgrib没有 -csv命令,无法将数据直接写入csv
windows下wgrib/wgrib2和python读取grib2数据_第11张图片
与SOIL_M匹配的数据就被写入csv文件了
如果有其他属性也可以匹配其他属性,如TMP温度

因为不知道怎么读表头,所以猜测前两列为时间,第三列表示土壤湿度,第四列表示测量说明,第五、六列为经纬度,第七列为土壤湿度。

4.2使用python调用os.system读取数据

import os

def re():

    #转到wgrib2工具目录
    os.chdir("D:\\wgrib2")
    
    #读取目录
    os.system("wgrib2 D:\\data.grib -v")
    
    #匹配SOIL_M
    os.system("wgrib2 D:\\data.grib -match ':SOIL_M' -csv D:\\abc.csv")
   

    return None

if __name__ == "__main__":
    re()

你可能感兴趣的:(python,windows)