2015-03-24 101 views
1

我目前正在开发一个可以在地图上显示天气预报的移动应用程序项目(例如PocketGrib)。我决定使用GRIB文件,但我不知道如何解码它们。我发现一个库JGRIB打开这些,但我还没有弄清楚如何使用它。对我来说最好的办法是将GRIB数据转换为txt,并以我的方式进一步解析以获得所需的值。Java GRIB文件打开器

有没有人有经验呢?任何提示都表示赞赏。对不起,我英文很差。

+1

你有没有看过API? – Alexander 2015-03-25 00:06:36

+0

什么API?我还没有找到。 – 2015-05-04 20:49:54

+0

有像http://data.planetos.com/datasets/noaa_gfs_global_sflux_0.12d这样的服务提供天气模型的API-s,你有没有考虑过? – kakk11 2016-11-29 20:40:12

回答

1

好,我使用的NetCDF做什么。对于我的用法来说,似乎就够了。当然对于每个grib变量都会有所不同。

try { 
      NetcdfFile ncf = NetcdfFile.open("gribfilename.grb"); //loading grib file 
      System.out.println("Variable names are:"); 
      List<Variable> vars = ncf.getVariables(); //listing variables 
      for (Variable var : vars) { 
      System.out.println(var.getName()); 
      } 

      Variable Uwind = ncf.findVariable("u-component_of_wind_height_above_ground"); 
      Variable Vwind = ncf.findVariable("v-component_of_wind_height_above_ground"); 
      Variable lat = ncf.findVariable("lat"); 
      Variable lon = ncf.findVariable("lon"); 
      Variable time = ncf.findVariable("time"); 
      Variable reftime = ncf.findVariable("reftime"); 
      Variable reftime_ISO = ncf.findVariable("reftime_ISO"); 
      Variable height_above_ground = ncf.findVariable("height_above_ground"); 
      Variable height_above_ground1 = ncf.findVariable("height_above_ground1"); 
      Variable Temperature_height_above_ground = ncf.findVariable("Temperature_height_above_ground"); 
      Variable Pressure_reduced_to_MSL_msl = ncf.findVariable("Pressure_reduced_to_MSL_msl"); 



      Array u_data = Uwind.read(); //reading variables to Array type 
      Array v_data = Vwind.read(); 
      Array lat_data = lat.read(); 
      Array lon_data = lon.read(); 
      Array time_data = time.read(); 
      Array reftime_data = reftime.read(); 
      Array reftime_ISO_data = reftime_ISO.read(); 
      Array height_above_ground_data = height_above_ground.read(); 
      Array height_above_ground1_data = height_above_ground1.read(); 
      Array Temperature_height_above_ground_data = Temperature_height_above_ground.read(); 
      Array Pressure_reduced_to_MSL_msl_data = Pressure_reduced_to_MSL_msl.read(); 

      ncf.close(); 


    } 
    catch (Exception exc) { 
     exc.printStackTrace(); 
    }