ECC-1134: BUFR indexing (still experimental)

This commit is contained in:
Shahram Najm 2021-10-12 12:18:37 +01:00
parent 9c729e39e6
commit ccd3bca790
3 changed files with 50 additions and 1 deletions

View File

@ -1793,7 +1793,8 @@ int grib_index_dump_file(FILE* fout, const char* filename)
f = file;
while (f) {
grib_file* prev = f;
fprintf(fout, "GRIB File: %s\n", f->name);
fprintf(fout, "%s File: %s\n",
index->product_kind == PRODUCT_GRIB ? "GRIB" : "BUFR", f->name);
grib_context_free(c, f->name);
f = f->next;
grib_context_free(c, prev);

View File

@ -134,6 +134,7 @@ if( HAVE_BUILD_TOOLS )
bufr_filter_extract_datetime
bufr_filter_extract_area
bufr_filter_unpack_pack
bufr_indexing
bufr_json_data
bufr_ls
bufr_ls_json

47
tests/bufr_indexing.sh Executable file
View File

@ -0,0 +1,47 @@
#!/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.
#
. ./include.sh
label="bufr_indexing"
tempIndex=temp.$label.$$.idx
tempOut=temp.$label.$$.out
tempRef=temp.$label.$$.ref
# ------------------
# Data Section key
# ------------------
infile=${data_dir}/bufr/tropical_cyclone.bufr
${tools_dir}/bufr_index_build -N -o $tempIndex -k stormIdentifier ${infile}
# Must remove first line (filename specifics)
${tools_dir}/bufr_dump ${tempIndex} | sed '1d' > $tempOut
cat > $tempRef <<EOF
Index keys:
key name = stormIdentifier
values = 27W, 70E, 71W
Index count = 3
]}
EOF
diff $tempRef $tempOut
# ------------------
# Header MARS key
# ------------------
infile=${data_dir}/bufr/syno_multi.bufr
${tools_dir}/bufr_index_build -k mars.ident -o $tempIndex $infile |\
grep -q "mars.ident = { 01001, 01003, 01007 }"
# Clean up
rm -f $tempIndex $tempOut $tempRef