nexrad

package
v0.0.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 23, 2022 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MESSAGE_HEADER_SIZE = 16
)

Variables

This section is empty.

Functions

func DecompressBzipChunk

func DecompressBzipChunk(chunk []byte) []byte

Types

type DataHeader

type DataHeader struct {
	RadarIdentifier          string   // ICAO Radar Identifier
	CollectionTime           uint32   // Radial data collection time in milliseconds past midnight GMT
	JulianDate               uint16   // Current Julian date
	AzimuthNumber            uint16   // Radial number within elevation scan
	AzimuthAngle             float32  // Azimuth angle at which radial data was collected
	CompressionIndicator     uint8    // Indicates if message type 31 is compressed and what method of compression is used. The Data Header Block is not compressed.
	Spare                    uint8    // Spare and forces halfword alignment
	RadialLength             uint16   // Uncompressed length of the radial in bytes including the Data Header block length
	AzimuthResolutionSpacing uint8    // Azimuthal spacing between adjacent radials
	RadialStatus             uint8    // Radial Status (e.g. first, last)
	ElevationNumber          uint8    // Elevation number within volume scan
	CutSectorNumber          uint8    // Sector Number within cut
	ElevationAngle           float32  // Elevation angle at which radial radar data was collected
	RadialSpotBlankingStatus uint8    // Spot blanking status for current radial, elevation scan and volume scan
	AzimuthIndexingMode      float32  // Azimuth indexing value (Set if azimuth angle is keyed to constant angles)
	DataBlockCount           uint16   // Number of data blocks
	Pointers                 []uint32 // Data block pointers
}

func ReadDataHeader

func ReadDataHeader(reader *bytereader.Reader) (*DataHeader, error)

func (*DataHeader) Validate

func (dh *DataHeader) Validate() error

type ElevationData

type ElevationData struct {
	DataBlockType       string
	DataName            string
	Size                uint16
	Atmos               float32
	CalibrationConstant float32
}

func ReadElevationData

func ReadElevationData(dataHeader *DataHeader, reader *bytereader.Reader) (*ElevationData, error)

func (*ElevationData) Validate

func (ed *ElevationData) Validate() error

type Message

type Message struct {
	MessageHeader *MessageHeader
	DataHeader    *DataHeader
	VolumeData    *VolumeData
	ElevationData *ElevationData
	RadialData    *RadialData
	MomentData    map[string]*MomentData
}

func UnpackChunk added in v0.0.6

func UnpackChunk(chunk []byte) ([]*Message, error)

func UnpackMessagesFromChunkFile

func UnpackMessagesFromChunkFile(filePath string) ([]*Message, error)

type MessageHeader

type MessageHeader struct {
	Size                    uint16
	RDARedundantChannel     uint8
	MessageType             uint8
	IDSequenceNumber        uint16
	JulianDate              uint16
	MillisecondsOfDay       uint32
	NumberOfMessageSegments uint16
	MessageSegmentNumber    uint16
}

func ReadMessageHeader

func ReadMessageHeader(reader *bytereader.Reader) (*MessageHeader, error)

func (*MessageHeader) Validate

func (mh *MessageHeader) Validate() error

type MomentData

type MomentData struct {
	DataBlockType                 string
	DataName                      string
	Reserved                      []byte
	DataMomentGateCount           uint16
	DataMomentRange               float32
	DataMomentRangeSampleInterval float32
	Tover                         float32
	SnrThreshold                  float32
	ControlFlags                  uint8
	DataWordSize                  uint8
	Scale                         float32
	Offset                        float32
	MomentData                    []float32
}

func ReadMomentData

func ReadMomentData(reader *bytereader.Reader, pointer uint32) (*MomentData, error)

func (*MomentData) Validate

func (md *MomentData) Validate() error

type RadialData

type RadialData struct {
	DataBlockType                 string
	DataName                      string
	Size                          uint16
	UnambiguousRange              float32
	HorizontalNoiseLevel          float32
	VerticalNoiseLevel            float32
	NyquistVelocity               float32
	Spares                        []byte
	HorizontalCalibrationConstant float32
	VerticalCalibrationConstant   float32
}

func ReadRadialData

func ReadRadialData(dataHeader *DataHeader, reader *bytereader.Reader) (*RadialData, error)

func (*RadialData) Validate

func (rd *RadialData) Validate() error

type RangeCheck

type RangeCheck struct {
	Name  string
	Value float64
	Min   float64
	Max   float64
}

type VolumeData

type VolumeData struct {
	DataBlockType                  string
	DataName                       string
	Size                           uint16
	VersionMajor                   uint8
	VersionMinor                   uint8
	Latitude                       float32
	Longitude                      float32
	SiteHeight                     int16
	FeedhornHeight                 uint16
	CalibrationConstant            float32
	HorizontalShvTxPower           float32
	VerticalShvTxPower             float32
	SystemDifferentialReflectivity float32
	InitialSystemDifferentialPhase float32
	VolumeCoveragePatternNumber    uint16
	ProcessingStatus               uint16
}

func ReadVolumeData

func ReadVolumeData(dataHeader *DataHeader, reader *bytereader.Reader) (*VolumeData, error)

func (*VolumeData) Validate

func (vd *VolumeData) Validate() error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL