ECC-1150: Deal with encoding a MISSING value

This commit is contained in:
Shahram Najm 2020-10-01 12:20:50 +01:00
parent 4766ba34cb
commit 238bad66ca
2 changed files with 21 additions and 4 deletions

View File

@ -200,6 +200,14 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
return GRIB_SUCCESS; return GRIB_SUCCESS;
} }
if (exact == GRIB_MISSING_DOUBLE) {
if ((ret = grib_set_missing(hand, self->scaleFactor)) != GRIB_SUCCESS)
return ret;
if ((ret = grib_set_missing(hand, self->scaledValue)) != GRIB_SUCCESS)
return ret;
return GRIB_SUCCESS;
}
accessor_factor = grib_find_accessor(hand, self->scaleFactor); accessor_factor = grib_find_accessor(hand, self->scaleFactor);
accessor_value = grib_find_accessor(hand, self->scaledValue); accessor_value = grib_find_accessor(hand, self->scaledValue);
if (!accessor_factor || !accessor_value) { if (!accessor_factor || !accessor_value) {

View File

@ -20,8 +20,8 @@ tempFilt=temp.${label}.filt
in=$ECCODES_SAMPLES_PATH/GRIB2.tmpl in=$ECCODES_SAMPLES_PATH/GRIB2.tmpl
# Lower limit # Decoding: Lower limit
# ------------- # ----------------------
${tools_dir}/grib_set -s \ ${tools_dir}/grib_set -s \
productDefinitionTemplateNumber=5,scaleFactorOfLowerLimit=missing,scaledValueOfLowerLimit=missing \ productDefinitionTemplateNumber=5,scaleFactorOfLowerLimit=missing,scaledValueOfLowerLimit=missing \
$in $tempGrib $in $tempGrib
@ -39,8 +39,8 @@ EOF
${tools_dir}/grib_filter $tempFilt $tempGrib ${tools_dir}/grib_filter $tempFilt $tempGrib
# Try upper limit too # Decoding: upper limit
# -------------------- # -----------------------
${tools_dir}/grib_set -s \ ${tools_dir}/grib_set -s \
productDefinitionTemplateNumber=5,scaleFactorOfUpperLimit=missing,scaledValueOfUpperLimit=missing \ productDefinitionTemplateNumber=5,scaleFactorOfUpperLimit=missing,scaledValueOfUpperLimit=missing \
$in $tempGrib $in $tempGrib
@ -57,6 +57,15 @@ cat > $tempFilt <<EOF
EOF EOF
${tools_dir}/grib_filter $tempFilt $tempGrib ${tools_dir}/grib_filter $tempFilt $tempGrib
# Encoding
# ----------
temp2=temp2.${label}.grib
${tools_dir}/grib_set -s upperLimit=missing,lowerLimit=missing $tempGrib $temp2
grib_check_key_equals $temp2 lowerLimit,upperLimit 'MISSING MISSING'
grib_check_key_equals $temp2 \
scaleFactorOfLowerLimit,scaledValueOfLowerLimit,scaleFactorOfUpperLimit,scaledValueOfUpperLimit \
'MISSING MISSING MISSING MISSING'
rm -f $temp2
# Clean up # Clean up
rm -f $tempGrib $tempFilt rm -f $tempGrib $tempFilt