В настоящее время я работаю над проектом мобильного приложения, которое может отображать прогноз погоды на карте (например, PocketGrib). Я решил использовать файлы GRIB, но я не знаю, как их декодировать. Я нашел библиотеку JGRIB, чтобы открыть ее, но я еще не понял, как ее использовать. Лучшим способом для меня было бы преобразовать данные GRIB в txt и проанализировать его дальше, чтобы получить необходимые значения.
У кого-нибудь есть опыт? Любые советы приветствуются. Извините за моего бедного английского.
Можно использовать библиотеку NetCDF-java для открытия файлов GRIB: https://www.unidata.ucar.edu/software/thredds/current/netcdf-java/documentation.htm
Хорошо, я сделал что-то, используя NetCDF. Для моего использования это кажется достаточно. Конечно, для каждой решетки переменные будут разными.
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();
}