mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-11-01 02:00:04 +00:00
Add scaled values for ranges and angles in Digital Radar Data
This commit is contained in:
parent
807d98d7ef
commit
5058e3493c
2 changed files with 79 additions and 31 deletions
|
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
#include <scwx/wsr88d/rda/level2_message.hpp>
|
#include <scwx/wsr88d/rda/level2_message.hpp>
|
||||||
|
|
||||||
|
#include <units/angle.h>
|
||||||
|
#include <units/length.h>
|
||||||
|
|
||||||
namespace scwx
|
namespace scwx
|
||||||
{
|
{
|
||||||
namespace wsr88d
|
namespace wsr88d
|
||||||
|
|
@ -24,15 +27,21 @@ public:
|
||||||
std::uint32_t collection_time() const;
|
std::uint32_t collection_time() const;
|
||||||
std::uint16_t modified_julian_date() const;
|
std::uint16_t modified_julian_date() const;
|
||||||
std::uint16_t unambiguous_range() const;
|
std::uint16_t unambiguous_range() const;
|
||||||
std::uint16_t azimuth_angle() const;
|
std::uint16_t azimuth_angle_raw() const;
|
||||||
|
units::degrees<float> azimuth_angle() const;
|
||||||
std::uint16_t azimuth_number() const;
|
std::uint16_t azimuth_number() const;
|
||||||
std::uint16_t radial_status() const;
|
std::uint16_t radial_status() const;
|
||||||
std::uint16_t elevation_angle() const;
|
std::uint16_t elevation_angle_raw() const;
|
||||||
|
units::degrees<float> elevation_angle() const;
|
||||||
std::uint16_t elevation_number() const;
|
std::uint16_t elevation_number() const;
|
||||||
std::uint16_t surveillance_range() const;
|
std::uint16_t surveillance_range_raw() const;
|
||||||
std::uint16_t doppler_range() const;
|
units::kilometers<float> surveillance_range() const;
|
||||||
std::uint16_t surveillance_range_sample_interval() const;
|
std::uint16_t doppler_range_raw() const;
|
||||||
std::uint16_t doppler_range_sample_interval() const;
|
units::kilometers<float> doppler_range() const;
|
||||||
|
std::uint16_t surveillance_range_sample_interval_raw() const;
|
||||||
|
units::kilometers<float> surveillance_range_sample_interval() const;
|
||||||
|
std::uint16_t doppler_range_sample_interval_raw() const;
|
||||||
|
units::kilometers<float> doppler_range_sample_interval() const;
|
||||||
std::uint16_t number_of_surveillance_bins() const;
|
std::uint16_t number_of_surveillance_bins() const;
|
||||||
std::uint16_t number_of_doppler_bins() const;
|
std::uint16_t number_of_doppler_bins() const;
|
||||||
std::uint16_t cut_sector_number() const;
|
std::uint16_t cut_sector_number() const;
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,12 @@ namespace rda
|
||||||
static const std::string logPrefix_ = "scwx::wsr88d::rda::digital_radar_data";
|
static const std::string logPrefix_ = "scwx::wsr88d::rda::digital_radar_data";
|
||||||
static const auto logger_ = util::Logger::Create(logPrefix_);
|
static const auto logger_ = util::Logger::Create(logPrefix_);
|
||||||
|
|
||||||
|
// Table III-A Angle Data Format
|
||||||
|
constexpr float kAngleDataScale = 0.0054931640625f;
|
||||||
|
|
||||||
|
// Table III-B Range Format
|
||||||
|
constexpr float kRangeScale = 0.001f;
|
||||||
|
|
||||||
class DigitalRadarData::Impl
|
class DigitalRadarData::Impl
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
@ -73,11 +79,16 @@ std::uint16_t DigitalRadarData::unambiguous_range() const
|
||||||
return p->unambiguousRange_;
|
return p->unambiguousRange_;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::uint16_t DigitalRadarData::azimuth_angle() const
|
std::uint16_t DigitalRadarData::azimuth_angle_raw() const
|
||||||
{
|
{
|
||||||
return p->azimuthAngle_;
|
return p->azimuthAngle_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
units::degrees<float> DigitalRadarData::azimuth_angle() const
|
||||||
|
{
|
||||||
|
return units::degrees<float> {p->azimuthAngle_ * kAngleDataScale};
|
||||||
|
}
|
||||||
|
|
||||||
std::uint16_t DigitalRadarData::azimuth_number() const
|
std::uint16_t DigitalRadarData::azimuth_number() const
|
||||||
{
|
{
|
||||||
return p->azimuthNumber_;
|
return p->azimuthNumber_;
|
||||||
|
|
@ -88,36 +99,64 @@ std::uint16_t DigitalRadarData::radial_status() const
|
||||||
return p->radialStatus_;
|
return p->radialStatus_;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::uint16_t DigitalRadarData::elevation_angle() const
|
std::uint16_t DigitalRadarData::elevation_angle_raw() const
|
||||||
{
|
{
|
||||||
return p->elevationAngle_;
|
return p->elevationAngle_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
units::degrees<float> DigitalRadarData::elevation_angle() const
|
||||||
|
{
|
||||||
|
return units::degrees<float> {p->elevationAngle_ * kAngleDataScale};
|
||||||
|
}
|
||||||
|
|
||||||
std::uint16_t DigitalRadarData::elevation_number() const
|
std::uint16_t DigitalRadarData::elevation_number() const
|
||||||
{
|
{
|
||||||
return p->elevationNumber_;
|
return p->elevationNumber_;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::uint16_t DigitalRadarData::surveillance_range() const
|
std::uint16_t DigitalRadarData::surveillance_range_raw() const
|
||||||
{
|
{
|
||||||
return p->surveillanceRange_;
|
return p->surveillanceRange_;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::uint16_t DigitalRadarData::doppler_range() const
|
units::kilometers<float> DigitalRadarData::surveillance_range() const
|
||||||
|
{
|
||||||
|
return units::kilometers<float> {p->surveillanceRange_ * kRangeScale};
|
||||||
|
}
|
||||||
|
|
||||||
|
std::uint16_t DigitalRadarData::doppler_range_raw() const
|
||||||
{
|
{
|
||||||
return p->dopplerRange_;
|
return p->dopplerRange_;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::uint16_t DigitalRadarData::surveillance_range_sample_interval() const
|
units::kilometers<float> DigitalRadarData::doppler_range() const
|
||||||
|
{
|
||||||
|
return units::kilometers<float> {p->dopplerRange_ * kRangeScale};
|
||||||
|
}
|
||||||
|
|
||||||
|
std::uint16_t DigitalRadarData::surveillance_range_sample_interval_raw() const
|
||||||
{
|
{
|
||||||
return p->surveillanceRangeSampleInterval_;
|
return p->surveillanceRangeSampleInterval_;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::uint16_t DigitalRadarData::doppler_range_sample_interval() const
|
units::kilometers<float>
|
||||||
|
DigitalRadarData::surveillance_range_sample_interval() const
|
||||||
|
{
|
||||||
|
return units::kilometers<float> {p->surveillanceRangeSampleInterval_ *
|
||||||
|
kRangeScale};
|
||||||
|
}
|
||||||
|
|
||||||
|
std::uint16_t DigitalRadarData::doppler_range_sample_interval_raw() const
|
||||||
{
|
{
|
||||||
return p->dopplerRangeSampleInterval_;
|
return p->dopplerRangeSampleInterval_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
units::kilometers<float> DigitalRadarData::doppler_range_sample_interval() const
|
||||||
|
{
|
||||||
|
return units::kilometers<float> {p->dopplerRangeSampleInterval_ *
|
||||||
|
kRangeScale};
|
||||||
|
}
|
||||||
|
|
||||||
std::uint16_t DigitalRadarData::number_of_surveillance_bins() const
|
std::uint16_t DigitalRadarData::number_of_surveillance_bins() const
|
||||||
{
|
{
|
||||||
return p->numberOfSurveillanceBins_;
|
return p->numberOfSurveillanceBins_;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue