SP3
SP3 Precise GNSS Orbit files parser.
SP3 is specifid by IGS.
The parser only supports Revisions C & D at the moment and rejects revisions A & B.
Getting started
Add "sp3" to you cargo file
[]
= "1"
Parse an SP3 file
use crate*;
use Constellation;
use PathBuf;
use FromStr;
let path = new
.join
.join
.join;
let sp3 = SP3from_file;
assert!;
let sp3 = sp3.unwrap;
/*
* Test general infos
*/
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
// browse SV positions
for in sp3.sv_position
// browse SV clock
for in sp3.sv_clock
File Merge
Merge files together, for example to create a context spanning 48 hours
let folder = new
.join
.join;
let sp3_a = folder.clone
.join;
let sp3_b = folder.clone
.join;
let sp3 = SP3from_file
.unwrap;
let sp3_b = SP3from_file
.unwrap;
let sp3 = sp3_a.merge;
assert!;
Position Vector Interpolation
Interpolate SV position at desired Epoch.
In order to preserve the high (+/- 1mm precision) for SP3 datasets,
we recommend using at least an interpolation order of 9 for typical SP3 files
with 15' epoch intervals.
The current implementation restricts the interpolatable Epochs at [tmin, tmax] = [(N +1)/2 * τ, T(n-1) - (N +1)/2 * τ], both included, where N is the interpolation order, τ the epoch interval, and T(n-1) the last Epoch in this file.
Refer to the online API for more information
use *;
use sv;
use FromStr;
use PathBuf;
use Sv;
let path = new
.join
.join
.join;
let sp3 = SP3from_file
.unwrap;
let epoch = from_str
.unwrap;
let interpolated = sp3.interpolate;
assert!;
let epoch = from_str
.unwrap;
let interpolated = sp3.interpolate;
assert!;
let = interpolated.unwrap;
// demonstrate error is still sub cm
assert!; // distances are expressed in km in all SP3
assert!;
assert!;