From c1280c05aa3acfefce92561a8c7ddb37985044ba Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Thu, 4 Jan 2024 23:00:55 -0600 Subject: [PATCH] Get data level code and value from level 3 radial data, stubs for raster and level 2 --- .../scwx/qt/view/level2_product_view.cpp | 15 ++++++ .../scwx/qt/view/level2_product_view.hpp | 4 ++ .../scwx/qt/view/level3_radial_view.cpp | 47 +++++++++++++++++++ .../scwx/qt/view/level3_radial_view.hpp | 4 ++ .../scwx/qt/view/level3_raster_view.cpp | 15 ++++++ .../scwx/qt/view/level3_raster_view.hpp | 4 ++ .../scwx/qt/view/radar_product_view.hpp | 6 +++ 7 files changed, 95 insertions(+) diff --git a/scwx-qt/source/scwx/qt/view/level2_product_view.cpp b/scwx-qt/source/scwx/qt/view/level2_product_view.cpp index 0da646fb..29c23d76 100644 --- a/scwx-qt/source/scwx/qt/view/level2_product_view.cpp +++ b/scwx-qt/source/scwx/qt/view/level2_product_view.cpp @@ -782,6 +782,21 @@ Level2ProductView::GetBinLevel(const common::Coordinate& coordinate) const return std::nullopt; } +std::optional +Level2ProductView::GetDataLevelCode(std::uint16_t level) const +{ + // TODO + Q_UNUSED(level); + return std::nullopt; +} + +std::optional Level2ProductView::GetDataValue(std::uint16_t level) const +{ + // TODO + Q_UNUSED(level); + return std::nullopt; +} + std::shared_ptr Level2ProductView::Create( common::Level2Product product, std::shared_ptr radarProductManager) diff --git a/scwx-qt/source/scwx/qt/view/level2_product_view.hpp b/scwx-qt/source/scwx/qt/view/level2_product_view.hpp index d0c9423d..1e23f5fd 100644 --- a/scwx-qt/source/scwx/qt/view/level2_product_view.hpp +++ b/scwx-qt/source/scwx/qt/view/level2_product_view.hpp @@ -47,8 +47,12 @@ public: GetMomentData() const override; std::tuple GetCfpMomentData() const override; + std::optional GetBinLevel(const common::Coordinate& coordinate) const override; + std::optional + GetDataLevelCode(std::uint16_t level) const override; + std::optional GetDataValue(std::uint16_t level) const override; static std::shared_ptr Create(common::Level2Product product, diff --git a/scwx-qt/source/scwx/qt/view/level3_radial_view.cpp b/scwx-qt/source/scwx/qt/view/level3_radial_view.cpp index aa6a322f..964f2d8e 100644 --- a/scwx-qt/source/scwx/qt/view/level3_radial_view.cpp +++ b/scwx-qt/source/scwx/qt/view/level3_radial_view.cpp @@ -605,6 +605,53 @@ Level3RadialView::GetBinLevel(const common::Coordinate& coordinate) const return level; } +std::optional +Level3RadialView::GetDataLevelCode(std::uint16_t level) const +{ + if (level > std::numeric_limits::max()) + { + return std::nullopt; + } + + auto gpm = graphic_product_message(); + if (gpm == nullptr) + { + return std::nullopt; + } + + std::shared_ptr descriptionBlock = + gpm->description_block(); + if (descriptionBlock == nullptr) + { + return std::nullopt; + } + + return descriptionBlock->data_level_code(static_cast(level)); +} + +std::optional Level3RadialView::GetDataValue(std::uint16_t level) const +{ + if (level > std::numeric_limits::max()) + { + return std::nullopt; + } + + auto gpm = graphic_product_message(); + if (gpm == nullptr) + { + return std::nullopt; + } + + std::shared_ptr descriptionBlock = + gpm->description_block(); + if (descriptionBlock == nullptr) + { + return std::nullopt; + } + + return descriptionBlock->data_value(static_cast(level)); +} + std::shared_ptr Level3RadialView::Create( const std::string& product, std::shared_ptr radarProductManager) diff --git a/scwx-qt/source/scwx/qt/view/level3_radial_view.hpp b/scwx-qt/source/scwx/qt/view/level3_radial_view.hpp index 7f5f488c..b7b8e4d1 100644 --- a/scwx-qt/source/scwx/qt/view/level3_radial_view.hpp +++ b/scwx-qt/source/scwx/qt/view/level3_radial_view.hpp @@ -30,8 +30,12 @@ public: std::tuple GetMomentData() const override; + std::optional GetBinLevel(const common::Coordinate& coordinate) const override; + std::optional + GetDataLevelCode(std::uint16_t level) const override; + std::optional GetDataValue(std::uint16_t level) const override; static std::shared_ptr Create(const std::string& product, diff --git a/scwx-qt/source/scwx/qt/view/level3_raster_view.cpp b/scwx-qt/source/scwx/qt/view/level3_raster_view.cpp index 9c55f2b8..11c2d2ac 100644 --- a/scwx-qt/source/scwx/qt/view/level3_raster_view.cpp +++ b/scwx-qt/source/scwx/qt/view/level3_raster_view.cpp @@ -360,6 +360,21 @@ Level3RasterView::GetBinLevel(const common::Coordinate& coordinate) const return std::nullopt; } +std::optional +Level3RasterView::GetDataLevelCode(std::uint16_t level) const +{ + // TODO + Q_UNUSED(level); + return std::nullopt; +} + +std::optional Level3RasterView::GetDataValue(std::uint16_t level) const +{ + // TODO + Q_UNUSED(level); + return std::nullopt; +} + std::shared_ptr Level3RasterView::Create( const std::string& product, std::shared_ptr radarProductManager) diff --git a/scwx-qt/source/scwx/qt/view/level3_raster_view.hpp b/scwx-qt/source/scwx/qt/view/level3_raster_view.hpp index 0f3cd14e..7bb062ed 100644 --- a/scwx-qt/source/scwx/qt/view/level3_raster_view.hpp +++ b/scwx-qt/source/scwx/qt/view/level3_raster_view.hpp @@ -32,8 +32,12 @@ public: std::tuple GetMomentData() const override; + std::optional GetBinLevel(const common::Coordinate& coordinate) const override; + std::optional + GetDataLevelCode(std::uint16_t level) const override; + std::optional GetDataValue(std::uint16_t level) const override; static std::shared_ptr Create(const std::string& product, diff --git a/scwx-qt/source/scwx/qt/view/radar_product_view.hpp b/scwx-qt/source/scwx/qt/view/radar_product_view.hpp index 1ac43eb6..4348591a 100644 --- a/scwx-qt/source/scwx/qt/view/radar_product_view.hpp +++ b/scwx-qt/source/scwx/qt/view/radar_product_view.hpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include @@ -66,8 +67,13 @@ public: GetMomentData() const = 0; virtual std::tuple GetCfpMomentData() const; + virtual std::optional GetBinLevel(const common::Coordinate& coordinate) const = 0; + virtual std::optional + GetDataLevelCode(std::uint16_t level) const = 0; + virtual std::optional GetDataValue(std::uint16_t level) const = 0; + std::chrono::system_clock::time_point GetSelectedTime() const; virtual std::vector>