mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 03:40:05 +00:00 
			
		
		
		
	Get data level code and value from level 3 radial data, stubs for raster and level 2
This commit is contained in:
		
							parent
							
								
									a652ac460b
								
							
						
					
					
						commit
						c1280c05aa
					
				
					 7 changed files with 95 additions and 0 deletions
				
			
		|  | @ -782,6 +782,21 @@ Level2ProductView::GetBinLevel(const common::Coordinate& coordinate) const | ||||||
|    return std::nullopt; |    return std::nullopt; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | std::optional<wsr88d::DataLevelCode> | ||||||
|  | Level2ProductView::GetDataLevelCode(std::uint16_t level) const | ||||||
|  | { | ||||||
|  |    // TODO
 | ||||||
|  |    Q_UNUSED(level); | ||||||
|  |    return std::nullopt; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | std::optional<float> Level2ProductView::GetDataValue(std::uint16_t level) const | ||||||
|  | { | ||||||
|  |    // TODO
 | ||||||
|  |    Q_UNUSED(level); | ||||||
|  |    return std::nullopt; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| std::shared_ptr<Level2ProductView> Level2ProductView::Create( | std::shared_ptr<Level2ProductView> Level2ProductView::Create( | ||||||
|    common::Level2Product                         product, |    common::Level2Product                         product, | ||||||
|    std::shared_ptr<manager::RadarProductManager> radarProductManager) |    std::shared_ptr<manager::RadarProductManager> radarProductManager) | ||||||
|  |  | ||||||
|  | @ -47,8 +47,12 @@ public: | ||||||
|    GetMomentData() const override; |    GetMomentData() const override; | ||||||
|    std::tuple<const void*, std::size_t, std::size_t> |    std::tuple<const void*, std::size_t, std::size_t> | ||||||
|    GetCfpMomentData() const override; |    GetCfpMomentData() const override; | ||||||
|  | 
 | ||||||
|    std::optional<std::uint16_t> |    std::optional<std::uint16_t> | ||||||
|    GetBinLevel(const common::Coordinate& coordinate) const override; |    GetBinLevel(const common::Coordinate& coordinate) const override; | ||||||
|  |    std::optional<wsr88d::DataLevelCode> | ||||||
|  |                         GetDataLevelCode(std::uint16_t level) const override; | ||||||
|  |    std::optional<float> GetDataValue(std::uint16_t level) const override; | ||||||
| 
 | 
 | ||||||
|    static std::shared_ptr<Level2ProductView> |    static std::shared_ptr<Level2ProductView> | ||||||
|    Create(common::Level2Product                         product, |    Create(common::Level2Product                         product, | ||||||
|  |  | ||||||
|  | @ -605,6 +605,53 @@ Level3RadialView::GetBinLevel(const common::Coordinate& coordinate) const | ||||||
|    return level; |    return level; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | std::optional<wsr88d::DataLevelCode> | ||||||
|  | Level3RadialView::GetDataLevelCode(std::uint16_t level) const | ||||||
|  | { | ||||||
|  |    if (level > std::numeric_limits<std::uint8_t>::max()) | ||||||
|  |    { | ||||||
|  |       return std::nullopt; | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  |    auto gpm = graphic_product_message(); | ||||||
|  |    if (gpm == nullptr) | ||||||
|  |    { | ||||||
|  |       return std::nullopt; | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  |    std::shared_ptr<wsr88d::rpg::ProductDescriptionBlock> descriptionBlock = | ||||||
|  |       gpm->description_block(); | ||||||
|  |    if (descriptionBlock == nullptr) | ||||||
|  |    { | ||||||
|  |       return std::nullopt; | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  |    return descriptionBlock->data_level_code(static_cast<std::uint8_t>(level)); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | std::optional<float> Level3RadialView::GetDataValue(std::uint16_t level) const | ||||||
|  | { | ||||||
|  |    if (level > std::numeric_limits<std::uint8_t>::max()) | ||||||
|  |    { | ||||||
|  |       return std::nullopt; | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  |    auto gpm = graphic_product_message(); | ||||||
|  |    if (gpm == nullptr) | ||||||
|  |    { | ||||||
|  |       return std::nullopt; | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  |    std::shared_ptr<wsr88d::rpg::ProductDescriptionBlock> descriptionBlock = | ||||||
|  |       gpm->description_block(); | ||||||
|  |    if (descriptionBlock == nullptr) | ||||||
|  |    { | ||||||
|  |       return std::nullopt; | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  |    return descriptionBlock->data_value(static_cast<std::uint8_t>(level)); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| std::shared_ptr<Level3RadialView> Level3RadialView::Create( | std::shared_ptr<Level3RadialView> Level3RadialView::Create( | ||||||
|    const std::string&                            product, |    const std::string&                            product, | ||||||
|    std::shared_ptr<manager::RadarProductManager> radarProductManager) |    std::shared_ptr<manager::RadarProductManager> radarProductManager) | ||||||
|  |  | ||||||
|  | @ -30,8 +30,12 @@ public: | ||||||
| 
 | 
 | ||||||
|    std::tuple<const void*, std::size_t, std::size_t> |    std::tuple<const void*, std::size_t, std::size_t> | ||||||
|    GetMomentData() const override; |    GetMomentData() const override; | ||||||
|  | 
 | ||||||
|    std::optional<std::uint16_t> |    std::optional<std::uint16_t> | ||||||
|    GetBinLevel(const common::Coordinate& coordinate) const override; |    GetBinLevel(const common::Coordinate& coordinate) const override; | ||||||
|  |    std::optional<wsr88d::DataLevelCode> | ||||||
|  |                         GetDataLevelCode(std::uint16_t level) const override; | ||||||
|  |    std::optional<float> GetDataValue(std::uint16_t level) const override; | ||||||
| 
 | 
 | ||||||
|    static std::shared_ptr<Level3RadialView> |    static std::shared_ptr<Level3RadialView> | ||||||
|    Create(const std::string&                            product, |    Create(const std::string&                            product, | ||||||
|  |  | ||||||
|  | @ -360,6 +360,21 @@ Level3RasterView::GetBinLevel(const common::Coordinate& coordinate) const | ||||||
|    return std::nullopt; |    return std::nullopt; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | std::optional<wsr88d::DataLevelCode> | ||||||
|  | Level3RasterView::GetDataLevelCode(std::uint16_t level) const | ||||||
|  | { | ||||||
|  |    // TODO
 | ||||||
|  |    Q_UNUSED(level); | ||||||
|  |    return std::nullopt; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | std::optional<float> Level3RasterView::GetDataValue(std::uint16_t level) const | ||||||
|  | { | ||||||
|  |    // TODO
 | ||||||
|  |    Q_UNUSED(level); | ||||||
|  |    return std::nullopt; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| std::shared_ptr<Level3RasterView> Level3RasterView::Create( | std::shared_ptr<Level3RasterView> Level3RasterView::Create( | ||||||
|    const std::string&                            product, |    const std::string&                            product, | ||||||
|    std::shared_ptr<manager::RadarProductManager> radarProductManager) |    std::shared_ptr<manager::RadarProductManager> radarProductManager) | ||||||
|  |  | ||||||
|  | @ -32,8 +32,12 @@ public: | ||||||
| 
 | 
 | ||||||
|    std::tuple<const void*, std::size_t, std::size_t> |    std::tuple<const void*, std::size_t, std::size_t> | ||||||
|    GetMomentData() const override; |    GetMomentData() const override; | ||||||
|  | 
 | ||||||
|    std::optional<std::uint16_t> |    std::optional<std::uint16_t> | ||||||
|    GetBinLevel(const common::Coordinate& coordinate) const override; |    GetBinLevel(const common::Coordinate& coordinate) const override; | ||||||
|  |    std::optional<wsr88d::DataLevelCode> | ||||||
|  |                         GetDataLevelCode(std::uint16_t level) const override; | ||||||
|  |    std::optional<float> GetDataValue(std::uint16_t level) const override; | ||||||
| 
 | 
 | ||||||
|    static std::shared_ptr<Level3RasterView> |    static std::shared_ptr<Level3RasterView> | ||||||
|    Create(const std::string&                            product, |    Create(const std::string&                            product, | ||||||
|  |  | ||||||
|  | @ -5,6 +5,7 @@ | ||||||
| #include <scwx/common/products.hpp> | #include <scwx/common/products.hpp> | ||||||
| #include <scwx/qt/manager/radar_product_manager.hpp> | #include <scwx/qt/manager/radar_product_manager.hpp> | ||||||
| #include <scwx/qt/types/map_types.hpp> | #include <scwx/qt/types/map_types.hpp> | ||||||
|  | #include <scwx/wsr88d/wsr88d_types.hpp> | ||||||
| 
 | 
 | ||||||
| #include <chrono> | #include <chrono> | ||||||
| #include <memory> | #include <memory> | ||||||
|  | @ -66,8 +67,13 @@ public: | ||||||
|    GetMomentData() const = 0; |    GetMomentData() const = 0; | ||||||
|    virtual std::tuple<const void*, std::size_t, std::size_t> |    virtual std::tuple<const void*, std::size_t, std::size_t> | ||||||
|    GetCfpMomentData() const; |    GetCfpMomentData() const; | ||||||
|  | 
 | ||||||
|    virtual std::optional<std::uint16_t> |    virtual std::optional<std::uint16_t> | ||||||
|    GetBinLevel(const common::Coordinate& coordinate) const = 0; |    GetBinLevel(const common::Coordinate& coordinate) const = 0; | ||||||
|  |    virtual std::optional<wsr88d::DataLevelCode> | ||||||
|  |                                 GetDataLevelCode(std::uint16_t level) const = 0; | ||||||
|  |    virtual std::optional<float> GetDataValue(std::uint16_t level) const     = 0; | ||||||
|  | 
 | ||||||
|    std::chrono::system_clock::time_point GetSelectedTime() const; |    std::chrono::system_clock::time_point GetSelectedTime() const; | ||||||
| 
 | 
 | ||||||
|    virtual std::vector<std::pair<std::string, std::string>> |    virtual std::vector<std::pair<std::string, std::string>> | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dan Paulat
						Dan Paulat