mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 04:40:06 +00:00 
			
		
		
		
	fully working merging of data from last and current scan
This commit is contained in:
		
							parent
							
								
									8b7a3e9781
								
							
						
					
					
						commit
						094d286b41
					
				
					 5 changed files with 140 additions and 153 deletions
				
			
		|  | @ -1520,87 +1520,17 @@ RadarProductManager::GetLevel2Data(wsr88d::rda::DataBlockType dataBlockType, | |||
|    std::vector<float>                          elevationCuts {}; | ||||
|    std::chrono::system_clock::time_point       foundTime {}; | ||||
| 
 | ||||
|    auto records = p->GetLevel2ProductRecords(time); | ||||
| 
 | ||||
|    //TODO decide when to use chunked vs archived data.
 | ||||
|    if (true) | ||||
|    if constexpr (true) | ||||
|    { | ||||
|       auto currentFile = std::dynamic_pointer_cast<wsr88d::Ar2vFile>( | ||||
|          p->level2ChunksProviderManager_->provider_->LoadLatestObject()); | ||||
|       auto lastFile = std::dynamic_pointer_cast<wsr88d::Ar2vFile>( | ||||
|          p->level2ChunksProviderManager_->provider_->LoadSecondLatestObject()); | ||||
|       auto radarFile = | ||||
|          std::make_shared<wsr88d::Ar2vFile>(currentFile, lastFile); | ||||
|       std::tie(radarData, elevationCut, elevationCuts) = | ||||
|          radarFile->GetElevationScan(dataBlockType, elevation, time); | ||||
| 
 | ||||
|       /*
 | ||||
|       auto currentFile = std::dynamic_pointer_cast<wsr88d::Ar2vFile>( | ||||
|          p->level2ChunksProviderManager_->provider_->LoadLatestObject()); | ||||
|       std::shared_ptr<wsr88d::rda::ElevationScan> currentRadarData = nullptr; | ||||
|       float                                       currentElevationCut = 0.0f; | ||||
|       std::vector<float>                          currentElevationCuts; | ||||
|       if (currentFile != nullptr) | ||||
|       { | ||||
|          std::tie(currentRadarData, currentElevationCut, currentElevationCuts) = | ||||
|             currentFile->GetElevationScan(dataBlockType, elevation, time); | ||||
|       } | ||||
| 
 | ||||
|       std::shared_ptr<wsr88d::rda::ElevationScan> lastRadarData = nullptr; | ||||
|       float                                       lastElevationCut = 0.0f; | ||||
|       std::vector<float>                          lastElevationCuts; | ||||
|       auto lastFile = std::dynamic_pointer_cast<wsr88d::Ar2vFile>( | ||||
|          p->level2ChunksProviderManager_->provider_->LoadSecondLatestObject()); | ||||
|       if (lastFile != nullptr) | ||||
|       { | ||||
|          std::tie(lastRadarData, lastElevationCut, lastElevationCuts) = | ||||
|                lastFile->GetElevationScan(dataBlockType, elevation, time); | ||||
|       } | ||||
| 
 | ||||
|       if (currentRadarData != nullptr) | ||||
|       { | ||||
|          if (lastRadarData != nullptr) | ||||
|          { | ||||
|             auto& radarData0     = (*currentRadarData)[0]; | ||||
|             auto  collectionTime = std::chrono::floor<std::chrono::seconds>( | ||||
|                   scwx::util::TimePoint(radarData0->modified_julian_date(), | ||||
|                      radarData0->collection_time())); | ||||
| 
 | ||||
|             // TODO merge data
 | ||||
|             radarData     = currentRadarData; | ||||
|             elevationCut  = currentElevationCut; | ||||
|             elevationCuts = std::move(currentElevationCuts); | ||||
|             foundTime     = collectionTime; | ||||
|          } | ||||
|          else | ||||
|          { | ||||
|             auto& radarData0     = (*currentRadarData)[0]; | ||||
|             auto  collectionTime = std::chrono::floor<std::chrono::seconds>( | ||||
|                   scwx::util::TimePoint(radarData0->modified_julian_date(), | ||||
|                      radarData0->collection_time())); | ||||
| 
 | ||||
|             radarData     = currentRadarData; | ||||
|             elevationCut  = currentElevationCut; | ||||
|             elevationCuts = std::move(currentElevationCuts); | ||||
|             foundTime     = collectionTime; | ||||
|          } | ||||
|       } | ||||
|       else if (lastRadarData != nullptr) | ||||
|       { | ||||
|          auto& radarData0     = (*lastRadarData)[0]; | ||||
|          auto  collectionTime = std::chrono::floor<std::chrono::seconds>( | ||||
|                scwx::util::TimePoint(radarData0->modified_julian_date(), | ||||
|                   radarData0->collection_time())); | ||||
| 
 | ||||
|          radarData     = lastRadarData; | ||||
|          elevationCut  = lastElevationCut; | ||||
|          elevationCuts = std::move(lastElevationCuts); | ||||
|          foundTime     = collectionTime; | ||||
|       } | ||||
|       */ | ||||
|          currentFile->GetElevationScan(dataBlockType, elevation, time); | ||||
|    } | ||||
|    else | ||||
|    { | ||||
|       auto records = p->GetLevel2ProductRecords(time); | ||||
|       for (auto& recordPair : records) | ||||
|       { | ||||
|          auto& record = recordPair.second; | ||||
|  |  | |||
|  | @ -561,8 +561,7 @@ void Level2ProductView::ComputeSweep() | |||
|       Q_EMIT SweepNotComputed(types::NoUpdateReason::NotLoaded); | ||||
|       return; | ||||
|    } | ||||
|    // TODO do not do this when updating from live data
 | ||||
|    if (false && (radarData == p->elevationScan_) && | ||||
|    if ((radarData == p->elevationScan_) && | ||||
|        smoothingEnabled == p->lastSmoothingEnabled_ && | ||||
|        (showSmoothedRangeFolding == p->lastShowSmoothedRangeFolding_ || | ||||
|         !smoothingEnabled)) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 AdenKoperczak
						AdenKoperczak