From deddf97a24e4b8b56593f88da2eb7850a284c9e9 Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Fri, 20 Sep 2024 16:58:07 -0600 Subject: [PATCH] Per #2880, not working quite right yet but this is progress --- src/libcode/vx_nc_obs/met_point_data.cc | 8 +++++++- src/libcode/vx_nc_obs/met_point_data.h | 1 + src/tools/other/point2grid/point2grid.cc | 11 ++++++++++- src/tools/other/point2grid/point2grid_conf_info.cc | 4 ++-- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/libcode/vx_nc_obs/met_point_data.cc b/src/libcode/vx_nc_obs/met_point_data.cc index 220e7f86cf..bb6bf30e38 100644 --- a/src/libcode/vx_nc_obs/met_point_data.cc +++ b/src/libcode/vx_nc_obs/met_point_data.cc @@ -249,7 +249,7 @@ void MetPointObsData::assign(MetPointObsData &o) { } } var_names = o.var_names; - qty_names = o.var_names; + qty_names = o.qty_names; } /////////////////////////////////////////////////////////////////////////////// @@ -338,6 +338,12 @@ float MetPointObsData::get_obs_val(int index) { /////////////////////////////////////////////////////////////////////////////// +string MetPointObsData::get_obs_qty(int index) { + return qty_names[(obs_qids[index])]; +} + +/////////////////////////////////////////////////////////////////////////////// + // struct MetPointHeader MetPointHeader::MetPointHeader() diff --git a/src/libcode/vx_nc_obs/met_point_data.h b/src/libcode/vx_nc_obs/met_point_data.h index 939c63ba35..b4e61635aa 100644 --- a/src/libcode/vx_nc_obs/met_point_data.h +++ b/src/libcode/vx_nc_obs/met_point_data.h @@ -79,6 +79,7 @@ struct MetPointObsData { void clear_strings(); bool fill_obs_buf(int buf_size, int offset, float *obs_arr, int *qty_idx_arr); float get_obs_val(int index); + std::string get_obs_qty(int index); }; diff --git a/src/tools/other/point2grid/point2grid.cc b/src/tools/other/point2grid/point2grid.cc index 7e3fdc5bdb..fb2a93999f 100644 --- a/src/tools/other/point2grid/point2grid.cc +++ b/src/tools/other/point2grid/point2grid.cc @@ -954,12 +954,21 @@ void process_point_met_data(MetPointData *met_point_obs, MetConfig &config, VarI continue; } - // Filter by QC flag + // Filter by QC flag (-qc command line option) if (has_qc_flags && !qc_idx_array.has(obs_data->obs_qids[idx])) { filtered_by_qc++; continue; } + // Filter by QC inclusion/exclusion lists (obs_quality_inc/exc config option) + if ((conf_info.obs_qty_inc.n() > 0 && + !conf_info.obs_qty_inc.has(obs_data->get_obs_qty(idx))) || + (conf_info.obs_qty_exc.n() > 0 && + conf_info.obs_qty_exc.has(obs_data->get_obs_qty(idx)))) { + filtered_by_qc++; + continue; + } + var_index_array.add(idx); var_count++; if (is_eq(obs_data->obs_vals[idx], (float)0.)) obs_count_zero_from++; diff --git a/src/tools/other/point2grid/point2grid_conf_info.cc b/src/tools/other/point2grid/point2grid_conf_info.cc index 9ccc255a73..b05ae88a36 100644 --- a/src/tools/other/point2grid/point2grid_conf_info.cc +++ b/src/tools/other/point2grid/point2grid_conf_info.cc @@ -110,10 +110,10 @@ void PointToGridConfInfo::process_config() { var_name_map = parse_conf_key_value_map(&conf, conf_key_var_name_map); // Conf: obs_quality_inc - obs_quality_inc = parse_conf_obs_qty_inc(&conf); + obs_qty_inc = parse_conf_obs_qty_inc(&conf); // Conf: obs_quality_exc - obs_quality_exc = parse_conf_obs_qty_exc(&conf); + obs_qty_exc = parse_conf_obs_qty_exc(&conf); return; }