gnss_solutions
Version:
Javascript GNSS solution analysis library
143 lines (142 loc) • 4.89 kB
TypeScript
import * as Immutable from "immutable";
import * as sym from "./constants";
/**
* ECEF position: x, y, z
*
* TODO: associate a datum and epoch-of-datum
* TODO (Buro): Add some manner of Point definition from other JavaScript
* solution libraries.
*
* @param {Number} x - X parameter (meters)
* @param {Number} y - Y parameter (meters)
* @param {Number} z - Z parameter (meters)
*/
export declare class ECEFSolution {
x: number;
y: number;
z: number;
constructor(x: number, y: number, z: number);
distanceTo(b: ECEFSolution): number;
toLLA(): LLASolution;
toJSON(): Object;
static objHasValidECEF(obj: Object): boolean;
static fromJSON(obj: Object): ECEFSolution;
static fromMap(map: Immutable.Map<string, number>): ECEFSolution;
toString(): string;
}
/**
* Baseline vector in ECEF: x, y, z
*
* @param {Number} x - X parameter (meters)
* @param {Number} y - Y parameter (meters)
* @param {Number} z - Z parameter (meters)
*/
export declare class ECEFBaseline {
dx: number;
dy: number;
dz: number;
constructor(dx: number, dy: number, dz: number);
norm(): number;
toJSON(): Object;
static objHasValidECEF(obj: Object): boolean;
static fromJSON(obj: Object): ECEFBaseline;
static fromMap(map: Immutable.Map<string, number>): ECEFBaseline;
toString(): string;
}
/**
* Latitude, longitude, ellipsoid altitude
*
* @param {Number} lat - latitude (decimal degrees)
* @param {String} latPole - latitude pole: 'N' or 'S'
* @param {Number} lon - longitude (decimal degrees)
* @param {String} lonPole - longitude pole: 'W' or 'E'
* @param {Number} alt - altitude (meters)
*/
export declare class LLASolution {
lat: number;
latPole: string;
lon: number;
lonPole: string;
alt: number;
constructor(lat: number, latPole: string, lon: number, lonPole: string, alt: number);
distanceTo(b: LLASolution): number[];
/**
* Convert to ECEF frame.
*
* @return {ECEFSolution}
*/
toECEF(): ECEFSolution;
static objHasValidLLA(obj: Object): boolean;
static fromJSON(obj: Object): LLASolution;
static fromMap(map: Immutable.Map<string, number>): LLASolution;
/**
* Materialize a LLASolution from a DMS string. Used here is the ellipsoidal
* height.
*
* For more details, see https://www.ngs.noaa.gov/PUBS_LIB/gislis96.html.
*
* @param {String} latStr - Latitude (DMS)
* @param {String} lonStr - Longitude (DMS)
* @param {Number} height - Ellipsoidal height (meters)
* @return {LLASolution}
*/
static fromDMS(latStr: string, lonStr: string, height: number): LLASolution;
toJSON(): Object;
toString(): string;
}
/**
* A solution status represents a position solution from a sample GNSS receiver,
* and additionally keeps track of a few other parameters of interest reported
* during that epoch. It represents a sample solution at a particular instance
* of time, and stores a flat map for a particular instance in time, using the
* result schema defined by Swift's gnss-testing repository:
* https://github.com/swift-nav/gnss-testing/blob/master/DESIGN.md#swift-solution-csv
*
* Example:
* ```
* import { ECEFSolution, SolutionStatus } from "./coords";
* const time = new Date('2016-06-05');
* const ecef = new coords.ECEFSolution(ctest.earthA, 0, 0);
* const soln = new coords.SolutionStatus(time, ecef.toLLA(), 0, 3, 0.5);
* console.log(event.toJSON()); =>
* {"epoch(gpst)": new Date("2016-06-05T00:00:00.000Z"),
* "fix_mode": "integer_rtk",
* "latency(sec)": 0.5,
* "num_sats": 3,
* "est_error_2d(m)": NaN,
* "est_error_3d(m)": NaN,
* "est_error_v(m)": NaN,
* "baseline_x(m)": NaN,
* "baseline_y(m)": NaN,
* "baseline_z(m)": NaN,
* "rover_pos_x(m)":6378137,
* "rover_pos_y(m)":0,
* "rover_pos_z(m)":0,
* "rover_pos_lat(deg)":0,
* "rover_pos_lon(deg)":0,
* "rover_pos_height(m)":0}
* ```
*/
export declare class SolutionStatus {
time: Date;
ecefSolution: ECEFSolution;
ecefBaseline: ECEFBaseline;
llaSolution: LLASolution;
computedEcef: ECEFSolution;
computedLla: LLASolution;
fixMode: sym.FIX_MODE_TYPE;
numSats: number;
latency: number;
estHError: number;
estVError: number;
estSphError: number;
constructor(time: Date, ecef?: ECEFSolution, lla?: LLASolution, fixMode?: sym.FIX_MODE_TYPE, numSats?: number, latency?: number, ecefBaseline?: ECEFBaseline, estHError?: number, estVError?: number, estSphError?: number);
toJSON(): Object;
static fromJSON(obj: Object): SolutionStatus;
static fromMap(map: Immutable.Map<string, number>): SolutionStatus;
compareTo(ref: SolutionStatus): [number, number, number];
toString(): string;
getLLA(): LLASolution;
getECEF(): ECEFSolution;
mergeWith(other: SolutionStatus): SolutionStatus;
}