Moment Data Format¶
The radar produces radar moments which can be consumed by a client application.
The radar produces two streams of data, one for each channel. The radar
processes a user-specified number of pulses. The data produced by the radar is
served by the radar using a nanomsg req socket. The requests can be made
using a DataClient
. of messages serialized with
msgpack. The msgpack object is a list of map
of key-value pairs. In the case where only a single waveform is being used,
the list will have a length of one. In the map, each key is a string. Each
stream of data has the following keys:
Note
All scan metadata is available via a separate port on the radar: 25004 by default. All scan metadata is valid for the duration of a scan; as long as scan_id doesn’t change, the metadata is valid.
To work with this data, it may be convenient to use
ScanIter
, and just iterate over ppis or radials as
desired.
key | value |
scan_id |
An integer representing the current scan id. Every time a new scan is started, this number is incremented by one. |
radial_number |
Every output radial is tagged with a monotonically increasing radial number, which enables thte client to determine if it is receiving all the data. If there are missing numbers, data is being dropped betweeen the radar and the client program. |
az |
The azimuth angle, in degrees. |
el |
The elevation angle (this is currently just the actuator readout) |
npulses |
Number of pulses that were used in computing the products. |
channel |
A number, 1 or 2 , indicating the channel that
produced this set of data. |
timestamp |
The Unix timestamp, stored as a double. It is calculated
by a call to gettimeofday . |
rev |
The data revision. This is a string like "1.0.0.beta" |
packet_header |
packet headers, as written by the FPGA. This is useful for debugging purposes. |
ref |
reflectivity. This is potentially range corrected if the scan was set up that way. [1] |
velocity |
Doppler velocity, in m/s. [1] |
mag_R1 |
Magnitude of the lag 1 autocorrelation [1]. |
gates |
An array of range gates, in meters. The number of elements in this array is the same as in the radar products. |
iq |
If output_iq was selected and you are pulling from
I/Q data server, this will have every pulse of I/Q data
in it. Otherwise, it will have only the fist pulse of
data. |
psd |
If output_psd and doppler_processing were enabled
in the scan settings, this contains the entire psd array.
This is useful only for testing and debugging. |
Note
All the arrays of data are encoded using msgpack’s
extension type
type. There is a C encoder/decoder for this type and a Python
encoder/decoder for this type. In order for a client application to use a
language other than C or Python, a msgpack decoder for this type must be
written. For an implementation in Python for encoding/decoding this
extended type, see wni.util.default_pack()
and
wni.util.ext_hook_unpack()
, respectively.
Footnotes
[1] | (1, 2, 3) ref , velocity , and mag_R1 can be configured to not be
calculated. If they were not calculated, the value will be the MessagePack
nil type, which Python interprets as a None value. |