From 17a3a3fa72e96f2bf0f9d9174bb9725a358cc164 Mon Sep 17 00:00:00 2001 From: Howard Soh Date: Tue, 14 Sep 2021 13:08:30 -0600 Subject: [PATCH 1/2] #1894 Added station ID 14008 to pb2nc_NDAS_var_all unit test --- test/xml/unit_pb2nc.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/xml/unit_pb2nc.xml b/test/xml/unit_pb2nc.xml index 0366d902f9..3c7c6175fb 100644 --- a/test/xml/unit_pb2nc.xml +++ b/test/xml/unit_pb2nc.xml @@ -153,7 +153,7 @@ &MET_BIN;/pb2nc - STATION_ID "72364","72265","72274","72426","72489" + STATION_ID "72364","72265","72274","72426","72489","14008" MASK_GRID MASK_POLY QUALITY_MARK_THRESH 2 From 936209473ea4d0abd329480d57a8c89bff2ca2d6 Mon Sep 17 00:00:00 2001 From: Howard Soh Date: Tue, 14 Sep 2021 13:09:44 -0600 Subject: [PATCH 2/2] #1894 Check the existance of the valid data up to 16 levels --- met/src/tools/other/pb2nc/pb2nc.cc | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/met/src/tools/other/pb2nc/pb2nc.cc b/met/src/tools/other/pb2nc/pb2nc.cc index 588e3a62e7..7510da204e 100644 --- a/met/src/tools/other/pb2nc/pb2nc.cc +++ b/met/src/tools/other/pb2nc/pb2nc.cc @@ -130,8 +130,7 @@ static const int mxr8vt = 6; static const int mxr8nm = 8; // Maximum number of BUFR variable types -// Length of the "YYYYMMDD_HHMMSS" string -static const int COUNT_THRESHOLD = 5; +static const int COUNT_THRESHOLD = 16; // File unit number for opening the PrepBufr file static const int file_unit = 11; @@ -1997,7 +1996,7 @@ void process_pbfile_metadata(int i_pb) { int lv, var_index; int debug_threshold = 10; - int tmp_nlev_max_req = mxr8lv_small; + int nlev_max_req; bool check_all = do_all_vars || collect_metadata; char hdr_typ[max_str_len]; StringArray tmp_bufr_obs_name_arr; @@ -2103,6 +2102,8 @@ void process_pbfile_metadata(int i_pb) { int length; bool is_prepbufr_hdr = false; bool showed_progress = false; + + nlev_max_req = (mxr8lv_small > COUNT_THRESHOLD) ? COUNT_THRESHOLD : mxr8lv_small; // Loop through the PrepBufr messages from the input file for(i_read=0; i_read=0; vIdx--) { - int nlev2, buf_nlev; + int nlev2, count; bool has_valid_data; ConcatString var_name = unchecked_var_list[vIdx]; int var_name_len = var_name.length(); - readpbint_(&unit, &i_ret, &nlev2, bufr_obs, (char*)var_name.c_str(), &var_name_len, &tmp_nlev_max_req); + readpbint_(&unit, &i_ret, &nlev2, bufr_obs, (char*)var_name.c_str(), &var_name_len, &nlev_max_req); if (0 >= nlev2) continue; - // Checks the first level intread of searching through the vertical levels - lv = 0; - has_valid_data = (bufr_obs[lv][0] < r8bfms); + // Search through the vertical levels + has_valid_data = false; + for(lv=0; lv