mirror of https://github.com/ecmwf/eccodes.git
ECC-802: Problem with various packing types
This commit is contained in:
parent
8a05412b73
commit
6bf7f93712
|
@ -479,7 +479,12 @@ static int pack_double(grib_accessor* a, const double* cval, size_t* len)
|
||||||
"grib_accessor_class_data_jpeg2000_packing pack_double: width=%ld height=%ld len=%ld."
|
"grib_accessor_class_data_jpeg2000_packing pack_double: width=%ld height=%ld len=%ld."
|
||||||
" width*height should equal len!",
|
" width*height should equal len!",
|
||||||
(long)width, (long)height, (long)*len);
|
(long)width, (long)height, (long)*len);
|
||||||
return GRIB_INTERNAL_ERROR;
|
/* ECC-802: We cannot bomb out here as the user might have changed Ni/Nj and the packingType
|
||||||
|
* but has not yet submitted the new data values. So len will be out of sync!
|
||||||
|
* So issue a warning but proceed.
|
||||||
|
*/
|
||||||
|
/*return GRIB_INTERNAL_ERROR;*/
|
||||||
|
return GRIB_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (type_of_compression_used) {
|
switch (type_of_compression_used) {
|
||||||
|
|
|
@ -503,8 +503,15 @@ static int pack_double(grib_accessor* a, const double* val, size_t* len)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (width * height != *len) {
|
if (width * height != *len) {
|
||||||
fprintf(stderr, "width=%ld height=%ld len=%ld\n", (long)width, (long)height, (long)(*len));
|
grib_context_log(a->context, GRIB_LOG_ERROR,
|
||||||
Assert(width * height == *len);
|
"grib_accessor_class_data_png_packing pack_double: width=%ld height=%ld len=%ld."
|
||||||
|
" width*height should equal len!",
|
||||||
|
(long)width, (long)height, (long)*len);
|
||||||
|
/* ECC-802: We cannot bomb out here as the user might have changed Ni/Nj and the packingType
|
||||||
|
* but has not yet submitted the new data values. So len will be out of sync!
|
||||||
|
* So issue a warning but proceed.
|
||||||
|
*/
|
||||||
|
return GRIB_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
d = grib_power(decimal_scale_factor, 10);
|
d = grib_power(decimal_scale_factor, 10);
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
|
|
||||||
. ./include.ctest.sh
|
. ./include.ctest.sh
|
||||||
|
|
||||||
|
label="grib_jpeg_test"
|
||||||
|
|
||||||
REDIRECT=/dev/null
|
REDIRECT=/dev/null
|
||||||
|
|
||||||
BLACKLIST="totalLength,section5Length,section7Length,dataRepresentationTemplateNumber,typeOfPacking"
|
BLACKLIST="totalLength,section5Length,section7Length,dataRepresentationTemplateNumber,typeOfPacking"
|
||||||
|
@ -102,3 +104,24 @@ if [ "x$HAVE_LIBOPENJPEG" != x ]; then
|
||||||
do_tests
|
do_tests
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# ECC-802
|
||||||
|
# -------
|
||||||
|
sample2=$ECCODES_SAMPLES_PATH/GRIB2.tmpl
|
||||||
|
tempFilt=temp.$label.filt
|
||||||
|
tempGrib=temp.$label.grib
|
||||||
|
cat > $tempFilt <<EOF
|
||||||
|
set Ni = 2;
|
||||||
|
set Nj = 2;
|
||||||
|
set bitsPerValue = 12;
|
||||||
|
set packingType = 'grid_jpeg';
|
||||||
|
set values = {-0.01, 11.99, 56.11, 98.99 };
|
||||||
|
write;
|
||||||
|
EOF
|
||||||
|
${tools_dir}/grib_filter -o $tempGrib $tempFilt $sample2 2>/dev/null
|
||||||
|
grib_check_key_equals $tempGrib 'packingType,numberOfValues' 'grid_jpeg 4'
|
||||||
|
stats=`${tools_dir}/grib_get -M -F%.2f -p min,max $tempGrib`
|
||||||
|
[ "$stats" = "-0.01 98.99" ]
|
||||||
|
|
||||||
|
|
||||||
|
rm -f $tempFilt $tempGrib
|
||||||
|
|
Loading…
Reference in New Issue