diff --git a/src/multio/action/encode/GribEncoder.cc b/src/multio/action/encode/GribEncoder.cc index 87c79f62a..925bf0d8e 100644 --- a/src/multio/action/encode/GribEncoder.cc +++ b/src/multio/action/encode/GribEncoder.cc @@ -277,6 +277,16 @@ void setSoilLayerTypeOfLevel(GribEncoder& g, const std::string& typeOfLevel, lon g.setValue("scaledValueOfSecondFixedSurface", level); } +void setMissingFixedSurface(GribEncoder& g, const std::string& typeOfLevel, long level) { + g.setValue("typeOfLevel", typeOfLevel); + + g.setMissing(glossary().scaleFactorOfFirstFixedSurface); + g.setMissing(glossary().scaledValueOfFirstFixedSurface); + g.setMissing(glossary().scaleFactorOfSecondFixedSurface); + g.setMissing(glossary().scaledValueOfSecondFixedSurface); + +} + using TypeOfLevelSetter = std::function; const std::map typeOfLevelSetters{ @@ -287,9 +297,9 @@ const std::map typeOfLevelSetters{ {"lowCloudLayer", &setLevelUnrelatedTypeOfLevel}, {"highCloudLayer", &setLevelUnrelatedTypeOfLevel}, {"meanSea", &setLevelUnrelatedTypeOfLevel}, + {"iceLayerOnWater", &setMissingFixedSurface}, }; - template QueriedMarsKeys setMarsKeys(GribEncoder& g, const Dict& md) { QueriedMarsKeys ret; @@ -849,6 +859,7 @@ void GribEncoder::setOceanMetadata(message::Metadata& md) { setValue("scaleFactorOfFirstFixedSurface", 0l); } + std::string gridType; const auto searchGridType = md.find(glossary().gridType); if (searchGridType != md.end() && searchGridType->second.get() == "unstructured_grid") {