From 3a144a0d924f67712e2c50a43ade8caf45a9b875 Mon Sep 17 00:00:00 2001 From: Sylvie Lamy-Thepaut Date: Fri, 16 Sep 2022 15:07:17 +0100 Subject: [PATCH] Magics: Fixing NetcdfXYpoints to better deal with missing data. --- src/decoders/NetcdfGeopointsInterpretor.cc | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/decoders/NetcdfGeopointsInterpretor.cc b/src/decoders/NetcdfGeopointsInterpretor.cc index dcdf4877..ce810718 100644 --- a/src/decoders/NetcdfGeopointsInterpretor.cc +++ b/src/decoders/NetcdfGeopointsInterpretor.cc @@ -64,9 +64,14 @@ bool NetcdfGeopointsInterpretor::interpretAsPoints(PointsList& list, const Trans netcdf.get(field_, values, first, last); setDim(netcdf, longitude_, longitudes, first, last); setDim(netcdf, latitude_, latitudes, first, last); + double missing = numeric_limits::max(); - double missing = netcdf.getMissing(field_, missing_attribute_); + if (field_.empty() == false) { + netcdf.get(field_, values, first, last); + missing = netcdf.getMissing(field_, missing_attribute_); + } + vector::iterator lat = latitudes.begin(); vector::iterator lon = longitudes.begin(); vector::const_iterator val = values.begin(); @@ -251,16 +256,20 @@ bool NetcdfXYpointsInterpretor::interpretAsPoints(PointsList& list, const Transf vector values; map first, last; setDimensions(dimension_, first, last); + double missing = numeric_limits::max(); if (field_.empty() == false) { netcdf.get(field_, values, first, last); + missing = netcdf.getMissing(field_, missing_attribute_); } setDim(netcdf, x_, xs, first, last); setDim(netcdf, y_, ys, first, last); double xmissing = netcdf.getMissing(x_, missing_attribute_); double ymissing = netcdf.getMissing(y_, missing_attribute_); - double missing = netcdf.getMissing(field_, missing_attribute_); + + + vector::iterator x = xs.begin(); vector::iterator y = ys.begin(); vector::const_iterator val = values.begin(); @@ -305,16 +314,20 @@ bool NetcdfXYpointsInterpretor::interpretAsPoints(PointsList& list, const std::s vector values; map first, last; setDimensions(dimension_, first, last); + double missing = numeric_limits::max(); if (field_.empty() == false) { netcdf.get(field_, values, first, last); + missing = netcdf.getMissing(field_, missing_attribute_); } + + setDim(netcdf, x_, xs, first, last); setDim(netcdf, y_, ys, first, last); double xmissing = netcdf.getMissing(x_, missing_attribute_); double ymissing = netcdf.getMissing(y_, missing_attribute_); - double missing = netcdf.getMissing(field_, missing_attribute_); + baseDateX_ = "";