Sidereon.GNSS.RINEX.Observations.Header (Sidereon v3.0.0)

Copy Markdown View Source

A RINEX observation header, with every record the product holds.

Sidereon.GNSS.RINEX.Observations.header/1 returns the file header; Sidereon.GNSS.RINEX.Observations.header_at/2 returns the header in effect at an epoch, which is the file header with the header records of every event at or before that epoch laid over it.

A field is nil where the product holds no such record, and an empty list or map where the record holds no entries. Nothing absent is read as zero.

Code lists

  • obs_codes - per constellation letter, the union of every list the file declares, in its header and after its events: the file header's codes first, then each code a later list declares, in the order first declared. Every observation and cycle slip value is index-aligned to this union.
  • declared_obs_codes - the lists this header itself declares. In the file header they are its SYS / # / OBS TYPES records, or at version 2 what rinex2_types reads as; in a header from header_at/2 they are the lists in effect at that epoch.
  • rinex2_types - the version 2 # / TYPES OF OBSERV names as read, and [] at version 3.
  • rinex2_system - the constellation letter a version 2 version record names, nil for a mixed file or at version 3.

Other records

  • time_of_first_obs, time_of_last_obs - {epoch, time_scale}, epoch being {{year, month, day}, {hour, minute, second}} and time_scale the scale's abbreviation, such as "GPST".
  • prn_obs_counts - per satellite id, the PRN / # OF OBS counts, nil for a blank count.
  • glonass_cod_phs_bis - nil where the header has no GLONASS COD/PHS/BIS record; [] for a blank record, which RINEX 3.05 section 5.2.16 gives where "the GLONASS code phase alignment is unknown"; otherwise [{code, bias_m}] with nil for a blank bias.
  • unretained_header_labels - labels the reader read and does not keep, which a rewrite drops.

Summary

Types

A civil epoch {{year, month, day}, {hour, minute, second}} in the file's time scale.

t()

Types

epoch()

@type epoch() :: {{integer(), integer(), integer()}, {integer(), integer(), float()}}

A civil epoch {{year, month, day}, {hour, minute, second}} in the file's time scale.

t()

@type t() :: %Sidereon.GNSS.RINEX.Observations.Header{
  agency: String.t() | nil,
  antenna: %{number: String.t(), antenna_type: String.t()} | nil,
  antenna_delta_hen_m: {float(), float(), float()} | nil,
  approx_position_m: {float(), float(), float()} | nil,
  comments: [String.t()],
  declared_obs_codes: %{required(String.t()) => [String.t()]},
  glonass_cod_phs_bis: [{String.t(), float() | nil}] | nil,
  glonass_slots: %{required(String.t()) => integer()},
  interval_s: float() | nil,
  leap_seconds: Sidereon.GNSS.RINEX.Observations.LeapSeconds.t() | nil,
  marker_name: String.t() | nil,
  marker_number: String.t() | nil,
  marker_type: String.t() | nil,
  n_satellites: non_neg_integer() | nil,
  obs_codes: %{required(String.t()) => [String.t()]},
  observer: String.t() | nil,
  phase_shifts: [Sidereon.GNSS.RINEX.Observations.PhaseShift.t()],
  prn_obs_counts: %{required(String.t()) => [non_neg_integer() | nil]},
  program_run_by_date:
    %{program: String.t(), run_by: String.t(), date: String.t()} | nil,
  receiver:
    %{number: String.t(), receiver_type: String.t(), version: String.t()} | nil,
  rinex2_system: String.t() | nil,
  rinex2_types: [String.t()],
  scale_factors: [Sidereon.GNSS.RINEX.Observations.ScaleFactor.t()],
  signal_strength_unit: String.t() | nil,
  time_of_first_obs: {epoch(), String.t()} | nil,
  time_of_last_obs: {epoch(), String.t()} | nil,
  unretained_header_labels: [String.t()],
  version: float()
}