Navigator / tests / gps_ephm / test_parsing_and_interpolation.py
test_parsing_and_interpolation.py
Raw
import pytest
from navigator.parse import Parser, IParseGPSNav
from navigator.core import Satellite, IGPSEphemeris
from tests.common_fixtures import navfilepath, nav_data
import numpy as np


def test_ephemeris_gps_and_sv_interpolation(navfilepath, nav_data):
    # Unpack the nav_data
    metadata, data = nav_data  # This is how the functional class is called.

    # Create an object of the functional class
    satellite = Satellite(iephemeris=IGPSEphemeris())

    # Let's take the Satellites at 2023-06-07  16:00:00 TOC (Time of Clock) to interpolate the satellite position to 19:00:00 GPS time
    final_time = "2023-07-03 18:00:00"

    # Filter the satellites that has 16:00:00 TOC.
    hr_16_data = data[data.index.get_level_values(0) == "2023-07-03 16:00:00"]

    trajectory = satellite.trajectory(
        t_sv="2023-07-03 16:00:00",  # Start time
        metadata=metadata,
        data=data,
        interval=60 * 60 * 2,  # 3 hours interval
        step=60,  # Every 60 seconds resolution
    )

    assert trajectory.shape == (21, 3, 120)

    # Get One coordinate of the satellite
    x = trajectory[0, :, 0] / 1000

    distance = np.sqrt((x**2).sum())
    assert distance == pytest.approx(26500, abs=1000), "Distance is not correct"