示例#1
0
    def __init__(self, parent=None):
        super().__init__(parent)

        # InitVM is required before being able to use Orekit objects
        orekit.initVM()
        setup_orekit_curdir()  # Loads ZIP file containing Orekit data (SPICE kernel, EOP, leap seconds, etc.)

        # Frames
        self._eme2000 = FramesFactory.getEME2000()
        self._itrf = FramesFactory.getITRF(IERSConventions.IERS_2010, True)
        self._wgs84_ellipsoid = ReferenceEllipsoid.getWgs84(self._itrf)
        self._nadir_pointing = NadirPointing(self._eme2000, self._wgs84_ellipsoid)

        # Setup TLE and propagator
        self._tle = TLE('1 25544U 98067A   19205.43407788  .00000753  00000-0  20569-4 0  9999',
                        '2 25544  51.6429 176.4740 0006642 173.2752 328.6116 15.51000066181037')

        self._propagator = SGP4(self._tle,
                                self._nadir_pointing,
                                1000.0)

        self._rx_itrf = 0.0
        self._ry_itrf = 0.0
        self._rz_itrf = 0.0
        self.positionUpdated.emit()

        self._altitude = 0.0
        self.altitudeUpdated.emit()
    def init_jvm():
        """Initialize Java virtual machine for Orekit.

        This method also loads the orekit-data.zip from the pythonpath or
        form the current directory and sets up the orekit DataProviers to
        access it (how to do so has been copied from setup_orekit_curdir()).
        """
        orekit.initVM()

        path_to_file = None
        # search for file on pythonpath
        for paths in os.environ['PYTHONPATH'].split(os.pathsep):
            for root, dirs, files in os.walk(paths):
                if 'orekit-data.zip' in files:
                    path_to_file = os.path.join(root, 'orekit-data.zip')

        if path_to_file is None:
            # desperate search on current directory
            setup_orekit_curdir()
        else:
            DM = DataProvidersManager.getInstance()
            datafile = File(path_to_file)
            crawler = ZipJarCrawler(datafile)
            DM.clearProviders()
            DM.addProvider(crawler)
示例#3
0
    def load_orekit(self):
        if KepOrbElem.vm is not None:
            return

        # Init vm
        KepOrbElem.vm = orekit.initVM()

        # Load orekit data
        path_to_file = None
        # search for file on pythonpath
        for paths in os.environ['PYTHONPATH'].split(os.pathsep):
            for root, dirs, files in os.walk(paths):
                if 'orekit-data.zip' in files:
                    path_to_file = os.path.join(root, 'orekit-data.zip')

        if path_to_file is None:
            # desperate search on current directory
            setup_orekit_curdir()
        else:
            DM = DataProvidersManager.getInstance()
            datafile = File(path_to_file)
            crawler = ZipJarCrawler(datafile)
            DM.clearProviders()
            DM.addProvider(crawler)

# create gravity provider
        KepOrbElem.provider = GravityFieldFactory.getUnnormalizedProvider(6, 6)
示例#4
0
 def test_setup_orekit_zip_file(self):
     """
     Testing setup of OreKit
     """
     vm = orekit.initVM()
     assert setup_orekit_zip_file(' ')
示例#5
0
from org.hipparchus.geometry.euclidean.threed import Vector3D
from org.orekit.time import TimeScalesFactory, AbsoluteDate, DateComponents, TimeComponents
from org.orekit.propagation.analytical import KeplerianPropagator, EcksteinHechlerPropagator
from org.orekit.attitudes import CelestialBodyPointed, TargetPointing
from org.orekit.utils import Constants
from org.orekit.propagation.analytical.tle import TLE, TLEPropagator
from org.orekit.orbits import KeplerianOrbit, PositionAngle
from org.orekit.frames import FramesFactory, TopocentricFrame
from org.orekit.utils import IERSConventions
from org.orekit.bodies import OneAxisEllipsoid, GeodeticPoint, CelestialBodyFactory
from org.orekit.propagation import SpacecraftState
import kubesat.orekit as orekit_utils
from kubesat.orekit import get_ground_passes, check_iot_in_range, setup_orekit_zip_file
from kubesat.orekit import t1_gte_t2_string, t1_lte_t2_string, keplerian_orbit, analytical_propagator, analytical_propagator, moving_body_pointing_law, ground_pointing_law, attitude_provider_constructor, absolute_time_converter_utc_string, analytical_propagator, ground_pointing_law

vm = orekit.initVM()
setup_orekit_zip_file(' ')

class Tests(TestCase):
    """
    Testing OreKit utilities
    """

    def test_string_to_frame(self):
        """
        string_to_frame tests
        """
        frame_ITRF_1 = orekit_utils.string_to_frame("ITRF")
        frame_ITRF_2 = FramesFactory.getITRF(IERSConventions.IERS_2010, True)
        self.assertTrue(frame_ITRF_1.equals(frame_ITRF_2))
Created on Wed May 27 15:31:10 2020

This will be the Gauss Angles only routine used to produce an initial orbit determination
starting from angles only observations

Python 3.5 or above necessary


@author: quamo
"""



#initialize orekit and JVM
import orekit
orekit.initVM()

from orekit.pyhelpers import setup_orekit_curdir, absolutedate_to_datetime
setup_orekit_curdir()

# Math
from math import radians, pi, degrees
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt


# Geometry and Frames
from org.hipparchus.geometry.euclidean.threed import Vector3D, SphericalCoordinates
from org.orekit.data import DataProvidersManager, ZipJarCrawler
from org.orekit.frames import FramesFactory, TopocentricFrame
示例#7
0
# SPDX-License-Identifier: GPL-3.0-or-later

"""Trajectory simulation and object rendering module."""

import json
import logging
from datetime import datetime
from pathlib import Path

import numpy as np
import orekit
from orekit.pyhelpers import setup_orekit_curdir
#################### orekit VM init ####################
FILE_DIR = Path(__file__).parent.resolve()
OREKIT_DATA_FILE = FILE_DIR / "orekit-data.zip"
OREKIT_VM = orekit.initVM() # pylint: disable=no-member
setup_orekit_curdir(str(OREKIT_DATA_FILE))
#################### orekit VM init ####################
from org.orekit.time import (
    AbsoluteDate,
    TimeScalesFactory
)  # pylint: disable=import-error
from org.orekit.frames import FramesFactory  # pylint: disable=import-error
from org.orekit.utils import (
    Constants,
    PVCoordinates,
    AngularCoordinates
)  # pylint: disable=import-error
from org.hipparchus.geometry.euclidean.threed import (
    Vector3D,
    Rotation,
from math import radians, degrees
import requests

import orekit
VM = orekit.initVM()
from orekit.pyhelpers import setup_orekit_curdir
setup_orekit_curdir()
from org.orekit.frames import FramesFactory, TopocentricFrame
from org.orekit.bodies import OneAxisEllipsoid, GeodeticPoint, CelestialBodyFactory
from org.orekit.propagation.analytical.tle import TLE, TLEPropagator
from org.orekit.utils import IERSConventions, Constants, PVCoordinatesProvider
from org.orekit.propagation.events import ElevationDetector, EventsLogger
from org.orekit.propagation.events.handlers import ContinueOnEvent


def get_station(longi, lat, name, planet=OneAxisEllipsoid(Constants.WGS84_EARTH_EQUATORIAL_RADIUS,
                                                          Constants.WGS84_EARTH_FLATTENING,
                                                          FramesFactory.getITRF(IERSConventions.IERS_2010, True))):
    """
    Returns the wanted Topocentric Frame computed thanks to its coordinates 

    Parameters
    ----------
    longi : float
        longitude of the wanted Topocentric Frame.
    lat : float
        Latitude of the wanted Topocentric Frame.
    name : str
        Wanted name for the Topocentric Frame.
    planet : OnesAxisEllipsoid, optional
        Planet where the Topocentric Frame should be associated to. The default is our planet, the Earth.
示例#9
0
 def create(cls):        
     orekit.initVM()
     result = cls()
     
     return result