This is the documentation for the ``skplatform`` package ********* Platform ********* .. autoclass:: skplatform.Platform :members: :special-members: __init__ .. toctree:: :maxdepth: 2 platforms_api/api_posn_techniques platforms_api/api_pointing_techniques platforms_api/api_roll_control ***************** Satellite Classes ***************** Satellite classes are used to locate the position of a platform for a variety of orbits. They are derived from class :class:`~.PlatformLocation` which allows them to be used as ``platform locators`` in class :class:`~.Platform` when coupled with the :ref:`from_platform` positioning technique. Example:: from skplatform import Platform def make_geometry(): kepler = SatelliteKepler('2020-09-24T12:00:00.000000', period_from_altitude = 600000.0, inclination_radians= radians(97.0), longitude_of_ascending_node_degrees = 82.0, eccentricity= 0.05) platform = Platform(platform_locator=kepler) utc = ['2020-09-24T12:15:36.123456', '2020-09-24T12:15:37.456123', '2020-09-24T12:15:38.654321', '2020-09-24T12:15:39.654321'] pointing_values = [(35000, 10, 0), (27000, 5, 0), (24000, 0, 0), (21000, -5, 0)] platform.add_measurement_set(utc, ('from_platform',), ('tangent_altitude', 'limb', pointing_values)) The satellite classes can also be used as stand-alone classes in which case the user would execute the following steps. #. Create a specific instance of a satellite. #. Update the satellite position to a given instant in time, see :meth:`~.PlatformLocation.update_position` #. Get the satellite position using one of the available methods, see :meth:`~.PlatformLocation.position`, :meth:`~.PlatformLocation.earth_location` or :meth:`~.PlatformLocation.lat_lon_height` #. Repeat steps 2 and 3. for example:: dt = timedelta(minutes=1.0) # step time of our simulation is one minute numtimes = 1440 # Simulate for 1 day = 1440 * one minute platform_utc = datetime(2019,7,26, hour =20, minute=15, second=00) # start time of our simulation sat = SatelliteSunSync(platform_utc, # Create the satellite orbittype='sgp4', period_from_altitude=600000.0, localtime_of_ascending_node_hours=18.25) answers = np.zeros([3, numtimes]) # make an array to hold the latitude, longitude, altitude of each satellite at each simulation step times = np.zeros([numtimes], dtype='datetime64[us]') # make an array to hold the UTC time of each simulation step. for i in range(numtimes): # for each time step tnow = platform_utc + i * dt # get the next time step times[i] = tnow # save the time of the step sat.update_position(tnow) # Update the satellite position answers[:, i] = sat.lat_long_height # convert XYZ position and save Users should be aware the satellite classes may internally implement numerical integration using Runge-Kutta algorithms and should avoid large time steps (e.g. multiple orbits) as this may result in long execution times in the best case and inaccuracy in the worst case. .. toctree:: :maxdepth: 2 platforms_api/api_satellites ***************** Internal Classes ***************** .. toctree:: :maxdepth: 2 platforms_api/api_platform