The SBF format for GNSS receivers from Septentr
io contain different SBF
(Septentrio Binary Format) blocks. Each SBF
block contains related GNSS information and can be converted to a readable STF
(Septentrio Text Format) file using the sbf2stf
program.
The STF
blocks in a SBF
file can be obtained by running:
$ sbf2stf -f <sbf-file-name>
and results in a file similar to:
*****************************
Summary of Blocks Information
*****************************
[005914][5914]_Block_Count= 86400
(ReceiverTime (v1) = Current receiver and UTC time)
[012219][4027]_Block_Count= 86400
(MeasEpoch (v2) = measurement set of one epoch)
[020384][4000]_Block_Count= 86400
(MeasExtra (v1) = additional info such as observable variance)
[012199][4007]_Block_Count= 86400
(PVTGeodetic (v2) = Position, velocity, and time in geodetic coordinates)
[005906][5906]_Block_Count= 86400
(PosCovGeodetic (v1) = Position covariance matrix (Lat, Lon, Alt))
[005908][5908]_Block_Count= 86400
(VelCovGeodetic (v1) = Velocity covariance matrix (North, East, Up))
[004001][4001]_Block_Count= 86400
(DOP (v2) = Dilution of precision)
[004008][4008]_Block_Count= 86400
(PVTSatCartesian (v1) = Satellite positions)
[012201][4009]_Block_Count= 86400
(PVTResiduals (v2) = Measurement residuals)
[004011][4011]_Block_Count= 86400
(RAIMStatistics (v2) = Integrity statistics)
[005935][5935]_Block_Count= 86400
(GEOCorrections (v1) = Orbit, Clock and pseudoranges SBAS corrections)
[005950][5950]_Block_Count= 86400
(BaseLine (v1) = Rover-base vector coordinates)
[005921][5921]_Block_Count= 86400
(EndOfPVT (v1) = PVT epoch marker)
[004013][4013]_Block_Count= 86400
(ChannelStatus (v1) = Status of the tracking for all receiver channels)
[004012][4012]_Block_Count= 86400
(SatVisibility (v1) = Azimuth/elevation of visible satellites)
...
[005894][5894]_Block_Count= 119
(GPSUtc (v1) = GPS-UTC data from GPS subframe 5)
[004002][4002]_Block_Count= 1610
(GALNav (v1) = Galileo ephemeris, clock, health and BGD)
[004030][4030]_Block_Count= 4605
(GALIon (v1) = NeQuick Ionosphere model parameters)
[004031][4031]_Block_Count= 4514
(GALUtc (v1) = GST-UTC data)
[004032][4032]_Block_Count= 3165
(GALGstGps (v1) = GST-GPS data)
[004017][4017]_Block_Count= 163936
(PSRawCA (v1) = GPS CA navigation frame)
[004022][4022]_Block_Count= 67735
(ALRawFNAV (v1) = Galileo F/NAV navigation page)
[004058][4058]_Block_Count= 4
(IPStatus (v1) = IP address, gateway and MAC address)
[004019][4019]_Block_Count= 64991
(PSRawL5 (v1) = GPS L5 navigation frame)
[004023][4023]_Block_Count= 342258
(ALRawINAV (v1) = Galileo I/NAV navigation page)
[004018][4018]_Block_Count= 50444
(PSRawL2C (v1) = GPS L2C navigation frame)
[004003][4003]_Block_Count= 4196
(GALAlm (v1) = Almanac data for a Galileo satellite)
[004034][4034]_Block_Count= 2671
(ALSARRLM (v1) = Search-and-rescue return link message)
*********************************
Total of 41 Different blocks found
Total of 0 CRC errors found
*********************************
For getting one or more of these STF
blocks, please execute:
$ sbf2stf -h
This stfproc
repository currently processes for following STF
blocks:
stfgeodetic.py
- processing of PVTGeodetic (v2) = Position, velocity, and time in geodetic coordinates
stfrxstatus.py
- processing of ReceiverStatus (v2) = Overall status information of the receiver
The script stfgeodetic.py
reads the PVTGeodetic v2 STF
file into a python
DataFrame
and
- calculates from the geodetic coordinates the
UTM
projection coordinates - adds a
DateTime
structure.
The script plots the UTM
coordinates (versus time and scatter plot), determines what navigation services have been used and whether 2D/3D positioning is used. This is reflected in the plots created.
$ stfgeodetic.py -h
usage: stfgeodetic.py [-h] [-d DIR] -f FILES -g GNSS [-m MARKER MARKER MARKER]
[-l {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET} {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET}]
stfgeodetic.py reads in a sbf2stf converted SBF Geodetic-v2 file and make UTM
plots
optional arguments:
-h, --help show this help message and exit
-d DIR, --dir DIR Directory of SBF file (defaults to .)
-f FILES, --files FILES
Filename of PVTGeodetic_v2 file
-g GNSS, --gnss GNSS GNSS System Name
-m MARKER MARKER MARKER, --marker MARKER MARKER MARKER
Geodetic coordinates (lat,lon,ellH) of reference point
in degrees: ["50.8440152778" "4.3929283333"
"151.39179"] for RMA, ["50.93277777", "4.46258333",
"123"] for Peutie, default ["0", "0", "0"] means use
mean position
-l {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET} {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET}, --logging {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET} {CRITICAL,ERROR,WARNING,INFO,DEBUG,NOTSET}
specify logging level console/file (default INFO
DEBUG)
$ stfgeodetic.py -g 'GNSS OS' -d ${HOME}/RxTURP/BEGPIOS/ASTX/19100/stf
-f SEPT1000.19__PVTGeodetic_2.stf -l INFO DEBUG
$ stfgeodetic.py -g 'Galileo PRS' -d ${HOME}/Nextcloud/E6BEL/19255/stf
-f STNK2550.19__PVTGeodetic_2.stf -l INFO DEBUG
A python DetaFrame
is saved as a CSV
file, containing the geodetic and UTM position information.
Following plots are created:
\newpage
The script stfrxstatus.py
reads the ReceiverStatus v2 STF
file into a python
DataFrame
and plots the automatic gain control (AGC) of the different front-ends.