2020-05-18 17:16:11 +00:00
|
|
|
#!/bin/sh
|
|
|
|
# (C) Copyright 2005- ECMWF.
|
|
|
|
#
|
|
|
|
# This software is licensed under the terms of the Apache Licence Version 2.0
|
|
|
|
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
|
|
|
|
#
|
|
|
|
# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
|
|
|
|
# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
|
|
|
|
#
|
|
|
|
|
2022-04-03 22:02:48 +00:00
|
|
|
. ./include.ctest.sh
|
2020-05-18 17:16:11 +00:00
|
|
|
|
2023-03-06 12:32:21 +00:00
|
|
|
label="grib_proj_string_test"
|
|
|
|
tempGrib=temp.$label.grib
|
|
|
|
tempText=temp.$label.txt
|
|
|
|
grib2_sample=$ECCODES_SAMPLES_PATH/GRIB2.tmpl
|
|
|
|
|
2020-05-18 17:16:11 +00:00
|
|
|
files="
|
|
|
|
mercator.grib2
|
|
|
|
satellite.grib
|
|
|
|
"
|
|
|
|
|
2020-05-21 13:17:59 +00:00
|
|
|
# Decide if we have the proj commandline tool
|
|
|
|
PROJ_NAME="proj"
|
|
|
|
PROJ_TOOL=""
|
|
|
|
if command -v $PROJ_NAME >/dev/null 2>&1; then
|
|
|
|
PROJ_TOOL=$PROJ_NAME
|
|
|
|
fi
|
|
|
|
|
2020-05-18 17:16:11 +00:00
|
|
|
for f in `echo $files`; do
|
|
|
|
file=${data_dir}/$f
|
2020-06-09 14:17:23 +00:00
|
|
|
ps=`${tools_dir}/grib_get -wcount=1 -p projSourceString $file`
|
|
|
|
[ "$ps" = "EPSG:4326" ]
|
|
|
|
ps=`${tools_dir}/grib_get -wcount=1 -p projTargetString $file`
|
2020-05-18 17:16:11 +00:00
|
|
|
# Check length of result is nonzero
|
|
|
|
[ -n "$ps" ]
|
2020-05-18 17:50:38 +00:00
|
|
|
# Check contents (basic)
|
|
|
|
case $ps in
|
|
|
|
*+proj=*) echo OK;;
|
|
|
|
*) echo "File: $file. Invalid proj string: |$ps|"; exit 1;;
|
|
|
|
esac
|
2020-05-21 13:17:59 +00:00
|
|
|
if test "x$PROJ_TOOL" != "x"; then
|
|
|
|
${tools_dir}/grib_get -p longitudeOfFirstGridPointInDegrees,latitudeOfFirstGridPointInDegrees $file |\
|
|
|
|
$PROJ_TOOL $ps
|
|
|
|
fi
|
2020-05-18 17:16:11 +00:00
|
|
|
done
|
2023-03-06 12:32:21 +00:00
|
|
|
|
2023-03-15 21:18:09 +00:00
|
|
|
# Various grid types
|
2023-03-18 15:52:13 +00:00
|
|
|
# ECC-1552: To be done later. Current behaviour is to return KeyNotFound
|
2023-03-28 15:25:54 +00:00
|
|
|
# set +e
|
|
|
|
# ${tools_dir}/grib_get -p projString $grib2_sample > $tempText 2>&1
|
|
|
|
# status=$?
|
|
|
|
# set -e
|
|
|
|
# [ $status -ne 0 ]
|
|
|
|
# grep -q "Key/value not found" $tempText
|
2023-03-18 15:52:13 +00:00
|
|
|
rm -f $tempText
|
|
|
|
|
2023-03-28 15:25:54 +00:00
|
|
|
${tools_dir}/grib_get -p projString $grib2_sample > $tempText
|
|
|
|
grep -q "+proj=longlat +datum=WGS84" $tempText
|
|
|
|
${tools_dir}/grib_get -p projString $ECCODES_SAMPLES_PATH/reduced_gg_pl_32_grib2.tmpl > $tempText
|
|
|
|
grep -q "+proj=longlat +datum=WGS84" $tempText
|
|
|
|
|
2023-03-16 14:49:29 +00:00
|
|
|
# ${tools_dir}/grib_get -p projString $ECCODES_SAMPLES_PATH/regular_ll_pl_grib2.tmpl > $tempText
|
|
|
|
# grep -q "proj=longlat +R=6371229" $tempText
|
|
|
|
# ${tools_dir}/grib_get -p projString $ECCODES_SAMPLES_PATH/regular_gg_ml_grib1.tmpl > $tempText
|
|
|
|
# grep -q "proj=longlat +R=6367470" $tempText
|
|
|
|
# ${tools_dir}/grib_get -p projString $ECCODES_SAMPLES_PATH/reduced_ll_sfc_grib1.tmpl > $tempText
|
|
|
|
# grep -q "proj=longlat +R=6367470" $tempText
|
2023-03-15 21:18:09 +00:00
|
|
|
|
|
|
|
|
2023-03-06 12:32:21 +00:00
|
|
|
${tools_dir}/grib_set -s gridType=lambert_azimuthal_equal_area $grib2_sample $tempGrib
|
|
|
|
${tools_dir}/grib_get -p projString $tempGrib > $tempText
|
|
|
|
grep -q "proj=laea" $tempText
|
|
|
|
|
|
|
|
${tools_dir}/grib_set -s gridType=lambert $grib2_sample $tempGrib
|
|
|
|
${tools_dir}/grib_get -p projString $tempGrib > $tempText
|
|
|
|
grep -q "proj=lcc" $tempText
|
|
|
|
|
|
|
|
${tools_dir}/grib_set -s gridType=polar_stereographic $grib2_sample $tempGrib
|
|
|
|
${tools_dir}/grib_get -p projString $tempGrib > $tempText
|
|
|
|
grep -q "proj=stere" $tempText
|
|
|
|
|
2023-06-26 14:50:25 +00:00
|
|
|
# Test invalid decode
|
|
|
|
set +e
|
|
|
|
${tools_dir}/grib_get -p projString:i $grib2_sample > $tempText 2>&1
|
|
|
|
status=$?
|
|
|
|
set -e
|
|
|
|
[ $status -ne 0 ]
|
2023-08-22 13:53:11 +00:00
|
|
|
grep -q "ERROR.*Cannot unpack.*projTargetString.* as long" $tempText
|
2023-06-26 14:50:25 +00:00
|
|
|
grep -q "Hint: Try unpacking as string" $tempText
|
2023-03-06 12:32:21 +00:00
|
|
|
|
2023-06-26 14:50:25 +00:00
|
|
|
set +e
|
|
|
|
${tools_dir}/grib_get -p projString:d $grib2_sample > $tempText 2>&1
|
|
|
|
status=$?
|
|
|
|
set -e
|
|
|
|
[ $status -ne 0 ]
|
2023-08-22 13:53:11 +00:00
|
|
|
grep -q "ERROR.*Cannot unpack.*projTargetString.* as double" $tempText
|
2023-06-26 14:50:25 +00:00
|
|
|
grep -q "Hint: Try unpacking as string" $tempText
|
|
|
|
|
|
|
|
|
|
|
|
# Clean up
|
2023-03-06 12:32:21 +00:00
|
|
|
rm -f $tempGrib $tempText
|