Sidereon.GNSS.Ionosphere.SlantRequest (Sidereon v3.0.0)

Copy Markdown View Source

One query for Sidereon.GNSS.Ionosphere.ionex_slant_batch/3.

The receiver geodetic latitude/longitude and the satellite azimuth/elevation are in degrees. epoch is a NaiveDateTime or {{y, m, d}, {h, min, s}} tuple on a whole second: the IONEX epoch axis is integer seconds, so a sub-second epoch is refused rather than rounded onto it. frequency_hz is the carrier the delay is reported on.

The numeric fields are held as they were given, integer or float, and are read onto the f64 the boundary takes only when the request is converted. An integer Elixir carries but a double cannot is refused as that row rather than raising out of the conversion of the batch it is in.

What a row is refused for

A request that cannot be put into the form the boundary takes fails as its own batch row, keeping its place in the result list:

  • :non_integer_second_epoch - the epoch is not on a whole second, or is not an epoch this binding reads.
  • {:invalid_request_field, field, value} - a field that is not a number.
  • {:invalid_epoch_field, field, value} - a date or clock field of a tuple epoch that is not an integer, such as an hour arrived at by division.
  • {:value_out_of_range, field, value} - a numeric field, a calendar field or a J2000 second past the range the boundary carries it in, with the value that was outside it. A numeric field is past that range when it is an integer larger in magnitude than the largest finite double.
  • :bad_slant_request - the row is not a SlantRequest.

A request that converts but that the product refuses keeps its own reason instead; see Sidereon.GNSS.Ionosphere.ionex_slant_evaluation/8.

Summary

Functions

A slant query at the receiver {lat_deg, lon_deg} toward {azimuth_deg, elevation_deg}, on frequency_hz, at epoch.

Types

t()

@type t() :: %Sidereon.GNSS.Ionosphere.SlantRequest{
  azimuth_deg: number(),
  elevation_deg: number(),
  epoch: NaiveDateTime.t() | tuple(),
  frequency_hz: number(),
  lat_deg: number(),
  lon_deg: number()
}

Functions

new(lat_deg, lon_deg, azimuth_deg, elevation_deg, epoch, frequency_hz)

@spec new(
  number(),
  number(),
  number(),
  number(),
  NaiveDateTime.t() | tuple(),
  number()
) :: t()

A slant query at the receiver {lat_deg, lon_deg} toward {azimuth_deg, elevation_deg}, on frequency_hz, at epoch.

The numbers are kept as they were given. Whether each one can be read onto the double the boundary takes is decided when the request is converted, so a value that cannot be is that row's refusal and a request always exists to hold it.