mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 03:20:05 +00:00 
			
		
		
		
	Support selecting level 2 files for display
This commit is contained in:
		
							parent
							
								
									1655a7c571
								
							
						
					
					
						commit
						95de37cab4
					
				
					 8 changed files with 125 additions and 78 deletions
				
			
		|  | @ -63,6 +63,8 @@ public: | ||||||
|    } |    } | ||||||
|    ~RadarProductManagerImpl() = default; |    ~RadarProductManagerImpl() = default; | ||||||
| 
 | 
 | ||||||
|  |    std::shared_ptr<types::RadarProductRecord> | ||||||
|  |    GetLevel2ProductRecord(std::chrono::system_clock::time_point time); | ||||||
|    std::shared_ptr<types::RadarProductRecord> |    std::shared_ptr<types::RadarProductRecord> | ||||||
|    StoreRadarProductRecord(std::shared_ptr<types::RadarProductRecord> record); |    StoreRadarProductRecord(std::shared_ptr<types::RadarProductRecord> record); | ||||||
| 
 | 
 | ||||||
|  | @ -85,10 +87,6 @@ public: | ||||||
|                       std::map<std::chrono::system_clock::time_point, |                       std::map<std::chrono::system_clock::time_point, | ||||||
|                                std::shared_ptr<types::RadarProductRecord>>> |                                std::shared_ptr<types::RadarProductRecord>>> | ||||||
|       level3ProductRecords_; |       level3ProductRecords_; | ||||||
| 
 |  | ||||||
|    std::map<std::chrono::system_clock::time_point, |  | ||||||
|             std::shared_ptr<wsr88d::Ar2vFile>> |  | ||||||
|       level2VolumeScans_; |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| RadarProductManager::RadarProductManager(const std::string& radarId) : | RadarProductManager::RadarProductManager(const std::string& radarId) : | ||||||
|  | @ -114,18 +112,6 @@ std::shared_ptr<config::RadarSite> RadarProductManager::radar_site() const | ||||||
|    return p->radarSite_; |    return p->radarSite_; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| std::shared_ptr<const wsr88d::Ar2vFile> RadarProductManager::level2_data() const |  | ||||||
| { |  | ||||||
|    std::shared_ptr<const wsr88d::Ar2vFile> level2Data = nullptr; |  | ||||||
| 
 |  | ||||||
|    if (p->level2VolumeScans_.size() > 0) |  | ||||||
|    { |  | ||||||
|       level2Data = p->level2VolumeScans_.crbegin()->second; |  | ||||||
|    } |  | ||||||
| 
 |  | ||||||
|    return level2Data; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void RadarProductManager::Initialize() | void RadarProductManager::Initialize() | ||||||
| { | { | ||||||
|    if (p->initialized_) |    if (p->initialized_) | ||||||
|  | @ -315,25 +301,50 @@ void RadarProductManagerImpl::LoadNexradFile( | ||||||
|       }); |       }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void RadarProductManager::LoadLevel2Data(const std::string& filename) | std::shared_ptr<types::RadarProductRecord> | ||||||
|  | RadarProductManagerImpl::GetLevel2ProductRecord( | ||||||
|  |    std::chrono::system_clock::time_point time) | ||||||
| { | { | ||||||
|    std::shared_ptr<wsr88d::Ar2vFile> ar2vFile = |    std::shared_ptr<types::RadarProductRecord> record = nullptr; | ||||||
|       std::make_shared<wsr88d::Ar2vFile>(); |  | ||||||
| 
 | 
 | ||||||
|    if (!p->initialized_) |    // TODO: Round to minutes
 | ||||||
|  | 
 | ||||||
|  |    // Find the first product record greater than the time requested
 | ||||||
|  |    auto it = level2ProductRecords_.upper_bound(time); | ||||||
|  | 
 | ||||||
|  |    // A product record with a time greater was found
 | ||||||
|  |    if (it != level2ProductRecords_.cend()) | ||||||
|    { |    { | ||||||
|       Initialize(); |       // Are there product records prior to this record?
 | ||||||
|  |       if (it != level2ProductRecords_.cbegin()) | ||||||
|  |       { | ||||||
|  |          // Get the product record immediately preceding, this the record we are
 | ||||||
|  |          // looking for
 | ||||||
|  |          --it; | ||||||
|  | 
 | ||||||
|  |          // Does the record contain the time we are looking for?
 | ||||||
|  |          if (it->second->level2_file()->start_time() <= time && | ||||||
|  |              time <= it->second->level2_file()->end_time()) | ||||||
|  |          { | ||||||
|  |             record = it->second; | ||||||
|  |          } | ||||||
|  |       } | ||||||
|  |    } | ||||||
|  |    else if (level2ProductRecords_.size() > 0) | ||||||
|  |    { | ||||||
|  |       // A product record with a time greater was not found. If it exists, it
 | ||||||
|  |       // must be the last record.
 | ||||||
|  |       auto rit = level2ProductRecords_.rbegin(); | ||||||
|  | 
 | ||||||
|  |       // Does the record contain the time we are looking for?
 | ||||||
|  |       if (rit->second->level2_file()->start_time() <= time && | ||||||
|  |           time <= rit->second->level2_file()->end_time()) | ||||||
|  |       { | ||||||
|  |          record = rit->second; | ||||||
|  |       } | ||||||
|    } |    } | ||||||
| 
 | 
 | ||||||
|    bool success = ar2vFile->LoadFile(filename); |    return record; | ||||||
|    if (!success) |  | ||||||
|    { |  | ||||||
|       return; |  | ||||||
|    } |  | ||||||
| 
 |  | ||||||
|    p->level2VolumeScans_[ar2vFile->start_time()] = ar2vFile; |  | ||||||
| 
 |  | ||||||
|    emit Level2DataLoaded(); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| std::shared_ptr<types::RadarProductRecord> | std::shared_ptr<types::RadarProductRecord> | ||||||
|  | @ -393,30 +404,15 @@ RadarProductManager::GetLevel2Data(wsr88d::rda::DataBlockType dataBlockType, | ||||||
|    float                                       elevationCut = 0.0f; |    float                                       elevationCut = 0.0f; | ||||||
|    std::vector<float>                          elevationCuts; |    std::vector<float>                          elevationCuts; | ||||||
| 
 | 
 | ||||||
|    if (p->level2VolumeScans_.size() > 0) |    std::shared_ptr<types::RadarProductRecord> record = | ||||||
|  |       p->GetLevel2ProductRecord(time); | ||||||
|  | 
 | ||||||
|  |    if (record != nullptr) | ||||||
|    { |    { | ||||||
|       std::tie(radarData, elevationCut, elevationCuts) = |       std::tie(radarData, elevationCut, elevationCuts) = | ||||||
|          p->level2VolumeScans_.crbegin()->second->GetElevationScan( |          record->level2_file()->GetElevationScan( | ||||||
|             dataBlockType, elevation, time); |             dataBlockType, elevation, time); | ||||||
|    } |    } | ||||||
|    else |  | ||||||
|    { |  | ||||||
|       scwx::util::async( |  | ||||||
|          [&]() |  | ||||||
|          { |  | ||||||
|             std::unique_lock lock(fileLoadMutex_); |  | ||||||
| 
 |  | ||||||
|             BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Start load"; |  | ||||||
| 
 |  | ||||||
|             QString filename = qgetenv("AR2V_FILE"); |  | ||||||
|             if (!filename.isEmpty() && p->level2VolumeScans_.size() == 0) |  | ||||||
|             { |  | ||||||
|                LoadLevel2Data(filename.toUtf8().constData()); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "End load"; |  | ||||||
|          }); |  | ||||||
|    } |  | ||||||
| 
 | 
 | ||||||
|    return std::tie(radarData, elevationCut, elevationCuts); |    return std::tie(radarData, elevationCut, elevationCuts); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -32,11 +32,7 @@ public: | ||||||
|    const std::vector<float>& coordinates(common::RadialSize radialSize) const; |    const std::vector<float>& coordinates(common::RadialSize radialSize) const; | ||||||
|    std::shared_ptr<config::RadarSite> radar_site() const; |    std::shared_ptr<config::RadarSite> radar_site() const; | ||||||
| 
 | 
 | ||||||
|    // TODO: Improve this interface
 |  | ||||||
|    std::shared_ptr<const wsr88d::Ar2vFile> level2_data() const; |  | ||||||
| 
 |  | ||||||
|    void Initialize(); |    void Initialize(); | ||||||
|    void LoadLevel2Data(const std::string& filename); |  | ||||||
| 
 | 
 | ||||||
|    std::tuple<std::shared_ptr<wsr88d::rda::ElevationScan>, |    std::tuple<std::shared_ptr<wsr88d::rda::ElevationScan>, | ||||||
|               float, |               float, | ||||||
|  | @ -55,9 +51,6 @@ public: | ||||||
|    LoadFile(const std::string&                          filename, |    LoadFile(const std::string&                          filename, | ||||||
|             std::shared_ptr<request::NexradFileRequest> request = nullptr); |             std::shared_ptr<request::NexradFileRequest> request = nullptr); | ||||||
| 
 | 
 | ||||||
| signals: |  | ||||||
|    void Level2DataLoaded(); |  | ||||||
| 
 |  | ||||||
| private: | private: | ||||||
|    std::unique_ptr<RadarProductManagerImpl> p; |    std::unique_ptr<RadarProductManagerImpl> p; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -8,6 +8,7 @@ | ||||||
| #include <scwx/qt/map/radar_product_layer.hpp> | #include <scwx/qt/map/radar_product_layer.hpp> | ||||||
| #include <scwx/qt/map/radar_range_layer.hpp> | #include <scwx/qt/map/radar_range_layer.hpp> | ||||||
| #include <scwx/qt/view/radar_product_view_factory.hpp> | #include <scwx/qt/view/radar_product_view_factory.hpp> | ||||||
|  | #include <scwx/util/threads.hpp> | ||||||
| #include <scwx/util/time.hpp> | #include <scwx/util/time.hpp> | ||||||
| 
 | 
 | ||||||
| #include <QApplication> | #include <QApplication> | ||||||
|  | @ -60,6 +61,7 @@ public: | ||||||
|        radarProductLayer_ {nullptr}, |        radarProductLayer_ {nullptr}, | ||||||
|        overlayLayer_ {nullptr}, |        overlayLayer_ {nullptr}, | ||||||
|        colorTableLayer_ {nullptr}, |        colorTableLayer_ {nullptr}, | ||||||
|  |        selectedTime_ {}, | ||||||
|        lastPos_(), |        lastPos_(), | ||||||
|        currentStyleIndex_ {0}, |        currentStyleIndex_ {0}, | ||||||
|        frameDraws_(0), |        frameDraws_(0), | ||||||
|  | @ -77,6 +79,9 @@ public: | ||||||
|                  const std::string&            before = {}); |                  const std::string&            before = {}); | ||||||
|    bool UpdateStoredMapParameters(); |    bool UpdateStoredMapParameters(); | ||||||
| 
 | 
 | ||||||
|  |    common::Level2Product | ||||||
|  |    GetLevel2ProductOrDefault(const std::string& productName) const; | ||||||
|  | 
 | ||||||
|    std::shared_ptr<MapContext> context_; |    std::shared_ptr<MapContext> context_; | ||||||
| 
 | 
 | ||||||
|    MapWidget*                 widget_; |    MapWidget*                 widget_; | ||||||
|  | @ -92,6 +97,8 @@ public: | ||||||
|    std::shared_ptr<OverlayLayer>      overlayLayer_; |    std::shared_ptr<OverlayLayer>      overlayLayer_; | ||||||
|    std::shared_ptr<ColorTableLayer>   colorTableLayer_; |    std::shared_ptr<ColorTableLayer>   colorTableLayer_; | ||||||
| 
 | 
 | ||||||
|  |    std::chrono::system_clock::time_point selectedTime_; | ||||||
|  | 
 | ||||||
|    QPointF lastPos_; |    QPointF lastPos_; | ||||||
|    uint8_t currentStyleIndex_; |    uint8_t currentStyleIndex_; | ||||||
| 
 | 
 | ||||||
|  | @ -144,6 +151,28 @@ std::vector<float> MapWidget::GetElevationCuts() const | ||||||
|    } |    } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | common::Level2Product | ||||||
|  | MapWidgetImpl::GetLevel2ProductOrDefault(const std::string& productName) const | ||||||
|  | { | ||||||
|  |    common::Level2Product level2Product = common::GetLevel2Product(productName); | ||||||
|  | 
 | ||||||
|  |    if (level2Product == common::Level2Product::Unknown) | ||||||
|  |    { | ||||||
|  |       if (context_->radarProductView_ != nullptr) | ||||||
|  |       { | ||||||
|  |          common::Level2Product level2Product = common::GetLevel2Product( | ||||||
|  |             context_->radarProductView_->GetRadarProductName()); | ||||||
|  |       } | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  |    if (level2Product == common::Level2Product::Unknown) | ||||||
|  |    { | ||||||
|  |       level2Product = common::Level2Product::Reflectivity; | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  |    return level2Product; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| common::RadarProductGroup MapWidget::GetRadarProductGroup() const | common::RadarProductGroup MapWidget::GetRadarProductGroup() const | ||||||
| { | { | ||||||
|    if (p->context_->radarProductView_ != nullptr) |    if (p->context_->radarProductView_ != nullptr) | ||||||
|  | @ -187,6 +216,7 @@ void MapWidget::SelectElevation(float elevation) | ||||||
|    if (p->context_->radarProductView_ != nullptr) |    if (p->context_->radarProductView_ != nullptr) | ||||||
|    { |    { | ||||||
|       p->context_->radarProductView_->SelectElevation(elevation); |       p->context_->radarProductView_->SelectElevation(elevation); | ||||||
|  |       p->context_->radarProductView_->Update(); | ||||||
|    } |    } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -204,6 +234,7 @@ void MapWidget::SelectRadarProduct(common::Level2Product product) | ||||||
| 
 | 
 | ||||||
|    radarProductView = view::RadarProductViewFactory::Create( |    radarProductView = view::RadarProductViewFactory::Create( | ||||||
|       product, currentElevation, p->radarProductManager_); |       product, currentElevation, p->radarProductManager_); | ||||||
|  |    radarProductView->SelectTime(p->selectedTime_); | ||||||
| 
 | 
 | ||||||
|    connect( |    connect( | ||||||
|       radarProductView.get(), |       radarProductView.get(), | ||||||
|  | @ -229,17 +260,21 @@ void MapWidget::SelectRadarProduct(common::Level2Product product) | ||||||
|       }, |       }, | ||||||
|       Qt::QueuedConnection); |       Qt::QueuedConnection); | ||||||
| 
 | 
 | ||||||
|    radarProductView->Initialize(); |    util::async( | ||||||
|  |       [=]() | ||||||
|  |       { | ||||||
|  |          radarProductView->Initialize(); | ||||||
| 
 | 
 | ||||||
|    std::string colorTableFile = |          std::string colorTableFile = | ||||||
|       manager::SettingsManager::palette_settings()->palette( |             manager::SettingsManager::palette_settings()->palette( | ||||||
|          common::GetLevel2Palette(product)); |                common::GetLevel2Palette(product)); | ||||||
|    if (!colorTableFile.empty()) |          if (!colorTableFile.empty()) | ||||||
|    { |          { | ||||||
|       std::shared_ptr<common::ColorTable> colorTable = |             std::shared_ptr<common::ColorTable> colorTable = | ||||||
|          common::ColorTable::Load(colorTableFile); |                common::ColorTable::Load(colorTableFile); | ||||||
|       radarProductView->LoadColorTable(colorTable); |             radarProductView->LoadColorTable(colorTable); | ||||||
|    } |          } | ||||||
|  |       }); | ||||||
| 
 | 
 | ||||||
|    if (p->map_ != nullptr) |    if (p->map_ != nullptr) | ||||||
|    { |    { | ||||||
|  | @ -256,6 +291,17 @@ void MapWidget::SelectRadarProduct(const std::string&        radarId, | ||||||
|       << logPrefix_ << "SelectRadarProduct(" << radarId << ", " |       << logPrefix_ << "SelectRadarProduct(" << radarId << ", " | ||||||
|       << common::GetRadarProductGroupName(group) << ", " << product << ", " |       << common::GetRadarProductGroupName(group) << ", " << product << ", " | ||||||
|       << util::TimeString(time) << ")"; |       << util::TimeString(time) << ")"; | ||||||
|  | 
 | ||||||
|  |    p->radarProductManager_ = manager::RadarProductManager::Instance(radarId); | ||||||
|  |    p->selectedTime_        = time; | ||||||
|  | 
 | ||||||
|  |    if (group == common::RadarProductGroup::Level2) | ||||||
|  |    { | ||||||
|  |       common::Level2Product level2Product = | ||||||
|  |          p->GetLevel2ProductOrDefault(product); | ||||||
|  | 
 | ||||||
|  |       SelectRadarProduct(level2Product); | ||||||
|  |    } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void MapWidget::SetActive(bool isActive) | void MapWidget::SetActive(bool isActive) | ||||||
|  |  | ||||||
|  | @ -47,6 +47,7 @@ public: | ||||||
|        product_ {product}, |        product_ {product}, | ||||||
|        radarProductManager_ {radarProductManager}, |        radarProductManager_ {radarProductManager}, | ||||||
|        selectedElevation_ {elevation}, |        selectedElevation_ {elevation}, | ||||||
|  |        selectedTime_ {}, | ||||||
|        elevationScan_ {nullptr}, |        elevationScan_ {nullptr}, | ||||||
|        momentDataBlock0_ {nullptr}, |        momentDataBlock0_ {nullptr}, | ||||||
|        latitude_ {}, |        latitude_ {}, | ||||||
|  | @ -80,7 +81,8 @@ public: | ||||||
|    wsr88d::rda::DataBlockType                    dataBlockType_; |    wsr88d::rda::DataBlockType                    dataBlockType_; | ||||||
|    std::shared_ptr<manager::RadarProductManager> radarProductManager_; |    std::shared_ptr<manager::RadarProductManager> radarProductManager_; | ||||||
| 
 | 
 | ||||||
|    float selectedElevation_; |    float                                 selectedElevation_; | ||||||
|  |    std::chrono::system_clock::time_point selectedTime_; | ||||||
| 
 | 
 | ||||||
|    std::shared_ptr<wsr88d::rda::ElevationScan>   elevationScan_; |    std::shared_ptr<wsr88d::rda::ElevationScan>   elevationScan_; | ||||||
|    std::shared_ptr<wsr88d::rda::MomentDataBlock> momentDataBlock0_; |    std::shared_ptr<wsr88d::rda::MomentDataBlock> momentDataBlock0_; | ||||||
|  | @ -116,10 +118,6 @@ Level2ProductView::Level2ProductView( | ||||||
|     p(std::make_unique<Level2ProductViewImpl>( |     p(std::make_unique<Level2ProductViewImpl>( | ||||||
|        product, elevation, radarProductManager)) |        product, elevation, radarProductManager)) | ||||||
| { | { | ||||||
|    connect(radarProductManager.get(), |  | ||||||
|            &manager::RadarProductManager::Level2DataLoaded, |  | ||||||
|            this, |  | ||||||
|            &Level2ProductView::ComputeSweep); |  | ||||||
| } | } | ||||||
| Level2ProductView::~Level2ProductView() = default; | Level2ProductView::~Level2ProductView() = default; | ||||||
| 
 | 
 | ||||||
|  | @ -248,6 +246,15 @@ void Level2ProductView::LoadColorTable( | ||||||
| void Level2ProductView::SelectElevation(float elevation) | void Level2ProductView::SelectElevation(float elevation) | ||||||
| { | { | ||||||
|    p->selectedElevation_ = elevation; |    p->selectedElevation_ = elevation; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void Level2ProductView::SelectTime(std::chrono::system_clock::time_point time) | ||||||
|  | { | ||||||
|  |    p->selectedTime_ = time; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void Level2ProductView::Update() | ||||||
|  | { | ||||||
|    util::async([=]() { ComputeSweep(); }); |    util::async([=]() { ComputeSweep(); }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -348,8 +355,8 @@ void Level2ProductView::ComputeSweep() | ||||||
| 
 | 
 | ||||||
|    std::shared_ptr<wsr88d::rda::ElevationScan> radarData; |    std::shared_ptr<wsr88d::rda::ElevationScan> radarData; | ||||||
|    std::tie(radarData, p->elevationCut_, p->elevationCuts_) = |    std::tie(radarData, p->elevationCut_, p->elevationCuts_) = | ||||||
|       p->radarProductManager_->GetLevel2Data(p->dataBlockType_, |       p->radarProductManager_->GetLevel2Data( | ||||||
|                                              p->selectedElevation_); |          p->dataBlockType_, p->selectedElevation_, p->selectedTime_); | ||||||
|    if (radarData == nullptr || radarData == p->elevationScan_) |    if (radarData == nullptr || radarData == p->elevationScan_) | ||||||
|    { |    { | ||||||
|       return; |       return; | ||||||
|  |  | ||||||
|  | @ -40,6 +40,8 @@ public: | ||||||
| 
 | 
 | ||||||
|    void LoadColorTable(std::shared_ptr<common::ColorTable> colorTable) override; |    void LoadColorTable(std::shared_ptr<common::ColorTable> colorTable) override; | ||||||
|    void SelectElevation(float elevation) override; |    void SelectElevation(float elevation) override; | ||||||
|  |    void SelectTime(std::chrono::system_clock::time_point time) override; | ||||||
|  |    void Update() override; | ||||||
| 
 | 
 | ||||||
|    common::RadarProductGroup GetRadarProductGroup() const override; |    common::RadarProductGroup GetRadarProductGroup() const override; | ||||||
|    std::string               GetRadarProductName() const override; |    std::string               GetRadarProductName() const override; | ||||||
|  |  | ||||||
|  | @ -39,6 +39,8 @@ public: | ||||||
|    virtual void |    virtual void | ||||||
|    LoadColorTable(std::shared_ptr<common::ColorTable> colorTable) = 0; |    LoadColorTable(std::shared_ptr<common::ColorTable> colorTable) = 0; | ||||||
|    virtual void SelectElevation(float elevation); |    virtual void SelectElevation(float elevation); | ||||||
|  |    virtual void SelectTime(std::chrono::system_clock::time_point time) = 0; | ||||||
|  |    virtual void Update() = 0; | ||||||
| 
 | 
 | ||||||
|    virtual common::RadarProductGroup GetRadarProductGroup() const = 0; |    virtual common::RadarProductGroup GetRadarProductGroup() const = 0; | ||||||
|    virtual std::string               GetRadarProductName() const  = 0; |    virtual std::string               GetRadarProductName() const  = 0; | ||||||
|  |  | ||||||
|  | @ -19,14 +19,14 @@ typedef std::function<std::shared_ptr<RadarProductView>( | ||||||
|    CreateRadarProductFunction; |    CreateRadarProductFunction; | ||||||
| 
 | 
 | ||||||
| std::shared_ptr<RadarProductView> RadarProductViewFactory::Create( | std::shared_ptr<RadarProductView> RadarProductViewFactory::Create( | ||||||
|    const std::string&                            productGroup, |    common::RadarProductGroup                     productGroup, | ||||||
|    const std::string&                            productName, |    const std::string&                            productName, | ||||||
|    float                                         elevation, |    float                                         elevation, | ||||||
|    std::shared_ptr<manager::RadarProductManager> radarProductManager) |    std::shared_ptr<manager::RadarProductManager> radarProductManager) | ||||||
| { | { | ||||||
|    std::shared_ptr<RadarProductView> view = nullptr; |    std::shared_ptr<RadarProductView> view = nullptr; | ||||||
| 
 | 
 | ||||||
|    if (productGroup == "L2") |    if (productGroup == common::RadarProductGroup::Level2) | ||||||
|    { |    { | ||||||
|       common::Level2Product product = common::GetLevel2Product(productName); |       common::Level2Product product = common::GetLevel2Product(productName); | ||||||
| 
 | 
 | ||||||
|  | @ -43,7 +43,8 @@ std::shared_ptr<RadarProductView> RadarProductViewFactory::Create( | ||||||
|    else |    else | ||||||
|    { |    { | ||||||
|       BOOST_LOG_TRIVIAL(warning) |       BOOST_LOG_TRIVIAL(warning) | ||||||
|          << logPrefix_ << "Unknown radar product group: " << productGroup; |          << logPrefix_ << "Unknown radar product group: " | ||||||
|  |          << common::GetRadarProductGroupName(productGroup); | ||||||
|    } |    } | ||||||
| 
 | 
 | ||||||
|    return view; |    return view; | ||||||
|  |  | ||||||
|  | @ -28,7 +28,7 @@ private: | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
|    static std::shared_ptr<RadarProductView> |    static std::shared_ptr<RadarProductView> | ||||||
|    Create(const std::string&                            productGroup, |    Create(common::RadarProductGroup                     productGroup, | ||||||
|           const std::string&                            productName, |           const std::string&                            productName, | ||||||
|           float                                         elevation, |           float                                         elevation, | ||||||
|           std::shared_ptr<manager::RadarProductManager> radarProductManager); |           std::shared_ptr<manager::RadarProductManager> radarProductManager); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dan Paulat
						Dan Paulat