mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 18:10:05 +00:00 
			
		
		
		
	Update VCP display
This commit is contained in:
		
							parent
							
								
									8d55413d03
								
							
						
					
					
						commit
						cae04fad37
					
				
					 11 changed files with 113 additions and 5 deletions
				
			
		|  | @ -6,6 +6,7 @@ | ||||||
| #include <scwx/qt/ui/flow_layout.hpp> | #include <scwx/qt/ui/flow_layout.hpp> | ||||||
| #include <scwx/common/characters.hpp> | #include <scwx/common/characters.hpp> | ||||||
| #include <scwx/common/products.hpp> | #include <scwx/common/products.hpp> | ||||||
|  | #include <scwx/common/vcp.hpp> | ||||||
| 
 | 
 | ||||||
| #include <QSplitter> | #include <QSplitter> | ||||||
| #include <QToolButton> | #include <QToolButton> | ||||||
|  | @ -50,6 +51,7 @@ public: | ||||||
|    void UpdateRadarProductSelection(common::RadarProductGroup group, |    void UpdateRadarProductSelection(common::RadarProductGroup group, | ||||||
|                                     const std::string&        product); |                                     const std::string&        product); | ||||||
|    void UpdateRadarProductSettings(); |    void UpdateRadarProductSettings(); | ||||||
|  |    void UpdateVcp(); | ||||||
| 
 | 
 | ||||||
|    MainWindow*       mainWindow_; |    MainWindow*       mainWindow_; | ||||||
|    QMapboxGLSettings settings_; |    QMapboxGLSettings settings_; | ||||||
|  | @ -76,6 +78,10 @@ MainWindow::MainWindow(QWidget* parent) : | ||||||
| { | { | ||||||
|    ui->setupUi(this); |    ui->setupUi(this); | ||||||
| 
 | 
 | ||||||
|  |    ui->vcpLabel->setVisible(false); | ||||||
|  |    ui->vcpValueLabel->setVisible(false); | ||||||
|  |    ui->vcpDescriptionLabel->setVisible(false); | ||||||
|  | 
 | ||||||
|    p->ConfigureMapLayout(); |    p->ConfigureMapLayout(); | ||||||
| 
 | 
 | ||||||
|    // Add Level 2 Products
 |    // Add Level 2 Products
 | ||||||
|  | @ -243,6 +249,7 @@ void MainWindowImpl::ConfigureMapLayout() | ||||||
|                { |                { | ||||||
|                   if (maps_[mapIndex] == activeMap_) |                   if (maps_[mapIndex] == activeMap_) | ||||||
|                   { |                   { | ||||||
|  |                      UpdateVcp(); | ||||||
|                      UpdateRadarProductSettings(); |                      UpdateRadarProductSettings(); | ||||||
|                   } |                   } | ||||||
|                }, |                }, | ||||||
|  | @ -270,6 +277,7 @@ void MainWindowImpl::HandleFocusChange(QWidget* focused) | ||||||
|       UpdateRadarProductSelection(mapWidget->GetRadarProductGroup(), |       UpdateRadarProductSelection(mapWidget->GetRadarProductGroup(), | ||||||
|                                   mapWidget->GetRadarProductName()); |                                   mapWidget->GetRadarProductName()); | ||||||
|       UpdateRadarProductSettings(); |       UpdateRadarProductSettings(); | ||||||
|  |       UpdateVcp(); | ||||||
|    } |    } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -415,6 +423,28 @@ void MainWindowImpl::UpdateRadarProductSettings() | ||||||
|    UpdateElevationSelection(currentElevation); |    UpdateElevationSelection(currentElevation); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void MainWindowImpl::UpdateVcp() | ||||||
|  | { | ||||||
|  |    uint16_t vcp = activeMap_->GetVcp(); | ||||||
|  | 
 | ||||||
|  |    if (vcp != 0) | ||||||
|  |    { | ||||||
|  |       mainWindow_->ui->vcpLabel->setVisible(true); | ||||||
|  |       mainWindow_->ui->vcpValueLabel->setVisible(true); | ||||||
|  |       mainWindow_->ui->vcpDescriptionLabel->setVisible(true); | ||||||
|  | 
 | ||||||
|  |       mainWindow_->ui->vcpValueLabel->setText(QString::number(vcp)); | ||||||
|  |       mainWindow_->ui->vcpDescriptionLabel->setText( | ||||||
|  |          tr(common::GetVcpDescription(vcp).c_str())); | ||||||
|  |    } | ||||||
|  |    else | ||||||
|  |    { | ||||||
|  |       mainWindow_->ui->vcpLabel->setVisible(false); | ||||||
|  |       mainWindow_->ui->vcpValueLabel->setVisible(false); | ||||||
|  |       mainWindow_->ui->vcpDescriptionLabel->setVisible(false); | ||||||
|  |    } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| } // namespace main
 | } // namespace main
 | ||||||
| } // namespace qt
 | } // namespace qt
 | ||||||
| } // namespace scwx
 | } // namespace scwx
 | ||||||
|  |  | ||||||
|  | @ -163,6 +163,19 @@ std::string MapWidget::GetRadarProductName() const | ||||||
|    } |    } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | uint16_t MapWidget::GetVcp() const | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  |    if (p->context_->radarProductView_ != nullptr) | ||||||
|  |    { | ||||||
|  |       return p->context_->radarProductView_->vcp(); | ||||||
|  |    } | ||||||
|  |    else | ||||||
|  |    { | ||||||
|  |       return 0; | ||||||
|  |    } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void MapWidget::SelectElevation(float elevation) | void MapWidget::SelectElevation(float elevation) | ||||||
| { | { | ||||||
|    if (p->context_->radarProductView_ != nullptr) |    if (p->context_->radarProductView_ != nullptr) | ||||||
|  |  | ||||||
|  | @ -35,6 +35,7 @@ public: | ||||||
|    std::vector<float>        GetElevationCuts() const; |    std::vector<float>        GetElevationCuts() const; | ||||||
|    common::RadarProductGroup GetRadarProductGroup() const; |    common::RadarProductGroup GetRadarProductGroup() const; | ||||||
|    std::string               GetRadarProductName() const; |    std::string               GetRadarProductName() const; | ||||||
|  |    uint16_t                  GetVcp() const; | ||||||
| 
 | 
 | ||||||
|    void SelectElevation(float elevation); |    void SelectElevation(float elevation); | ||||||
|    void SelectRadarProduct(common::Level2Product product); |    void SelectRadarProduct(common::Level2Product product); | ||||||
|  |  | ||||||
|  | @ -54,6 +54,7 @@ public: | ||||||
|        elevationCut_ {}, |        elevationCut_ {}, | ||||||
|        elevationCuts_ {}, |        elevationCuts_ {}, | ||||||
|        range_ {}, |        range_ {}, | ||||||
|  |        vcp_ {}, | ||||||
|        sweepTime_ {}, |        sweepTime_ {}, | ||||||
|        colorTable_ {}, |        colorTable_ {}, | ||||||
|        colorTableLut_ {}, |        colorTableLut_ {}, | ||||||
|  | @ -94,6 +95,7 @@ public: | ||||||
|    float              elevationCut_; |    float              elevationCut_; | ||||||
|    std::vector<float> elevationCuts_; |    std::vector<float> elevationCuts_; | ||||||
|    float              range_; |    float              range_; | ||||||
|  |    uint16_t           vcp_; | ||||||
| 
 | 
 | ||||||
|    std::chrono::system_clock::time_point sweepTime_; |    std::chrono::system_clock::time_point sweepTime_; | ||||||
| 
 | 
 | ||||||
|  | @ -173,6 +175,11 @@ std::chrono::system_clock::time_point Level2ProductView::sweep_time() const | ||||||
|    return p->sweepTime_; |    return p->sweepTime_; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | uint16_t Level2ProductView::vcp() const | ||||||
|  | { | ||||||
|  |    return p->vcp_; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| const std::vector<float>& Level2ProductView::vertices() const | const std::vector<float>& Level2ProductView::vertices() const | ||||||
| { | { | ||||||
|    return p->vertices_; |    return p->vertices_; | ||||||
|  | @ -305,7 +312,8 @@ void Level2ProductView::UpdateColorTable() | ||||||
|    std::for_each(std::execution::par_unseq, |    std::for_each(std::execution::par_unseq, | ||||||
|                  dataRange.begin(), |                  dataRange.begin(), | ||||||
|                  dataRange.end(), |                  dataRange.end(), | ||||||
|                  [&](uint16_t i) { |                  [&](uint16_t i) | ||||||
|  |                  { | ||||||
|                     if (i == RANGE_FOLDED) |                     if (i == RANGE_FOLDED) | ||||||
|                     { |                     { | ||||||
|                        lut[i - *dataRange.begin()] = p->colorTable_->rf_color(); |                        lut[i - *dataRange.begin()] = p->colorTable_->rf_color(); | ||||||
|  | @ -378,6 +386,7 @@ void Level2ProductView::ComputeSweep() | ||||||
|       momentData0->data_moment_range_sample_interval() * (gates - 0.5f); |       momentData0->data_moment_range_sample_interval() * (gates - 0.5f); | ||||||
|    p->sweepTime_ = util::TimePoint(radarData0->modified_julian_date(), |    p->sweepTime_ = util::TimePoint(radarData0->modified_julian_date(), | ||||||
|                                    radarData0->collection_time()); |                                    radarData0->collection_time()); | ||||||
|  |    p->vcp_       = volumeData0->volume_coverage_pattern_number(); | ||||||
| 
 | 
 | ||||||
|    // Calculate vertices
 |    // Calculate vertices
 | ||||||
|    timer.start(); |    timer.start(); | ||||||
|  |  | ||||||
|  | @ -35,6 +35,7 @@ public: | ||||||
|    float                                 elevation() const override; |    float                                 elevation() const override; | ||||||
|    float                                 range() const override; |    float                                 range() const override; | ||||||
|    std::chrono::system_clock::time_point sweep_time() const override; |    std::chrono::system_clock::time_point sweep_time() const override; | ||||||
|  |    uint16_t                              vcp() const override; | ||||||
|    const std::vector<float>&             vertices() const override; |    const std::vector<float>&             vertices() const override; | ||||||
| 
 | 
 | ||||||
|    void LoadColorTable(std::shared_ptr<common::ColorTable> colorTable) override; |    void LoadColorTable(std::shared_ptr<common::ColorTable> colorTable) override; | ||||||
|  |  | ||||||
|  | @ -32,6 +32,7 @@ public: | ||||||
|    virtual float                                 elevation() const; |    virtual float                                 elevation() const; | ||||||
|    virtual float                                 range() const; |    virtual float                                 range() const; | ||||||
|    virtual std::chrono::system_clock::time_point sweep_time() const; |    virtual std::chrono::system_clock::time_point sweep_time() const; | ||||||
|  |    virtual uint16_t                              vcp() const      = 0; | ||||||
|    virtual const std::vector<float>&             vertices() const = 0; |    virtual const std::vector<float>&             vertices() const = 0; | ||||||
| 
 | 
 | ||||||
|    void Initialize(); |    void Initialize(); | ||||||
|  |  | ||||||
							
								
								
									
										13
									
								
								wxdata/include/scwx/common/vcp.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								wxdata/include/scwx/common/vcp.hpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | ||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #include <string> | ||||||
|  | 
 | ||||||
|  | namespace scwx | ||||||
|  | { | ||||||
|  | namespace common | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  | std::string GetVcpDescription(uint16_t vcp); | ||||||
|  | 
 | ||||||
|  | } // namespace common
 | ||||||
|  | } // namespace scwx
 | ||||||
|  | @ -157,6 +157,7 @@ public: | ||||||
| 
 | 
 | ||||||
|    float    latitude() const; |    float    latitude() const; | ||||||
|    float    longitude() const; |    float    longitude() const; | ||||||
|  |    uint16_t volume_coverage_pattern_number() const; | ||||||
| 
 | 
 | ||||||
|    static std::shared_ptr<VolumeDataBlock> |    static std::shared_ptr<VolumeDataBlock> | ||||||
|    Create(const std::string& dataBlockType, |    Create(const std::string& dataBlockType, | ||||||
|  |  | ||||||
							
								
								
									
										32
									
								
								wxdata/source/scwx/common/vcp.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								wxdata/source/scwx/common/vcp.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,32 @@ | ||||||
|  | #include <scwx/common/vcp.hpp> | ||||||
|  | 
 | ||||||
|  | #include <unordered_map> | ||||||
|  | 
 | ||||||
|  | namespace scwx | ||||||
|  | { | ||||||
|  | namespace common | ||||||
|  | { | ||||||
|  | 
 | ||||||
|  | static const std::string CLEAR_AIR_MODE     = "Clear Air Mode"; | ||||||
|  | static const std::string PRECIPITATION_MODE = "Precipitation Mode"; | ||||||
|  | 
 | ||||||
|  | std::string GetVcpDescription(uint16_t vcp) | ||||||
|  | { | ||||||
|  |    switch (vcp) | ||||||
|  |    { | ||||||
|  |    case 31: | ||||||
|  |    case 32: | ||||||
|  |    case 35: return CLEAR_AIR_MODE; | ||||||
|  | 
 | ||||||
|  |    case 12: | ||||||
|  |    case 112: | ||||||
|  |    case 121: | ||||||
|  |    case 212: | ||||||
|  |    case 215: return PRECIPITATION_MODE; | ||||||
|  | 
 | ||||||
|  |    default: return "?"; | ||||||
|  |    } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | } // namespace common
 | ||||||
|  | } // namespace scwx
 | ||||||
|  | @ -285,6 +285,11 @@ float VolumeDataBlock::longitude() const | ||||||
|    return p->longitude_; |    return p->longitude_; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | uint16_t VolumeDataBlock::volume_coverage_pattern_number() const | ||||||
|  | { | ||||||
|  |    return p->volumeCoveragePatternNumber_; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| std::shared_ptr<VolumeDataBlock> | std::shared_ptr<VolumeDataBlock> | ||||||
| VolumeDataBlock::Create(const std::string& dataBlockType, | VolumeDataBlock::Create(const std::string& dataBlockType, | ||||||
|                         const std::string& dataName, |                         const std::string& dataName, | ||||||
|  |  | ||||||
|  | @ -6,9 +6,11 @@ set(HDR_COMMON include/scwx/common/characters.hpp | ||||||
|                include/scwx/common/color_table.hpp |                include/scwx/common/color_table.hpp | ||||||
|                include/scwx/common/constants.hpp |                include/scwx/common/constants.hpp | ||||||
|                include/scwx/common/products.hpp |                include/scwx/common/products.hpp | ||||||
|                include/scwx/common/types.hpp) |                include/scwx/common/types.hpp | ||||||
|  |                include/scwx/common/vcp.hpp) | ||||||
| set(SRC_COMMON source/scwx/common/color_table.cpp | set(SRC_COMMON source/scwx/common/color_table.cpp | ||||||
|                source/scwx/common/products.cpp) |                source/scwx/common/products.cpp | ||||||
|  |                source/scwx/common/vcp.cpp) | ||||||
| set(HDR_UTIL include/scwx/util/iterator.hpp | set(HDR_UTIL include/scwx/util/iterator.hpp | ||||||
|              include/scwx/util/rangebuf.hpp |              include/scwx/util/rangebuf.hpp | ||||||
|              include/scwx/util/streams.hpp |              include/scwx/util/streams.hpp | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dan Paulat
						Dan Paulat