mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 13:30:06 +00:00
Rename DigitalRadarData to DigitalRadarDataGeneric to align with message type 31 name
This commit is contained in:
parent
6f73c19be8
commit
bfd7963d4c
6 changed files with 79 additions and 73 deletions
|
|
@ -1,7 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#include <scwx/wsr88d/nexrad_file.hpp>
|
||||
#include <scwx/wsr88d/rda/digital_radar_data.hpp>
|
||||
#include <scwx/wsr88d/rda/digital_radar_data_generic.hpp>
|
||||
#include <scwx/wsr88d/rda/volume_coverage_pattern_data.hpp>
|
||||
|
||||
#include <chrono>
|
||||
|
|
|
|||
|
|
@ -34,10 +34,11 @@ class MomentDataBlockImpl;
|
|||
class RadialDataBlockImpl;
|
||||
class VolumeDataBlockImpl;
|
||||
|
||||
class DigitalRadarData;
|
||||
class DigitalRadarDataImpl;
|
||||
class DigitalRadarDataGeneric;
|
||||
class DigitalRadarDataGenericImpl;
|
||||
|
||||
typedef std::map<uint16_t, std::shared_ptr<DigitalRadarData>> ElevationScan;
|
||||
typedef std::map<uint16_t, std::shared_ptr<DigitalRadarDataGeneric>>
|
||||
ElevationScan;
|
||||
|
||||
class DataBlock
|
||||
{
|
||||
|
|
@ -170,17 +171,17 @@ private:
|
|||
bool Parse(std::istream& is);
|
||||
};
|
||||
|
||||
class DigitalRadarData : public Level2Message
|
||||
class DigitalRadarDataGeneric : public Level2Message
|
||||
{
|
||||
public:
|
||||
explicit DigitalRadarData();
|
||||
~DigitalRadarData();
|
||||
explicit DigitalRadarDataGeneric();
|
||||
~DigitalRadarDataGeneric();
|
||||
|
||||
DigitalRadarData(const DigitalRadarData&) = delete;
|
||||
DigitalRadarData& operator=(const DigitalRadarData&) = delete;
|
||||
DigitalRadarDataGeneric(const DigitalRadarDataGeneric&) = delete;
|
||||
DigitalRadarDataGeneric& operator=(const DigitalRadarDataGeneric&) = delete;
|
||||
|
||||
DigitalRadarData(DigitalRadarData&&) noexcept;
|
||||
DigitalRadarData& operator=(DigitalRadarData&&) noexcept;
|
||||
DigitalRadarDataGeneric(DigitalRadarDataGeneric&&) noexcept;
|
||||
DigitalRadarDataGeneric& operator=(DigitalRadarDataGeneric&&) noexcept;
|
||||
|
||||
std::string radar_identifier() const;
|
||||
uint32_t collection_time() const;
|
||||
|
|
@ -205,11 +206,11 @@ public:
|
|||
|
||||
bool Parse(std::istream& is);
|
||||
|
||||
static std::shared_ptr<DigitalRadarData> Create(Level2MessageHeader&& header,
|
||||
std::istream& is);
|
||||
static std::shared_ptr<DigitalRadarDataGeneric>
|
||||
Create(Level2MessageHeader&& header, std::istream& is);
|
||||
|
||||
private:
|
||||
std::unique_ptr<DigitalRadarDataImpl> p;
|
||||
std::unique_ptr<DigitalRadarDataGenericImpl> p;
|
||||
};
|
||||
|
||||
} // namespace rda
|
||||
|
|
@ -58,7 +58,8 @@ public:
|
|||
void IndexFile();
|
||||
void ParseLDMRecords();
|
||||
void ParseLDMRecord(std::istream& is);
|
||||
void ProcessRadarData(std::shared_ptr<rda::DigitalRadarData> message);
|
||||
void ProcessRadarData(
|
||||
const std::shared_ptr<rda::DigitalRadarDataGeneric>& message);
|
||||
|
||||
std::string tapeFilename_;
|
||||
std::string extensionNumber_;
|
||||
|
|
@ -108,7 +109,7 @@ std::chrono::system_clock::time_point Ar2vFile::end_time() const
|
|||
|
||||
if (p->radarData_.size() > 0)
|
||||
{
|
||||
std::shared_ptr<rda::DigitalRadarData> lastRadial =
|
||||
std::shared_ptr<rda::DigitalRadarDataGeneric> lastRadial =
|
||||
p->radarData_.crbegin()->second->crbegin()->second;
|
||||
|
||||
endTime = util::TimePoint(lastRadial->modified_julian_date(),
|
||||
|
|
@ -389,7 +390,7 @@ void Ar2vFileImpl::HandleMessage(std::shared_ptr<rda::Level2Message>& message)
|
|||
|
||||
case static_cast<uint8_t>(rda::MessageId::DigitalRadarData):
|
||||
ProcessRadarData(
|
||||
std::static_pointer_cast<rda::DigitalRadarData>(message));
|
||||
std::static_pointer_cast<rda::DigitalRadarDataGeneric>(message));
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
@ -398,7 +399,7 @@ void Ar2vFileImpl::HandleMessage(std::shared_ptr<rda::Level2Message>& message)
|
|||
}
|
||||
|
||||
void Ar2vFileImpl::ProcessRadarData(
|
||||
std::shared_ptr<rda::DigitalRadarData> message)
|
||||
const std::shared_ptr<rda::DigitalRadarDataGeneric>& message)
|
||||
{
|
||||
uint16_t azimuthIndex = message->azimuth_number() - 1;
|
||||
uint16_t elevationIndex = message->elevation_number() - 1;
|
||||
|
|
@ -421,14 +422,14 @@ void Ar2vFileImpl::IndexFile()
|
|||
return;
|
||||
}
|
||||
|
||||
for (auto elevationCut : radarData_)
|
||||
for (auto& elevationCut : radarData_)
|
||||
{
|
||||
uint16_t elevationAngle =
|
||||
vcpData_->elevation_angle_raw(elevationCut.first);
|
||||
rda::WaveformType waveformType =
|
||||
vcpData_->waveform_type(elevationCut.first);
|
||||
|
||||
std::shared_ptr<rda::DigitalRadarData> radial0 =
|
||||
std::shared_ptr<rda::DigitalRadarDataGeneric>& radial0 =
|
||||
(*elevationCut.second)[0];
|
||||
|
||||
if (radial0 == nullptr)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#include <scwx/wsr88d/rda/digital_radar_data.hpp>
|
||||
#include <scwx/wsr88d/rda/digital_radar_data_generic.hpp>
|
||||
#include <scwx/util/logger.hpp>
|
||||
|
||||
namespace scwx
|
||||
|
|
@ -8,7 +8,8 @@ namespace wsr88d
|
|||
namespace rda
|
||||
{
|
||||
|
||||
static const std::string logPrefix_ = "scwx::wsr88d::rda::digital_radar_data";
|
||||
static const std::string logPrefix_ =
|
||||
"scwx::wsr88d::rda::digital_radar_data_generic";
|
||||
static const auto logger_ = util::Logger::Create(logPrefix_);
|
||||
|
||||
static const std::unordered_map<std::string, DataBlockType> strToDataBlock_ {
|
||||
|
|
@ -493,10 +494,10 @@ bool RadialDataBlock::Parse(std::istream& is)
|
|||
return dataBlockValid;
|
||||
}
|
||||
|
||||
class DigitalRadarDataImpl
|
||||
class DigitalRadarDataGenericImpl
|
||||
{
|
||||
public:
|
||||
explicit DigitalRadarDataImpl() :
|
||||
explicit DigitalRadarDataGenericImpl() :
|
||||
radarIdentifier_ {},
|
||||
collectionTime_ {0},
|
||||
modifiedJulianDate_ {0},
|
||||
|
|
@ -517,7 +518,7 @@ public:
|
|||
elevationDataBlock_ {nullptr},
|
||||
radialDataBlock_ {nullptr},
|
||||
momentDataBlock_ {} {};
|
||||
~DigitalRadarDataImpl() = default;
|
||||
~DigitalRadarDataGenericImpl() = default;
|
||||
|
||||
std::string radarIdentifier_;
|
||||
uint32_t collectionTime_;
|
||||
|
|
@ -543,109 +544,112 @@ public:
|
|||
momentDataBlock_;
|
||||
};
|
||||
|
||||
DigitalRadarData::DigitalRadarData() :
|
||||
Level2Message(), p(std::make_unique<DigitalRadarDataImpl>())
|
||||
DigitalRadarDataGeneric::DigitalRadarDataGeneric() :
|
||||
Level2Message(), p(std::make_unique<DigitalRadarDataGenericImpl>())
|
||||
{
|
||||
}
|
||||
DigitalRadarData::~DigitalRadarData() = default;
|
||||
DigitalRadarDataGeneric::~DigitalRadarDataGeneric() = default;
|
||||
|
||||
DigitalRadarData::DigitalRadarData(DigitalRadarData&&) noexcept = default;
|
||||
DigitalRadarData&
|
||||
DigitalRadarData::operator=(DigitalRadarData&&) noexcept = default;
|
||||
DigitalRadarDataGeneric::DigitalRadarDataGeneric(
|
||||
DigitalRadarDataGeneric&&) noexcept = default;
|
||||
DigitalRadarDataGeneric& DigitalRadarDataGeneric::operator=(
|
||||
DigitalRadarDataGeneric&&) noexcept = default;
|
||||
|
||||
std::string DigitalRadarData::radar_identifier() const
|
||||
std::string DigitalRadarDataGeneric::radar_identifier() const
|
||||
{
|
||||
return p->radarIdentifier_;
|
||||
}
|
||||
|
||||
uint32_t DigitalRadarData::collection_time() const
|
||||
uint32_t DigitalRadarDataGeneric::collection_time() const
|
||||
{
|
||||
return p->collectionTime_;
|
||||
}
|
||||
|
||||
uint16_t DigitalRadarData::modified_julian_date() const
|
||||
uint16_t DigitalRadarDataGeneric::modified_julian_date() const
|
||||
{
|
||||
return p->modifiedJulianDate_;
|
||||
}
|
||||
|
||||
uint16_t DigitalRadarData::azimuth_number() const
|
||||
uint16_t DigitalRadarDataGeneric::azimuth_number() const
|
||||
{
|
||||
return p->azimuthNumber_;
|
||||
}
|
||||
|
||||
float DigitalRadarData::azimuth_angle() const
|
||||
float DigitalRadarDataGeneric::azimuth_angle() const
|
||||
{
|
||||
return p->azimuthAngle_;
|
||||
}
|
||||
|
||||
uint8_t DigitalRadarData::compression_indicator() const
|
||||
uint8_t DigitalRadarDataGeneric::compression_indicator() const
|
||||
{
|
||||
return p->compressionIndicator_;
|
||||
}
|
||||
|
||||
uint16_t DigitalRadarData::radial_length() const
|
||||
uint16_t DigitalRadarDataGeneric::radial_length() const
|
||||
{
|
||||
return p->radialLength_;
|
||||
}
|
||||
|
||||
uint8_t DigitalRadarData::azimuth_resolution_spacing() const
|
||||
uint8_t DigitalRadarDataGeneric::azimuth_resolution_spacing() const
|
||||
{
|
||||
return p->azimuthResolutionSpacing_;
|
||||
}
|
||||
|
||||
uint8_t DigitalRadarData::radial_status() const
|
||||
uint8_t DigitalRadarDataGeneric::radial_status() const
|
||||
{
|
||||
return p->radialStatus_;
|
||||
}
|
||||
|
||||
uint8_t DigitalRadarData::elevation_number() const
|
||||
uint8_t DigitalRadarDataGeneric::elevation_number() const
|
||||
{
|
||||
return p->elevationNumber_;
|
||||
}
|
||||
|
||||
uint8_t DigitalRadarData::cut_sector_number() const
|
||||
uint8_t DigitalRadarDataGeneric::cut_sector_number() const
|
||||
{
|
||||
return p->cutSectorNumber_;
|
||||
}
|
||||
|
||||
float DigitalRadarData::elevation_angle() const
|
||||
float DigitalRadarDataGeneric::elevation_angle() const
|
||||
{
|
||||
return p->elevationAngle_;
|
||||
}
|
||||
|
||||
uint8_t DigitalRadarData::radial_spot_blanking_status() const
|
||||
uint8_t DigitalRadarDataGeneric::radial_spot_blanking_status() const
|
||||
{
|
||||
return p->radialSpotBlankingStatus_;
|
||||
}
|
||||
|
||||
uint8_t DigitalRadarData::azimuth_indexing_mode() const
|
||||
uint8_t DigitalRadarDataGeneric::azimuth_indexing_mode() const
|
||||
{
|
||||
return p->azimuthIndexingMode_;
|
||||
}
|
||||
|
||||
uint16_t DigitalRadarData::data_block_count() const
|
||||
uint16_t DigitalRadarDataGeneric::data_block_count() const
|
||||
{
|
||||
return p->dataBlockCount_;
|
||||
}
|
||||
|
||||
std::shared_ptr<ElevationDataBlock>
|
||||
DigitalRadarData::elevation_data_block() const
|
||||
DigitalRadarDataGeneric::elevation_data_block() const
|
||||
{
|
||||
return p->elevationDataBlock_;
|
||||
}
|
||||
|
||||
std::shared_ptr<RadialDataBlock> DigitalRadarData::radial_data_block() const
|
||||
std::shared_ptr<RadialDataBlock>
|
||||
DigitalRadarDataGeneric::radial_data_block() const
|
||||
{
|
||||
return p->radialDataBlock_;
|
||||
}
|
||||
|
||||
std::shared_ptr<VolumeDataBlock> DigitalRadarData::volume_data_block() const
|
||||
std::shared_ptr<VolumeDataBlock>
|
||||
DigitalRadarDataGeneric::volume_data_block() const
|
||||
{
|
||||
return p->volumeDataBlock_;
|
||||
}
|
||||
|
||||
std::shared_ptr<MomentDataBlock>
|
||||
DigitalRadarData::moment_data_block(DataBlockType type) const
|
||||
DigitalRadarDataGeneric::moment_data_block(DataBlockType type) const
|
||||
{
|
||||
std::shared_ptr<MomentDataBlock> momentDataBlock = nullptr;
|
||||
|
||||
|
|
@ -658,7 +662,7 @@ DigitalRadarData::moment_data_block(DataBlockType type) const
|
|||
return momentDataBlock;
|
||||
}
|
||||
|
||||
bool DigitalRadarData::Parse(std::istream& is)
|
||||
bool DigitalRadarDataGeneric::Parse(std::istream& is)
|
||||
{
|
||||
logger_->trace("Parsing Digital Radar Data (Message Type 31)");
|
||||
|
||||
|
|
@ -784,11 +788,11 @@ bool DigitalRadarData::Parse(std::istream& is)
|
|||
return messageValid;
|
||||
}
|
||||
|
||||
std::shared_ptr<DigitalRadarData>
|
||||
DigitalRadarData::Create(Level2MessageHeader&& header, std::istream& is)
|
||||
std::shared_ptr<DigitalRadarDataGeneric>
|
||||
DigitalRadarDataGeneric::Create(Level2MessageHeader&& header, std::istream& is)
|
||||
{
|
||||
std::shared_ptr<DigitalRadarData> message =
|
||||
std::make_shared<DigitalRadarData>();
|
||||
std::shared_ptr<DigitalRadarDataGeneric> message =
|
||||
std::make_shared<DigitalRadarDataGeneric>();
|
||||
message->set_header(std::move(header));
|
||||
|
||||
if (!message->Parse(is))
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
#include <scwx/util/vectorbuf.hpp>
|
||||
#include <scwx/wsr88d/rda/clutter_filter_bypass_map.hpp>
|
||||
#include <scwx/wsr88d/rda/clutter_filter_map.hpp>
|
||||
#include <scwx/wsr88d/rda/digital_radar_data.hpp>
|
||||
#include <scwx/wsr88d/rda/digital_radar_data_generic.hpp>
|
||||
#include <scwx/wsr88d/rda/performance_maintenance_data.hpp>
|
||||
#include <scwx/wsr88d/rda/rda_adaptation_data.hpp>
|
||||
#include <scwx/wsr88d/rda/rda_status_data.hpp>
|
||||
|
|
@ -28,14 +28,14 @@ typedef std::function<std::shared_ptr<Level2Message>(Level2MessageHeader&&,
|
|||
std::istream&)>
|
||||
CreateLevel2MessageFunction;
|
||||
|
||||
static const std::unordered_map<unsigned int, CreateLevel2MessageFunction> create_ {
|
||||
{2, RdaStatusData::Create},
|
||||
static const std::unordered_map<unsigned int, CreateLevel2MessageFunction>
|
||||
create_ {{2, RdaStatusData::Create},
|
||||
{3, PerformanceMaintenanceData::Create},
|
||||
{5, VolumeCoveragePatternData::Create},
|
||||
{13, ClutterFilterBypassMap::Create},
|
||||
{15, ClutterFilterMap::Create},
|
||||
{18, RdaAdaptationData::Create},
|
||||
{31, DigitalRadarData::Create}};
|
||||
{31, DigitalRadarDataGeneric::Create}};
|
||||
|
||||
struct Level2MessageFactory::Context
|
||||
{
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ set(SRC_WSR88D source/scwx/wsr88d/ar2v_file.cpp
|
|||
source/scwx/wsr88d/wsr88d_types.cpp)
|
||||
set(HDR_WSR88D_RDA include/scwx/wsr88d/rda/clutter_filter_bypass_map.hpp
|
||||
include/scwx/wsr88d/rda/clutter_filter_map.hpp
|
||||
include/scwx/wsr88d/rda/digital_radar_data.hpp
|
||||
include/scwx/wsr88d/rda/digital_radar_data_generic.hpp
|
||||
include/scwx/wsr88d/rda/level2_message.hpp
|
||||
include/scwx/wsr88d/rda/level2_message_factory.hpp
|
||||
include/scwx/wsr88d/rda/level2_message_header.hpp
|
||||
|
|
@ -113,7 +113,7 @@ set(HDR_WSR88D_RDA include/scwx/wsr88d/rda/clutter_filter_bypass_map.hpp
|
|||
include/scwx/wsr88d/rda/volume_coverage_pattern_data.hpp)
|
||||
set(SRC_WSR88D_RDA source/scwx/wsr88d/rda/clutter_filter_bypass_map.cpp
|
||||
source/scwx/wsr88d/rda/clutter_filter_map.cpp
|
||||
source/scwx/wsr88d/rda/digital_radar_data.cpp
|
||||
source/scwx/wsr88d/rda/digital_radar_data_generic.cpp
|
||||
source/scwx/wsr88d/rda/level2_message.cpp
|
||||
source/scwx/wsr88d/rda/level2_message_factory.cpp
|
||||
source/scwx/wsr88d/rda/level2_message_header.cpp
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue