mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 20:30:05 +00:00
Digital radar data moment gates and accessors
This commit is contained in:
parent
d648c1db08
commit
ded87eb937
3 changed files with 130 additions and 1 deletions
|
|
@ -78,6 +78,9 @@ struct MomentDataBlock : DataBlock
|
|||
float scale_;
|
||||
float offset_;
|
||||
|
||||
std::vector<char> momentGates8_;
|
||||
std::vector<uint16_t> momentGates16_;
|
||||
|
||||
static std::unique_ptr<MomentDataBlock>
|
||||
Create(const std::string& dataBlockType,
|
||||
const std::string& dataName,
|
||||
|
|
@ -107,7 +110,33 @@ struct MomentDataBlock : DataBlock
|
|||
p->scale_ = Message::SwapFloat(p->scale_);
|
||||
p->offset_ = Message::SwapFloat(p->offset_);
|
||||
|
||||
// TODO: Moment gates
|
||||
if (p->numberOfDataMomentGates_ >= 0 &&
|
||||
p->numberOfDataMomentGates_ <= 1840)
|
||||
{
|
||||
if (p->dataWordSize_ == 8)
|
||||
{
|
||||
p->momentGates8_.resize(p->numberOfDataMomentGates_);
|
||||
is.read(p->momentGates8_.data(), p->numberOfDataMomentGates_);
|
||||
}
|
||||
else if (p->dataWordSize_ == 16)
|
||||
{
|
||||
p->momentGates16_.resize(p->numberOfDataMomentGates_);
|
||||
is.read(reinterpret_cast<char*>(p->momentGates16_.data()),
|
||||
p->numberOfDataMomentGates_ * 2);
|
||||
Message::SwapVector(p->momentGates16_);
|
||||
}
|
||||
else
|
||||
{
|
||||
BOOST_LOG_TRIVIAL(warning)
|
||||
<< logPrefix_ << "Invalid data word size: " << p->dataWordSize_;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
BOOST_LOG_TRIVIAL(warning)
|
||||
<< logPrefix_ << "Invalid number of data moment gates: "
|
||||
<< p->numberOfDataMomentGates_;
|
||||
}
|
||||
|
||||
return p;
|
||||
}
|
||||
|
|
@ -360,6 +389,81 @@ DigitalRadarData::DigitalRadarData(DigitalRadarData&&) noexcept = default;
|
|||
DigitalRadarData&
|
||||
DigitalRadarData::operator=(DigitalRadarData&&) noexcept = default;
|
||||
|
||||
const std::string& DigitalRadarData::radar_identifier() const
|
||||
{
|
||||
return p->radarIdentifier_;
|
||||
}
|
||||
|
||||
uint32_t DigitalRadarData::collection_time() const
|
||||
{
|
||||
return p->collectionTime_;
|
||||
}
|
||||
|
||||
uint16_t DigitalRadarData::modified_julian_date() const
|
||||
{
|
||||
return p->modifiedJulianDate_;
|
||||
}
|
||||
|
||||
uint16_t DigitalRadarData::azimuth_number() const
|
||||
{
|
||||
return p->azimuthNumber_;
|
||||
}
|
||||
|
||||
float DigitalRadarData::azimuth_angle() const
|
||||
{
|
||||
return p->azimuthAngle_;
|
||||
}
|
||||
|
||||
uint8_t DigitalRadarData::compression_indicator() const
|
||||
{
|
||||
return p->compressionIndicator_;
|
||||
}
|
||||
|
||||
uint16_t DigitalRadarData::radial_length() const
|
||||
{
|
||||
return p->radialLength_;
|
||||
}
|
||||
|
||||
uint8_t DigitalRadarData::azimuth_resolution_spacing() const
|
||||
{
|
||||
return p->azimuthResolutionSpacing_;
|
||||
}
|
||||
|
||||
uint8_t DigitalRadarData::radial_status() const
|
||||
{
|
||||
return p->radialStatus_;
|
||||
}
|
||||
|
||||
uint8_t DigitalRadarData::elevation_number() const
|
||||
{
|
||||
return p->elevationNumber_;
|
||||
}
|
||||
|
||||
uint8_t DigitalRadarData::cut_sector_number() const
|
||||
{
|
||||
return p->cutSectorNumber_;
|
||||
}
|
||||
|
||||
float DigitalRadarData::elevation_angle() const
|
||||
{
|
||||
return p->elevationAngle_;
|
||||
}
|
||||
|
||||
uint8_t DigitalRadarData::radial_spot_blanking_status() const
|
||||
{
|
||||
return p->radialSpotBlankingStatus_;
|
||||
}
|
||||
|
||||
uint8_t DigitalRadarData::azimuth_indexing_mode() const
|
||||
{
|
||||
return p->azimuthIndexingMode_;
|
||||
}
|
||||
|
||||
uint16_t DigitalRadarData::data_block_count() const
|
||||
{
|
||||
return p->dataBlockCount_;
|
||||
}
|
||||
|
||||
bool DigitalRadarData::Parse(std::istream& is)
|
||||
{
|
||||
BOOST_LOG_TRIVIAL(debug)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue