Please note that the listed file extensions are exemplary and more information will be added in the future. Generally, all input files are text files. You can find the corresponding format descriptions here.
*.rnx, *.yyo
RINEX version 3, 4, and 2 (until 2.10) are supported. RINEX 2.11 may not work with multi-GNSS observations and, therefore, RINEX 3+ is recommended for multi-GNSS processing.
readRINEX.m reads the whole RINEX file (post-processing) and RINEX2Epoch.m extracts then the data for a specific epoch.
*.bia, *.bsx
input.BIASES.sinex is a struct with fields for the bias types OSB, DSB, and ISB.
OSB, DSB, ISB are structs with fields for each satellite (e.g., G02, E17, G23, ...). Each satellite field is a struct containing fields for the value of the bias, the start and the end. These 3 fields are vectors of the same length and same indices means they belong together. The following functions are used to apply the biases from a Sinex Bias file.
raPPPid creates a struct with the fields .DSB, .OSB, and .ISB (not implemented). These three fields have subfields for all satellites of GPS, GLONASS, Galileo, and BeiDou. Each satellite field gets fields for the exisiting biases in the Sinex Bias file. Each of these bias field gets the following 5 fields: .value [ns], .start [sow], .ende [sow], .start_gpsweek [weeks], and .ende_gpsweek [weeks]
All satellite fields for OSB, DSB, and ISB are initialized. Missing biases result in empty fields. [cy] are converted into [ns].
raPPPid searches for the required biases. If necessary, it attempts to create missing biases (e.g., DSBs). The used biases are saved as output for further processing (e.g., gps week, ns).
Example creation of missing DSB:
C1WC2W = C1CC2W - C1CC1W
Because (following Sinex Bias format description):
C1WC1C = C1W - C1C or C1W = C5Q - C5QC1W
Conversion [ns] -> [m]. The biases are applied to the observations of the current epoch.
Jump to Table of Content
*.fcb
readSGGFCBs.m reads the text file containing Fractional Phase Biases and the data is saved into input.BIASES.WL_UPDs and input.BIASES.NL_UPDs.
*.DCB
read_dcb.m reads GPS and GLONASS Differential Code Biases (DCBs) and saves them into input.BIASES.dcb_P1P2, input.BIASES.dcb_P1P2_GLO, input.BIASES.dcb_P2C2, and input.BIASES.dcb_P2C2_GLO. They DCBs are saved sorted by PRN number in the unit [ns].
*.IOX, *.INX, *.yyi
read_ionex_TUW.m reads the IONEX file and saves the data into a struct, saved in input.IONO.ionex.
Jump to Table of Content
*.sp3
read_precise_eph.m reads the orbit file into a struct (for each GNSS) with the following fields: X, Y, Z, t, and dT (satellite coordinates, time, and satellite clock). These structs are saved into input.ORBCLK.preciseEph_GPS, .preciseEph_GLO, .preciseEph_GAL, .preciseEph_BDS, and .preciseEph_QZSS.
*.clk
read_precise_clocks.m reads the clock file into a struct (for each GNSS) with the following fields: t, dT and sigma_dT (time, satellite clock, and accuracy of satellite clock). These structs are saved into input.ORBCLK.preciseClk_GPS, .preciseClk_GLO, .preciseClk_GAL, .preciseClk_BDS, and .preciseClk_QZSS and into a *.mat-file to enable faster loading in the next processing. The *.clk-file is deleted.
*.snx
getCoordinates.m tries to download and read the coordinates of the processed station. Thereby, the functions getOwnCoordinates.m, get_IGS_coordinates.m, and get_EUREF_coordinates.m are called. readSINEXcoordinates.m is used to read SINEX files.
Jump to Table of Content
The broadcasted navigation message is saved into a matrix for each GNSS. Each column of this matrix corresponds to one data entry. Furthermore, each row corresponds to a specific variable. Please note that some data is converted to, for example, GPS time during the read-in of the navigation message. Check read_nav_multi.m and the following table for details:
GPS | GLONASS | Galileo | BeiDou | |
1 | prn | prn | prn | prn |
2 | clock drift rate c2 | clock offset [s] | clock drift rate c2 | clock drift rate c2 |
3 | M0 | relative frequency bias | M0 | M0 |
4 | sqrt(major semi-axis) | mess. frame time [sow UTC] | sqrt(major semi-axis) | sqrt(major semi-axis) |
5 | delta n | X [km] | delta n | delta n |
6 | eccentricity | Y [km] | eccentricity | eccentricity |
7 | omega | Z [km] | omega | omega |
8 | cuc | X velocity [km] | cuc | cuc |
9 | cus | Y velocity [km] | cus | cus |
10 | crc | Z velocity [km] | crc | crc |
11 | crs | X acceleration [km] | crs | crs |
12 | i0 | Y acceleration [km] | i0 | i0 |
13 | idot | Z acceleration [km] | idot | idot |
14 | cic | health | cic | cic |
15 | cis | channel number | cis | cis |
16 | omega0 | correction system time to UTC [s] | omega0 | omega0 |
17 | omega dot | GPS week | omega dot | omega dot |
18 | toe | toe | toe | toe |
19 | clock bias c0 | IOD | clock bias c0 | clock bias c0 |
20 | clock drift c1 | type | clock drift c1 | clock drift c1 |
21 | toc | x | toc | toc |
22 | time group delay [s] | x | group delay E1/E5a [s] | IOD |
23 | health | x | SV health | health |
24 | IOD ephemeris | x | IOD ephemeris | age of data |
25 | IOD clock | x | group delay E1/E5b | group delay B1/B3 |
26 | codes | x | x | group delay B2/B3 |
27 | GPS week | x | week | week |
28 | accuracy | x | SISA, signal in space accuracy | accuracy |
29 | tom [sow] | x | tom [sow] | tom [sow] |
30 | type | x | type | type |
abbreviation | unit | description |
---|---|---|
M0 | [rad] | Mean Anomaly at Reference Time |
eccentricity | [] | Eccentricity |
omega | [rad] | Argument of Perigee |
cuc | [rad] | Amplitude of the Cosine Harmonic Correction Term to the Argument of Latitude |
cus | [rad] | Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude |
crc | [m] | Amplitude of the Cosine Harmonic Correction Term to the Orbit Radius |
crs | [m] | Amplitude of the Sine Harmonic Correction Term to the Orbit Radius |
i0 | [rad] | Inclination Angle at Reference Time |
omega0 | [rad] | Longitude of Ascending Node of Orbit Plane at Weekly Epoch |
omega dot | [rad/s] | Rate of Right Ascension |
clock drift rate | [s/s²] | 2nd degree polynomial for clock correction, coefficient c2 |
major semi-axis | [sqrt(m)] | Square Root of the Semi-Major Axis |
delta n | [rad/s] | Mean Motion Difference from Computed Value |
idot | [rad/s] | Rate of Inclination Angle |
cic | [rad] | Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination |
cis | [rad] | Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination |
time of ephemeris | [sow] | |
clock bias | [s] | 2nd degree polynomial for clock correction, coefficient c0 |
clock drift | [s/s] | 2nd degree polynomial for clock correction, coefficient c1 |
toe | [s] | time of ephemeris |
toc | [s] | time of clock |
time group delay | [s] | |
health | [] | |
codes | [] | |
accuracy | [] | |
tom | [sow] | time of transmission |
type | [] | type of the navigation message (e.g., LNAV), 0 = not known, otherwise some number *) |
*) in the Galileo case, type shows a binary number as decimal. Therefore, use dec2bin to convert decimal to binary. Depending on the set bits, the navigation message can be determined (RINEX specifications → Bit 0: I/NAV E1-B, Bit 1: F/NAV E5a-I, Bit 2: I/NAV E5b-I)
Jump to Table of Content
*.atx
readAntex.m reads the phase center offsets (PCOs) and phase center variations (PCVs) for all satellites and the receiver antenna. This function saves the data into input.OTHER.PCO and input.OTHER.PCV.
checkAntex.m replaces missing antenna calibrations with the values of other frequencies or GPS values.
Real-time correction streams recorded with the BKG Ntrip Client (BNC) can be used within raPPPid. When reading the data, raPPPid creates a matrix for each GNSS (e.g. corr2brdc_GPS) containing the data from the stream. In general, the rows of the matrices are epochs and the column number corresponds to the PRN of the satellite of the corresponding GNSS. A struct called corr2brdc_vtec is also created, containing the potential VTEC data of the correction stream.
corr2brdc_GPS:
corr2brdc_GAL, corr2brdc_GLO, and corr2brdc_BDS have the same structure as corr2brdc_GPS.
corr2brdc_vtec: 5 fields
Jump to Table of Content
All required data is downloaded from the VMF data server http://vmf.geo.tuwien.ac.at/.
VMF3 or VMF1 data is downloaded using get_V3GR.m or get_VMF1.m. Depending on the data being processed, either the sitewise or gridwise version is used. VMF3+GRAD data is named V3GR and stored in input.TROPO.V3GR.data. VMF1 data is saved as input.TROPO.VMF1.data.
V3GR | VMF1 | |
---|---|---|
1 | station name | |
2 | modified Julian date | |
3 | hydrostatic "a" coefficient | |
4 | wet "a" coefficient | |
5 | zenith hydrostatic delay [m] | |
6 | zenith wet delay [m] | |
7 | pressure at the site [hPa], empty for gridwise |
mean temperature of the atmosphere at the Earth surface corresponding to orography_ell [K] |
8 | temperature at the site [°C], empty for gridwise |
pressure at the site [hPa], empty for gridwise |
9 | water vapor pressure at the site [hPa], empty for gridwise | temperature at the site [°C], empty for gridwise |
10 | hydrostatic north gradient Gn_h [mm] | water vapor pressure at the site [hPa], empty for gridwise |
11 | hydrostatic east gradient Ge_h [mm] | orthometric height of the station [m] (using geoid EGM96), empty for gridwise |
12 | wet north gradient Gn_w [mm] | |
13 | wet east gradient Ge_w [mm] |
Then in modelErrorSources.m the ZHD, ZWD, gradients, hydrostatic a coefficient and wet a coefficient are interpolated in time and the mapping functions mfh and mfw are calculated using vmf3.m, vmf3_ht.m, vmf1.m or vmf1_ht.m.
The GPT3 grid is read in readAllInputFiles.m. In modelErrorSources.m the function gpt3_5_fast reads the model values for the current epoch to calculate, for example, the ZHD and ZWD. The mapping functions mfh and mfw are calculated with vmf3_ht.m.
Jump to Table of Content