Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

To set new values:

Code Block
languagec
linenumberstrue
double values[] = {10.223, 11.244, 9.3708, 8223.1};
size_t values_size = 4;
long decimalPrecision = 2;
codes_set_long(h, "decimalPrecision", decimalPrecision);
codes_set_values(h, "values", values, values_size);

/* bitsPerValue is now automatically calculated */
// long bitsPerValue;
// codes_get_long(h, "bitsPerValue", &bitsPerValue);

To repack existing values:

Code Block
languagec
linenumberstrue
long decimalPrecision = 2;
codes_set_long(h, "setDecimalPrecision", decimalPrecision);

/* bitsPerValue is now automatically recalculated */
// long bitsPerValue;
// codes_get_long(h, "bitsPerValue", &bitsPerValue);

...

Code Block
linenumberstrue
# Set 4 data values and pack with 2 decimal digits of precision
set Ni = 2;
set Nj = 2;
set decimalPrecision = 3;
set values = { 2.7047, 2.8053, 2.9012, 3.1109 };
write "out_set_values.grib";

Run it:

Code Block
languagebash
linenumberstrue
grib_filter set_values.filter input.grib

...

Code Block
linenumberstrue
# Repack the existing data with 1 decimal digit of precision
print "Before: [bitsPerValue=]";
set setDecimalPrecision = 1;
print "After: [bitsPerValue=]";
write "out_repacked.grib";

Run it:

Code Block
languagebash
linenumberstrue
grib_filter repack.filter input.grib

...