GPS ionosphere · GPStation-6 · RINEX

gpstec

Calibrated total electron content from your GPS receiver, with the elevation cut-off you choose and figures ready for the paper.

pip install gpstec
Source on GitHub →
50° satellites used: –
L1 / L2
1575.42 / 1227.60 MHz
Thin shell
350 km
1 TECU
1016 e⁻/m²
Code to TEC
9.52 TECU/m
Default cut-off
50°

Why it exists

The usual GPStation-6 chain hides three problems.

Receiver file, RTKLIB, RINEX, a closed calibration program, then a .Cmn file you have to trust. gpstec does the same job in the open, and checks itself.

Wrong position

The RINEX header can put your station inside the Earth.

RTKCONV 2.4.2 writes latitude, longitude and height into the field meant for Earth-centred X, Y, Z. Every elevation and pierce point computed from it is wrong. gpstec takes the position from your configuration, always.

No cut-off

Low rays bend the result near the anomaly crest.

The thin-shell mapping is least reliable for low satellites. Choose any elevation cut-off; 50° is the default, and lower data never reaches the products.

No checks

A black box gives you numbers, not confidence.

Every day gets a calibration report: the CODE global map at night, an uncertainty band, and a test that each day joins the next one at midnight.

Method

From receiver file to vertical TEC.

One command runs all six steps. Each day is calibrated from its own data.

  1. Convert

    RTKLIB convbin -r nov turns the NovAtel .GPS file into RINEX and writes the correct station position into the header.

  2. Geometry

    Broadcast ephemeris or SP3 orbits give azimuth, elevation and the pierce point on the 350 km shell for every second.

  3. Slant TEC

    Code P2 − C1 is absolute but noisy; phase L1λ1 − L2λ2 is precise but offset. Each satellite pass is levelled to the code, and passes that cross midnight are levelled as one.

  4. Biases

    Satellite biases from CODE DCB files, downloaded for you. The receiver bias comes from that night's data by least squares, allowing north–south and east–west gradients, and never makes VTEC negative.

  5. Vertical TEC

    VTEC = STEC · √(1 − (Re cos E / (Re + h))²), using only satellites above the cut-off.

  6. Station curve

    All satellites are fitted together as V0(t) + Gn·Δlat + Ge·Δlon, so the curve stays smooth when satellites rise and set, and the gradients are saved too.

Figures

Made for the paper, not the screen.

Vector PDF with editable text and 300 dpi PNG. Legends sit outside the data, colours are safe for colour-blind readers, and the tests fail if any two labels touch.

Daily vertical TEC at station SKBU on 25 December 2022: grey 1 s satellite tracks, a smooth blue station curve peaking at 75.6 TECU at 7.6 UT, the hourly CODE global map values as orange dots, and a satellite-count panel below.
Daily VTEC, SKBU, 25 December 2022.Satellites above 50° (1 s), their 1-minute mean, the gradient-corrected station curve with its calibration band, and the hourly CODE global ionosphere maps. UT below, local time above.
Two days of station VTEC on one time axis with the CODE map, and below it the jump at midnight between the days, +0.8 TECU, inside the uncertainty band.
Midnight continuity.The same satellites seen at 00:00:00 and 00:00:01 must agree. The jump is split into the receiver-bias change and anything left from processing.
Map of pierce-point tracks around the station: grey tracks below 50 degrees, blue tracks above 50 degrees coloured by VTEC.
Pierce points at 350 km.Grey tracks are below the cut-off and not used; coloured tracks show where each measurement samples the ionosphere.

Get started

Three commands, then one per week of data.

Install

Python 3.9 or newer on Linux, macOS or Windows. install-convbin builds RTKLIB's converter and needs git, gcc and make; it is only needed for .GPS files.

pip install gpstec
gpstec install-convbin
gpstec init

Run

Put your antenna's latitude, longitude and height in station.toml. Bias files and global maps are downloaded into dcb/ and gim/.

# a week of receiver files
gpstec run -c station.toml -o results 2242_*.GPS
# or RINEX, with another cut-off
gpstec run -c station.toml -o results skbu3590.22o --elev 40

What you get each day

Numbers you can defend.

  • 1-minute VTEC table

    1-minute mean of the satellites, scatter, satellite count and the hourly global-map values, in CSV, plus Gopi-style .Std and the full 1 s .Cmn file.

  • Calibration report

    Every bias, the method, the night-time difference from the CODE map, and warnings, in one JSON file per day.

  • Multi-day views

    All days overlaid, a day-by-hour map, and the midnight continuity figure with a summary table.

Citing

If gpstec helps your research, please cite it.

Banerjee, D. (2026). gpstec: calibrated GPS total electron content from GPStation-6 receivers (version 1.1.0). https://github.com/dipanjanbanerjee/gpstec