Reputation: 33
I'm currently working on a project of a mobile application that can show weather forecast on map (e.g. PocketGrib). I decided to use GRIB files but I don't know how to decode them. I found a library JGRIB to open those but I haven't figured out how to use it yet. The best way to me would be to convert GRIB data to txt and parse it further in my way to get needed values.
Does anyone have experience with it? Any tips are appreciated. Sorry for my poor English.
Upvotes: 1
Views: 984
Reputation: 33
Ok, i made something using NetCDF. For my usage it seems to be enough. Of course for each grib variables will be different.
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();
}
Upvotes: 1
Reputation: 5843
It's possible to use the NetCDF-java library to open GRIB files: https://www.unidata.ucar.edu/software/thredds/current/netcdf-java/documentation.htm
Upvotes: 2