mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 16:50:06 +00:00
Add Generic Radar Data as a common base class to message types 1 and 31
This commit is contained in:
parent
b8b0812ce6
commit
571d0b2ce9
8 changed files with 191 additions and 41 deletions
|
|
@ -1,4 +1,5 @@
|
|||
#include <scwx/wsr88d/ar2v_file.hpp>
|
||||
#include <scwx/wsr88d/rda/digital_radar_data_generic.hpp>
|
||||
#include <scwx/wsr88d/rda/level2_message_factory.hpp>
|
||||
#include <scwx/wsr88d/rda/rda_types.hpp>
|
||||
#include <scwx/util/logger.hpp>
|
||||
|
|
@ -109,7 +110,7 @@ std::chrono::system_clock::time_point Ar2vFile::end_time() const
|
|||
|
||||
if (p->radarData_.size() > 0)
|
||||
{
|
||||
std::shared_ptr<rda::DigitalRadarDataGeneric> lastRadial =
|
||||
std::shared_ptr<rda::GenericRadarData> lastRadial =
|
||||
p->radarData_.crbegin()->second->crbegin()->second;
|
||||
|
||||
endTime = util::TimePoint(lastRadial->modified_julian_date(),
|
||||
|
|
@ -431,7 +432,7 @@ void Ar2vFileImpl::IndexFile()
|
|||
rda::WaveformType waveformType =
|
||||
vcpData_->waveform_type(elevationCut.first);
|
||||
|
||||
std::shared_ptr<rda::DigitalRadarDataGeneric>& radial0 =
|
||||
std::shared_ptr<rda::GenericRadarData>& radial0 =
|
||||
(*elevationCut.second)[0];
|
||||
|
||||
if (radial0 == nullptr)
|
||||
|
|
|
|||
|
|
@ -501,7 +501,7 @@ public:
|
|||
};
|
||||
|
||||
DigitalRadarDataGeneric::DigitalRadarDataGeneric() :
|
||||
Level2Message(), p(std::make_unique<Impl>())
|
||||
GenericRadarData(), p(std::make_unique<Impl>())
|
||||
{
|
||||
}
|
||||
DigitalRadarDataGeneric::~DigitalRadarDataGeneric() = default;
|
||||
|
|
@ -586,6 +586,18 @@ std::uint16_t DigitalRadarDataGeneric::data_block_count() const
|
|||
return p->dataBlockCount_;
|
||||
}
|
||||
|
||||
std::uint16_t DigitalRadarDataGeneric::volume_coverage_pattern_number() const
|
||||
{
|
||||
std::uint16_t vcpNumber = 0;
|
||||
|
||||
if (p->volumeDataBlock_ != nullptr)
|
||||
{
|
||||
vcpNumber = p->volumeDataBlock_->volume_coverage_pattern_number();
|
||||
}
|
||||
|
||||
return vcpNumber;
|
||||
}
|
||||
|
||||
std::shared_ptr<DigitalRadarDataGeneric::ElevationDataBlock>
|
||||
DigitalRadarDataGeneric::elevation_data_block() const
|
||||
{
|
||||
|
|
@ -604,7 +616,7 @@ DigitalRadarDataGeneric::volume_data_block() const
|
|||
return p->volumeDataBlock_;
|
||||
}
|
||||
|
||||
std::shared_ptr<DigitalRadarDataGeneric::MomentDataBlock>
|
||||
std::shared_ptr<GenericRadarData::MomentDataBlock>
|
||||
DigitalRadarDataGeneric::moment_data_block(DataBlockType type) const
|
||||
{
|
||||
std::shared_ptr<MomentDataBlock> momentDataBlock = nullptr;
|
||||
|
|
|
|||
61
wxdata/source/scwx/wsr88d/rda/generic_radar_data.cpp
Normal file
61
wxdata/source/scwx/wsr88d/rda/generic_radar_data.cpp
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
#include <scwx/wsr88d/rda/generic_radar_data.hpp>
|
||||
#include <scwx/util/logger.hpp>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace wsr88d
|
||||
{
|
||||
namespace rda
|
||||
{
|
||||
|
||||
static const std::string logPrefix_ = "scwx::wsr88d::rda::generic_radar_data";
|
||||
|
||||
static const std::unordered_map<std::string, DataBlockType> strToDataBlock_ {
|
||||
{"VOL", DataBlockType::Volume},
|
||||
{"ELV", DataBlockType::Elevation},
|
||||
{"RAD", DataBlockType::Radial},
|
||||
{"REF", DataBlockType::MomentRef},
|
||||
{"VEL", DataBlockType::MomentVel},
|
||||
{"SW ", DataBlockType::MomentSw},
|
||||
{"ZDR", DataBlockType::MomentZdr},
|
||||
{"PHI", DataBlockType::MomentPhi},
|
||||
{"RHO", DataBlockType::MomentRho},
|
||||
{"CFP", DataBlockType::MomentCfp}};
|
||||
|
||||
class GenericRadarData::MomentDataBlock::Impl
|
||||
{
|
||||
public:
|
||||
explicit Impl() {}
|
||||
};
|
||||
|
||||
GenericRadarData::MomentDataBlock::MomentDataBlock() :
|
||||
p(std::make_unique<Impl>())
|
||||
{
|
||||
}
|
||||
GenericRadarData::MomentDataBlock::~MomentDataBlock() = default;
|
||||
|
||||
GenericRadarData::MomentDataBlock::MomentDataBlock(MomentDataBlock&&) noexcept =
|
||||
default;
|
||||
GenericRadarData::MomentDataBlock& GenericRadarData::MomentDataBlock::operator=(
|
||||
MomentDataBlock&&) noexcept = default;
|
||||
|
||||
class GenericRadarData::Impl
|
||||
{
|
||||
public:
|
||||
explicit Impl() {};
|
||||
~Impl() = default;
|
||||
};
|
||||
|
||||
GenericRadarData::GenericRadarData() :
|
||||
Level2Message(), p(std::make_unique<Impl>())
|
||||
{
|
||||
}
|
||||
GenericRadarData::~GenericRadarData() = default;
|
||||
|
||||
GenericRadarData::GenericRadarData(GenericRadarData&&) noexcept = default;
|
||||
GenericRadarData&
|
||||
GenericRadarData::operator=(GenericRadarData&&) noexcept = default;
|
||||
|
||||
} // namespace rda
|
||||
} // namespace wsr88d
|
||||
} // namespace scwx
|
||||
Loading…
Add table
Add a link
Reference in a new issue