Skip to content

A repo contains code to get time series satellite position from RINEX navigation and observation file

License

Notifications You must be signed in to change notification settings

Suizer98/rinexpos

Repository files navigation

RINEX Position Processing

A toolkit for processing RINEX (Receiver Independent Exchange Format) GPS navigation and observation files to extract satellite positions and generate 3D orbital visualizations.

This project reads RINEX navigation files (.n files) containing GPS satellite ephemeris data.

Tech stacks:

Tech stacks

Local Setup

Python

  1. Install Anaconda on your PC
  2. Create the environment and install dependencies:
    conda create -n rinex python=3.10
    conda activate rinex
    pip install -r requirements.txt
  3. Run the script:
    conda activate rinex
    python3 python/rinexnav.py --file=data/chur1610.19n --interval=15 --plot

MATLAB/Octave

  1. Install Octave and required dependencies (see Dockerfile for full list)

  2. Run the script:

    cd matlab
    octave rinexnav_enhanced.m

Docker Setup

Quick Start

Run Python processing:

docker-compose run --rm rinexpos \
  python3 python/rinexnav.py \
  --file=data/chur1610.19n --interval=15 --plot

Run Octave/MATLAB code:

docker-compose run --rm rinexpos \
  bash -c "cd matlab && octave rinexnav_enhanced.m"

Run with explicit date:

docker-compose run --rm rinexpos \
  python3 python/rinexnav.py \
  --file=data/brdc0680.20n --date=20,3,8 --interval=100 --plot

For debugging (interactive container):

docker-compose up --build
# Then in another terminal:
docker-compose exec rinexpos bash

Plot existing CSV data:

docker-compose run --rm rinexpos \
  python3 python/plot_satellites.py \
  results/chur1610_python.csv --max_epochs=1000

Create animation:

docker-compose run --rm rinexpos \
  python3 python/plot_satellites.py \
  results/chur1610_python.csv --animation --max_epochs=1000

Manual Image Building and Push

Build and push:

# Login
echo $GITHUB_TOKEN | docker login --username suizer98

# Build, tag, and push
docker-compose build
docker tag rinexpos suizer98/rinexpos:latest
docker tag rinexpos-test suizer98/rinexpos-test:latest
docker push suizer98/rinexpos:latest
docker push suizer98/rinexpos-test:latest

Testing

Run whole test suite:

docker-compose --profile test up --build test
docker-compose --profile test run test

See PythonTestKit for more details.

Sample Results

3D visualization of GPS satellite orbits showing the complex trajectories of satellites over time, with each satellite represented by a unique colored line. Both are showing the first 1000 epoch from the derieved data

Python

Python Animation

Python

MATLAB

MATLAB

About

A repo contains code to get time series satellite position from RINEX navigation and observation file

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published