Documentation
¶
Index ¶
- Variables
- func GetLeapSeconds(queryTime time.Time) (s int, err error)
- func SerializeRnxObs(w io.Writer, epochMap observation.Epoch, settings *Settings) error
- func SerializeRnxObs2(w io.Writer, epoch observation.Epoch, settings *Settings) (err error)
- func SerializeRnxObs3(w io.Writer, epoch observation.Epoch, settings *Settings) (err error)
- func SerializeRnxObs4(w io.Writer, epoch observation.Epoch, settings *Settings) (err error)
- func ToRinex2Nav(w io.Writer, ephemeris ephemeris.GenericEphemeris) error
- func ToRinex3Nav(w io.Writer, ephemeris ephemeris.GenericEphemeris) error
- func ToRinex4Nav(w io.Writer, ephemeris ephemeris.GenericEphemeris) error
- type Header
- func (h *Header) AddAntennaOffsetRecord(antennaOffsetHEN [3]float64)
- func (h *Header) AddAntennaPositionRecord(antennaPosition [3]float64)
- func (h *Header) AddAntennaRecord(antennaSerial, antennaModel string)
- func (h *Header) AddEndOfHeaderRecord()
- func (h *Header) AddLeapSecondsRecord()
- func (h *Header) AddMarkerNameRecord(markerName string)
- func (h *Header) AddObsTypesRecord(settings *Settings)
- func (h *Header) AddObsTypesRecordV2(settings *Settings)
- func (h *Header) AddObsTypesRecordV3(settings *Settings) error
- func (h *Header) AddObserverRecord(observer, agency string)
- func (h *Header) AddProgramRecord(program, runBy string)
- func (h *Header) AddReceiverRecord(receiverSerial, receiverModel, receiverFirmware string)
- func (h *Header) AddTimeOfFirstObsRecord(timeOfFirst time.Time)
- func (h *Header) AddTimeOfLastObsRecord(timeOfLast time.Time)
- func (h *Header) AddVersionRecord(version float64, rinexType, rinexSystem string)
- func (h *Header) GetDate() (s string, err error)
- func (h *Header) GetRinex2Types() (typeMap map[int][]string, err error)
- func (h *Header) GetRinex3Types() (types map[int][]string, err error)
- func (h *Header) GetRinexProgram() (s string, err error)
- func (h *Header) GetRinexSystem() (s string, err error)
- func (h *Header) GetRinexType() (t string, err error)
- func (h *Header) GetRinexVersion() (version float64, err error)
- func (h *Header) GetRunBy() (s string, err error)
- func (h *Header) String() string
- func (h *Header) Write(w io.Writer) (err error)
- type LeapSecond
- type ObsLineElement
- type ObservationTypesMap
- type OutputSetting
- type OutputSettings
- type OutputType
- type Record
- type Scanner
- func (scanner Scanner) DeserializeRnx3NavValues(line string, nLines int) (vals []float64, err error)
- func (scanner Scanner) DeserializeRnx4NavValues(line string, nLines int) (vals []float64, err error)
- func (scanner Scanner) DeserializeRnxMet2Epoch() (epoch met.Epoch, err error)
- func (scanner Scanner) DeserializeRnxMet3Epoch() (epoch met.Epoch, err error)
- func (scanner Scanner) DeserializeRnxMet4Epoch() (epoch met.Epoch, err error)
- func (scanner Scanner) DeserializeRnxNavEpoch2() (eph ephemeris.GenericEphemeris, err error)
- func (scanner Scanner) DeserializeRnxNavEpoch3() (eph ephemeris.GenericEphemeris, err error)
- func (scanner Scanner) DeserializeRnxNavEpoch4() (eph ephemeris.GenericEphemeris, err error)
- func (scanner Scanner) DeserializeRnxNavGLO() (eph ephemeris.GenericEphemeris, err error)
- func (scanner Scanner) DeserializeRnxNavGPS() (eph ephemeris.GenericEphemeris, err error)
- func (scanner Scanner) DeserializeRnxObsEpoch2() (observation.Epoch, error)
- func (scanner Scanner) DeserializeRnxObsEpoch3() (observation.Epoch, error)
- func (scanner Scanner) DeserializeRnxObsEpoch4() (observation.Epoch, error)
- func (scanner Scanner) NextMetEpoch() (epoch met.Epoch, err error)
- func (scanner Scanner) NextNavEpoch() (eph ephemeris.GenericEphemeris, err error)
- func (scanner Scanner) NextObsEpoch() (epoch observation.Epoch, err error)
- func (scanner Scanner) ScanHeader() (header Header, err error)
- type Settings
Constants ¶
This section is empty.
Variables ¶
var ObservationKeyLookup = map[gnss.System]map[string]observation.ObservationKey{ gnss.GPS: { "L1": {Frequency: observation.GPS_L1, SignalType: observation.C}, "L2": {Frequency: observation.GPS_L2, SignalType: observation.W}, "L5": {Frequency: observation.GPS_L5, SignalType: observation.Q}, "P1": {Frequency: observation.GPS_L1, SignalType: observation.W}, "P2": {Frequency: observation.GPS_L2, SignalType: observation.W}, "C1": {Frequency: observation.GPS_L1, SignalType: observation.C}, "C2": {Frequency: observation.GPS_L2, SignalType: observation.L}, "C5": {Frequency: observation.GPS_L5, SignalType: observation.Q}, "D1": {Frequency: observation.GPS_L1, SignalType: observation.C}, "D2": {Frequency: observation.GPS_L2, SignalType: observation.W}, "D5": {Frequency: observation.GPS_L5, SignalType: observation.Q}, "S1": {Frequency: observation.GPS_L1, SignalType: observation.C}, "S2": {Frequency: observation.GPS_L2, SignalType: observation.W}, "S5": {Frequency: observation.GPS_L5, SignalType: observation.Q}, }, gnss.GLONASS: { "L1": {Frequency: observation.GLONASS_G1, SignalType: observation.C}, "L2": {Frequency: observation.GLONASS_G2, SignalType: observation.C}, "C1": {Frequency: observation.GLONASS_G1, SignalType: observation.C}, "P1": {Frequency: observation.GLONASS_G1, SignalType: observation.P}, "C2": {Frequency: observation.GLONASS_G2, SignalType: observation.C}, "P2": {Frequency: observation.GLONASS_G2, SignalType: observation.P}, "D1": {Frequency: observation.GLONASS_G1, SignalType: observation.C}, "D2": {Frequency: observation.GLONASS_G2, SignalType: observation.C}, "S1": {Frequency: observation.GLONASS_G1, SignalType: observation.C}, "S2": {Frequency: observation.GLONASS_G2, SignalType: observation.C}, }, gnss.SBAS: { "L1": {Frequency: observation.SBAS_L1, SignalType: observation.C}, "L5": {Frequency: observation.SBAS_L5, SignalType: observation.I}, "C1": {Frequency: observation.SBAS_L1, SignalType: observation.C}, "C5": {Frequency: observation.SBAS_L5, SignalType: observation.I}, "D1": {Frequency: observation.SBAS_L1, SignalType: observation.C}, "D5": {Frequency: observation.SBAS_L5, SignalType: observation.I}, "S1": {Frequency: observation.SBAS_L1, SignalType: observation.C}, "S5": {Frequency: observation.SBAS_L5, SignalType: observation.I}, }, gnss.GALILEO: { "C1": {Frequency: observation.Galileo_E1, SignalType: observation.C}, "C5": {Frequency: observation.Galileo_E5a, SignalType: observation.Q}, "C7": {Frequency: observation.Galileo_E5b, SignalType: observation.Q}, "C8": {Frequency: observation.Galileo_E5ab, SignalType: observation.Q}, "C6": {Frequency: observation.Galileo_E6, SignalType: observation.C}, "L1": {Frequency: observation.Galileo_E1, SignalType: observation.C}, "L5": {Frequency: observation.Galileo_E5a, SignalType: observation.Q}, "L7": {Frequency: observation.Galileo_E5b, SignalType: observation.Q}, "L8": {Frequency: observation.Galileo_E5ab, SignalType: observation.Q}, "L6": {Frequency: observation.Galileo_E6, SignalType: observation.C}, "D1": {Frequency: observation.Galileo_E1, SignalType: observation.C}, "D5": {Frequency: observation.Galileo_E5a, SignalType: observation.Q}, "D7": {Frequency: observation.Galileo_E5b, SignalType: observation.Q}, "D8": {Frequency: observation.Galileo_E5ab, SignalType: observation.Q}, "D6": {Frequency: observation.Galileo_E6, SignalType: observation.C}, "S1": {Frequency: observation.Galileo_E1, SignalType: observation.C}, "S5": {Frequency: observation.Galileo_E5a, SignalType: observation.Q}, "S7": {Frequency: observation.Galileo_E5b, SignalType: observation.Q}, "S8": {Frequency: observation.Galileo_E5ab, SignalType: observation.Q}, "S6": {Frequency: observation.Galileo_E6, SignalType: observation.C}, }, }
ObservationKeyLookup maps a GNSS system and its RINEX 2.11 observation code (e.g. "L2") to a ObservationKey.
Unfortunantly, the RINEX 2.11 observation codes cannot be mapped to RINEX 3&4 observation codes without making assumptions about how the RINEX file was generated. For example, we don't know if the "L2" column contains L2C or L2W values.
var ( // REGEX_TYPE_SV_MSSG is a regular expression for capturing TYPE/SV/MSSG from RINEX 4 navigation files REGEX_TYPE_SV_MSSG = regexp.MustCompile(`> (EPH|STO|EOP|ION)\s([A-Z]{1})([0-9]{2}|\s{2})\s([A-Z0-9]+)`) )
Functions ¶
func SerializeRnxObs ¶ added in v0.15.0
func SerializeRnxObs2 ¶
SerializeRnxObs2 writes a observation.EpochMap as RINEX 2 to the provided io.Writer interface.
func SerializeRnxObs3 ¶
SerializeRnxObs3 writes a observation.EpochMap as RINEX 3 to the provided io.Writer interface.
func SerializeRnxObs4 ¶
SerializeRnxObs4 writes a observation.EpochMap as RINEX 4 to the provided io.Writer interface. The ordering of the observation types are in gnssSet. The selection of measurements to be output (phase, range, snr, doppler) is controlled by outputSettings.
func ToRinex2Nav ¶ added in v0.15.0
func ToRinex2Nav(w io.Writer, ephemeris ephemeris.GenericEphemeris) error
func ToRinex3Nav ¶ added in v0.15.0
func ToRinex3Nav(w io.Writer, ephemeris ephemeris.GenericEphemeris) error
func ToRinex4Nav ¶ added in v0.14.1
func ToRinex4Nav(w io.Writer, ephemeris ephemeris.GenericEphemeris) error
Types ¶
type Header ¶
Header is a struct for storing header records.
func NewMetHeader ¶ added in v0.15.0
func NewNavHeader ¶ added in v0.15.0
func NewObsHeader ¶ added in v0.15.0
NewObsHeader creates a new RINEX observation header.
func (*Header) AddAntennaOffsetRecord ¶ added in v0.15.0
AddAntennaOffsetRecord adds an ANTENNA: DELTA H/E/N record to the header.
func (*Header) AddAntennaPositionRecord ¶ added in v0.15.0
AddAntennaPositionRecord adds an APPROX POSITION XYZ record to the header.
func (*Header) AddAntennaRecord ¶ added in v0.15.0
AddAntennaRecord adds an ANT # / TYPE record to the header.
func (*Header) AddEndOfHeaderRecord ¶ added in v0.15.0
func (h *Header) AddEndOfHeaderRecord()
AddEndOfHeaderRecord adds an END OF HEADER record to the header.
func (*Header) AddLeapSecondsRecord ¶ added in v0.15.0
func (h *Header) AddLeapSecondsRecord()
AddLeapSecondsRecord adds a LEAP SECONDS record to the header. (optional)
func (*Header) AddMarkerNameRecord ¶ added in v0.15.0
AddMarkerNameRecord adds a MARKER NAME record to the header.
func (*Header) AddObsTypesRecord ¶ added in v0.15.0
AddObsTypesRecord adds a # / TYPES OF OBSERV or a SYS / # / OBS TYPES record to the header depending on the version.
func (*Header) AddObsTypesRecordV2 ¶ added in v0.15.0
func (*Header) AddObsTypesRecordV3 ¶ added in v0.15.0
func (*Header) AddObserverRecord ¶ added in v0.15.0
AddObserverRecord adds an OBSERVER / AGENCY record to the header.
func (*Header) AddProgramRecord ¶ added in v0.15.0
AddProgramRecord adds a PGM / RUN BY / DATE record to the header.
func (*Header) AddReceiverRecord ¶ added in v0.15.0
AddReceiverRecord adds a REC # / TYPE / VERS record to the header.
func (*Header) AddTimeOfFirstObsRecord ¶ added in v0.15.0
AddTimeOfFirstObsRecord adds a TIME OF FIRST OBS record to the header.
func (*Header) AddTimeOfLastObsRecord ¶ added in v0.16.2
func (*Header) AddVersionRecord ¶ added in v0.15.0
AddVersionRecord adds a RINEX VERSION / TYPE record to the header.
func (*Header) GetRinex2Types ¶
GetRinex2Types - Get the observation types for RINEX 2
func (*Header) GetRinex3Types ¶
GetRinex3Types -
func (*Header) GetRinexProgram ¶ added in v0.15.0
GetRinexPGM parses the program, run_by, and date fields from the RINEX header
func (*Header) GetRinexSystem ¶
GetRinexSystem parses the system from the RINEX header.
func (*Header) GetRinexType ¶
GetRinexType parses the RINEX type from the header.
func (*Header) GetRinexVersion ¶
GetRinexVersion parses the RINEX version from the header.
func (*Header) GetRunBy ¶ added in v0.15.0
GetRinexPGM parses the program, run_by, and date fields from the RINEX header
type LeapSecond ¶
type ObsLineElement ¶
type ObservationTypesMap ¶ added in v0.15.0
type OutputSettings ¶
type OutputSettings map[OutputType]bool
OutputSettings
func (*OutputSettings) CountEnabled ¶
func (os *OutputSettings) CountEnabled() (count int)
CountEnabled
type OutputType ¶
type OutputType int
const ( // Phase Phase OutputType = iota // Range Range // SNR SNR // Doppler Doppler )
type Record ¶ added in v0.15.0
Record stores the header lines in a struct splitting the content (60 chars) and the label (20 chars) into two separate strings. Supports versions 2,3,4.
type Scanner ¶
Scanner -
func NewScanner ¶
NewScanner creates a new RINEX scanner. It reads the header, extracting the version, type and system. Other type and version specific information is extracted in later steps.
func (Scanner) DeserializeRnx3NavValues ¶
func (Scanner) DeserializeRnx4NavValues ¶
func (Scanner) DeserializeRnxMet2Epoch ¶
func (Scanner) DeserializeRnxMet3Epoch ¶
func (Scanner) DeserializeRnxMet4Epoch ¶
func (Scanner) DeserializeRnxNavEpoch2 ¶
func (scanner Scanner) DeserializeRnxNavEpoch2() (eph ephemeris.GenericEphemeris, err error)
func (Scanner) DeserializeRnxNavEpoch3 ¶
func (scanner Scanner) DeserializeRnxNavEpoch3() (eph ephemeris.GenericEphemeris, err error)
func (Scanner) DeserializeRnxNavEpoch4 ¶
func (scanner Scanner) DeserializeRnxNavEpoch4() (eph ephemeris.GenericEphemeris, err error)
func (Scanner) DeserializeRnxNavGLO ¶
func (scanner Scanner) DeserializeRnxNavGLO() (eph ephemeris.GenericEphemeris, err error)
func (Scanner) DeserializeRnxNavGPS ¶
func (scanner Scanner) DeserializeRnxNavGPS() (eph ephemeris.GenericEphemeris, err error)
func (Scanner) DeserializeRnxObsEpoch2 ¶
func (scanner Scanner) DeserializeRnxObsEpoch2() (observation.Epoch, error)
DeserializeRnxObsEpoch2 -
func (Scanner) DeserializeRnxObsEpoch3 ¶
func (scanner Scanner) DeserializeRnxObsEpoch3() (observation.Epoch, error)
DeserializeRnxObsEpoch3 -
func (Scanner) DeserializeRnxObsEpoch4 ¶
func (scanner Scanner) DeserializeRnxObsEpoch4() (observation.Epoch, error)
DeserializeRnxObsEpoch4 -
func (Scanner) NextNavEpoch ¶
func (scanner Scanner) NextNavEpoch() (eph ephemeris.GenericEphemeris, err error)
NextNavEpoch -
func (Scanner) NextObsEpoch ¶
func (scanner Scanner) NextObsEpoch() (epoch observation.Epoch, err error)
NextObsEpoch -
func (Scanner) ScanHeader ¶
ScanHeader -
type Settings ¶ added in v0.15.0
type Settings struct {
RinexVersion float64 `json:"rinex_version"`
RinexType string `json:"rinex_type"`
RinexSystem string `json:"rinex_system"`
Interval float64 `json:"interval"`
TimeOfFirst time.Time `json:"time_of_first"`
TimeOfLast time.Time `json:"time_of_last"`
MarkerName string `json:"marker_name"`
MarkerNumber string `json:"marker_number"`
MarkerType string `json:"marker_type"`
Observer string `json:"observer"`
Agency string `json:"agency"`
Program string `json:"program"`
RunBy string `json:"run_by"`
Date string `json:"date"`
ReceiverModel string `json:"receiver_model"`
ReceiverSerial string `json:"receiver_serial"`
ReceiverFirmware string `json:"receiver_firmware"`
AntennaModel string `json:"antenna_model"`
AntennaSerial string `json:"antenna_serial"`
AntennaPosition coordinates.Vector3D `json:"antenna_position"`
AntennaOffsetHEN coordinates.Vector3D `json:"antenna_offsetHEN"`
// Sets which observation types to output (e.g. range, phase, doppler, snr)
OutputSettings *OutputSettings `json:"output_settings"`
// This stores the order of the observation codes for each system.
// The order of the observation codes is important for the RINEX 3&4 headers.
// Important: RINEX 3 and 4 cannot be streamed because the header must be written before the data.
ObservationsBySystem *observation.ObservationsBySystem `json:"observation_map"`
}
Settings - settings for RINEX header
func NewSettings ¶ added in v0.15.0
func NewSettings() *Settings
Source Files
¶
- codes_rnx_2.go
- deserialize_rnx_met_2.go
- deserialize_rnx_met_3.go
- deserialize_rnx_met_4.go
- deserialize_rnx_nav_2.go
- deserialize_rnx_nav_3.go
- deserialize_rnx_nav_4.go
- deserialize_rnx_obs_2.go
- deserialize_rnx_obs_3.go
- deserialize_rnx_obs_4.go
- header.go
- header_settings.go
- scanner.go
- serialize_rnx_nav_2.go
- serialize_rnx_nav_3.go
- serialize_rnx_nav_4.go
- serialize_rnx_obs.go
- serialize_rnx_obs_2.go
- serialize_rnx_obs_3.go
- serialize_rnx_obs_4.go
- utilities.go