1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
# (C) Copyright 2005- ECMWF.
# moved here to allow different bitsPerValue in second order packing
unsigned[1] bitsPerValue : dump ;
alias numberOfBitsContainingEachPackedValue = bitsPerValue;
alias accuracy = bitsPerValue;
constant constantFieldHalfByte=8;
# For grib1 -> grib2
#constant dataRepresentationTemplateNumber = 0;
position offsetBeforeData;
if( bitmapPresent || !GDSPresent ) {
# For grib1 -> grib2
constant bitMapIndicator = 0;
meta codedValues data_g1simple_packing(
#simple_packing args
section4Length,
offsetBeforeData,
offsetSection4,
unitsFactor,
unitsBias,
changingPrecision,
numberOfCodedValues,
bitsPerValue,
referenceValue,
binaryScaleFactor,
decimalScaleFactor,
optimizeScaleFactor,
#g1simple_packing args
halfByte,
packingType,
grid_ieee,precision
) : read_only;
meta values data_apply_bitmap(codedValues,bitmap,missingValue,binaryScaleFactor) : dump;
alias data.packedValues = codedValues;
} else {
# For grib1 -> grib2
constant bitMapIndicator = 255;
meta values data_g1simple_packing(
section4Length,
offsetBeforeData,
offsetSection4,
unitsFactor,
unitsBias,
changingPrecision,
numberOfCodedValues,
bitsPerValue,
referenceValue,
binaryScaleFactor,
decimalScaleFactor,
optimizeScaleFactor,
halfByte,
packingType,
grid_ieee,precision
) : dump;
alias data.packedValues = values;
}
meta numberOfCodedValues number_of_coded_values(bitsPerValue,offsetBeforeData,offsetAfterData,halfByte,numberOfValues) : dump;
meta packingError simple_packing_error(bitsPerValue,binaryScaleFactor,decimalScaleFactor,referenceValue,ibm) : no_copy;
meta unpackedError simple_packing_error(zero,binaryScaleFactor,decimalScaleFactor,referenceValue,ieee) : no_copy;
template statistics "common/statistics_grid.def";
template missing_values "common/missing_values_grid.def";
|