1

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

有没有人有这方面的经验?任何提示表示赞赏。对不起我的英语不好。

4

2 回答 2

2

可以使用 NetCDF-java 库打开 GRIB 文件:https ://www.unidata.ucar.edu/software/thredds/current/netcdf-java/documentation.htm

于 2015-03-25T17:35:55.323 回答
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();
    }
于 2015-05-07T18:29:33.837 回答