Orbit Models

Two Line Elements

pydantic model tatc.schemas.TwoLineElements[source]

Orbit defined with standard two line elements.

Show JSON schema
{
   "title": "TwoLineElements",
   "description": "Orbit defined with standard two line elements.",
   "type": "object",
   "properties": {
      "type": {
         "title": "Type",
         "description": "Orbit type discriminator.",
         "default": "tle",
         "enum": [
            "tle"
         ],
         "type": "string"
      },
      "tle": {
         "title": "Tle",
         "description": "Two line elements.",
         "example": [
            "1 25544U 98067A   21156.30527927  .00003432  00000-0  70541-4 0  9993",
            "2 25544  51.6455  41.4969 0003508  68.0432  78.3395 15.48957534286754"
         ],
         "minItems": 2,
         "maxItems": 2,
         "type": "array",
         "items": {
            "type": "string"
         }
      }
   },
   "required": [
      "tle"
   ]
}

Fields
  • tle (List[str])

  • type (Literal['tle'])

Validators
  • valid_tle » tle

field tle: List[str] [Required]

Two line elements.

Constraints
  • minItems = 2

  • maxItems = 2

Validated by
  • valid_tle

field type: Literal['tle'] = 'tle'

Orbit type discriminator.

get_altitude() float[source]

Gets the altitude (meters).

Returns

the altitude

Return type

float

get_b_star() float[source]

Gets the b-star term (drag or radiation pressure coefficient).

Returns

the b-star term

Return type

float

get_catalog_number() int[source]

Gets the TLE catalog number.

Returns

the catalog number

Return type

int

get_classification() str[source]

Gets the TLE classification type (U: unclassified; C: classified).

Returns

the classification type

Return type

str

get_derived_orbit(delta_mean_anomaly: float, delta_raan: float) TwoLineElements[source]

Gets a derived orbit with perturbations to the mean anomaly and right ascension of ascending node.

Parameters
  • delta_mean_anomaly (float) – Delta mean anomaly (degrees).

  • delta_raan (float) – Delta right ascension of ascending node (degrees).

Returns

the derived orbit

Return type

TwoLineElements

get_eccentricity() float[source]

Gets the eccentricity.

Returns

the eccentricity

Return type

float

get_element_set_number() int[source]

Gets the TLE element set number.

Returns

the element set number

Return type

int

get_ephemeris_type() int[source]

Gets the TLE ephemeris type.

Returns

the ephemeris type

Return type

int

get_epoch() datetime[source]

Gets the TLE epoch time.

Returns

the epoch datetime

Return type

datetime

get_first_derivative_mean_motion() float[source]

Gets the first derivative of mean motion (ballistic coefficient).

Returns

the first derivative of mean motion

Return type

float

get_inclination() float[source]

Gets the orbit inclination (decimal degrees).

Returns

the inclination

Return type

float

get_international_designator() str[source]

Gets the TLE international designator.

Returns

the international designator

Return type

str

get_mean_anomaly() float[source]

Gets the mean anomaly (decimal degrees).

Returns

the mean anomaly

Return type

float

get_mean_motion() float[source]

Gets the mean motion (revolutions per day).

Returns

the mean motion

Return type

float

get_orbit_period() timedelta[source]

Gets the approximate orbit period.

Returns

the orbit period

Return type

timedelta

get_perigee_argument() float[source]

Gets the argument of perigee (decimal degrees).

Returns

the argument of perigee

Return type

float

get_revolution_number_at_epoch() int[source]

Gets the revolution number at epoch.

Returns

the revolution number

Return type

timedelta

get_right_ascension_ascending_node() float[source]

Gets the right ascension of ascending node (decimal degrees).

Returns

the right ascension of ascending node

Return type

float

get_second_derivative_mean_motion() float[source]

Gets the second derivative of mean motion.

Returns

the second derivative of mean motion

Return type

float

get_semimajor_axis() float[source]

Gets the semimajor axis (meters).

Returns

the semimajor axis

Return type

float

get_true_anomaly() float[source]

Gets the true anomaly (decimal degrees).

Returns

the true anomaly

Return type

float

to_tle() TwoLineElements[source]

Converts this orbit to a two line elements representation.

Returns

the two line elements orbit

Return type

TwoLineElements

validator valid_tle  »  tle[source]

Validate the two line element set.

Circular Orbit

pydantic model tatc.schemas.CircularOrbit[source]

Orbit specification using Keplerian elements for elliptical motion – circular motion case.

Show JSON schema
{
   "title": "CircularOrbit",
   "description": "Orbit specification using Keplerian elements for elliptical motion -- circular motion case.",
   "type": "object",
   "properties": {
      "altitude": {
         "title": "Altitude",
         "description": "Mean altitude (meters).",
         "type": "number"
      },
      "true_anomaly": {
         "title": "True Anomaly",
         "description": "True anomaly (degrees).",
         "default": 0,
         "exclusiveMaximum": 360,
         "minimum": 0,
         "type": "number"
      },
      "epoch": {
         "title": "Epoch",
         "description": "Timestamp (epoch) of the initial orbital state.",
         "default": "2023-04-01T19:44:08.701722+00:00",
         "type": "string",
         "format": "date-time"
      },
      "type": {
         "title": "Type",
         "description": "Orbit type discriminator.",
         "default": "circular",
         "enum": [
            "circular"
         ],
         "type": "string"
      },
      "inclination": {
         "title": "Inclination",
         "description": "Inclination (degrees).",
         "default": 0,
         "exclusiveMaximum": 180,
         "minimum": 0,
         "type": "number"
      },
      "right_ascension_ascending_node": {
         "title": "Right Ascension Ascending Node",
         "description": "Right ascension of ascending node (degrees).",
         "default": 0,
         "exclusiveMaximum": 360,
         "minimum": 0,
         "type": "number"
      }
   },
   "required": [
      "altitude"
   ]
}

Fields
  • altitude (float)

  • epoch (Optional[datetime.datetime])

  • inclination (float)

  • right_ascension_ascending_node (float)

  • true_anomaly (float)

  • type (Literal['circular'])

field altitude: float [Required]

Mean altitude (meters).

field epoch: Optional[datetime] = datetime.datetime(2023, 4, 1, 19, 44, 8, 701722, tzinfo=datetime.timezone.utc)

Timestamp (epoch) of the initial orbital state.

field inclination: float = 0

Inclination (degrees).

Constraints
  • exclusiveMaximum = 180

  • minimum = 0

field right_ascension_ascending_node: float = 0

Right ascension of ascending node (degrees).

Constraints
  • exclusiveMaximum = 360

  • minimum = 0

field true_anomaly: float = 0

True anomaly (degrees).

Constraints
  • exclusiveMaximum = 360

  • minimum = 0

field type: Literal['circular'] = 'circular'

Orbit type discriminator.

get_derived_orbit(delta_mean_anomaly: float, delta_raan: float) CircularOrbit[source]

Gets a derived orbit with perturbations to the mean anomaly and right ascension of ascending node.

Parameters
  • delta_mean_anomaly (float) – Delta mean anomaly (degrees).

  • delta_raan (float) – Delta right ascension of ascending node (degrees).

Returns

the derived orbit

Return type

CircularOrbit

get_mean_anomaly() float

Gets the mean anomaly (decimal degrees).

Returns

the mean anomaly

Return type

float

get_mean_motion() float

Gets the mean motion (revolutions per day).

Returns

the mean motion

Return type

float

get_orbit_period() timedelta

Gets the approximate orbit period.

Returns

the orbit period

Return type

timedelta

get_semimajor_axis() float

Gets the semimajor axis (meters).

Returns

the semimajor axis

Return type

float

to_tle() TwoLineElements[source]

Converts this orbit to a two line elements representation.

Returns

the two line elements orbit

Return type

TwoLineElements

Sun-synchronous Orbit

pydantic model tatc.schemas.SunSynchronousOrbit[source]

Orbit defined by sun synchronous parameters.

Show JSON schema
{
   "title": "SunSynchronousOrbit",
   "description": "Orbit defined by sun synchronous parameters.",
   "type": "object",
   "properties": {
      "altitude": {
         "title": "Altitude",
         "description": "Mean altitude (meters).",
         "exclusiveMaximum": 5980991.228584941,
         "minimum": 0,
         "type": "number"
      },
      "true_anomaly": {
         "title": "True Anomaly",
         "description": "True anomaly (degrees).",
         "default": 0,
         "exclusiveMaximum": 360,
         "minimum": 0,
         "type": "number"
      },
      "epoch": {
         "title": "Epoch",
         "description": "Timestamp (epoch) of the initial orbital state.",
         "default": "2023-04-01T19:44:08.701722+00:00",
         "type": "string",
         "format": "date-time"
      },
      "type": {
         "title": "Type",
         "description": "Orbit type discriminator.",
         "default": "sso",
         "enum": [
            "sso"
         ],
         "type": "string"
      },
      "equator_crossing_time": {
         "title": "Equator Crossing Time",
         "description": "Equator crossing time (local solar time).",
         "type": "string",
         "format": "time"
      },
      "equator_crossing_ascending": {
         "title": "Equator Crossing Ascending",
         "description": "True, if the equator crossing time is ascending (south-to-north).",
         "default": true,
         "type": "boolean"
      }
   },
   "required": [
      "altitude",
      "equator_crossing_time"
   ]
}

Fields
  • altitude (float)

  • epoch (Optional[datetime.datetime])

  • equator_crossing_ascending (bool)

  • equator_crossing_time (datetime.time)

  • true_anomaly (float)

  • type (Literal['sso'])

field altitude: float [Required]

Mean altitude (meters).

Constraints
  • exclusiveMaximum = 5980991.228584941

  • minimum = 0

field epoch: Optional[datetime] = datetime.datetime(2023, 4, 1, 19, 44, 8, 701722, tzinfo=datetime.timezone.utc)

Timestamp (epoch) of the initial orbital state.

field equator_crossing_ascending: bool = True

True, if the equator crossing time is ascending (south-to-north).

field equator_crossing_time: time [Required]

Equator crossing time (local solar time).

field true_anomaly: float = 0

True anomaly (degrees).

Constraints
  • exclusiveMaximum = 360

  • minimum = 0

field type: Literal['sso'] = 'sso'

Orbit type discriminator.

get_derived_orbit(delta_mean_anomaly: float, delta_raan: float) CircularOrbit[source]

Gets a derived orbit with perturbations to the mean anomaly and right ascension of ascending node.

Parameters
  • delta_mean_anomaly (float) – Delta mean anomaly (degrees).

  • delta_raan (float) – Delta right ascension of ascending node (degrees).

Returns

the derived orbit

Return type

CircularOrbit

get_inclination() float[source]

Gets the inclination (decimal degrees).

Returns

the inclination

Return type

float

get_mean_anomaly() float

Gets the mean anomaly (decimal degrees).

Returns

the mean anomaly

Return type

float

get_mean_motion() float

Gets the mean motion (revolutions per day).

Returns

the mean motion

Return type

float

get_orbit_period() timedelta

Gets the approximate orbit period.

Returns

the orbit period

Return type

timedelta

get_right_ascension_ascending_node() float[source]

Gets the right ascension of ascending node (decimal degrees).

Returns

the right ascension of ascending node

Return type

float

get_semimajor_axis() float

Gets the semimajor axis (meters).

Returns

the semimajor axis

Return type

float

to_tle() TwoLineElements[source]

Converts this orbit to a two line elements representation.

Returns

the two line elements orbit

Return type

TwoLineElements

Keplerian Orbit

pydantic model tatc.schemas.KeplerianOrbit[source]

Orbit specification using Keplerian elements for elliptical motion.

Show JSON schema
{
   "title": "KeplerianOrbit",
   "description": "Orbit specification using Keplerian elements for elliptical motion.",
   "type": "object",
   "properties": {
      "altitude": {
         "title": "Altitude",
         "description": "Mean altitude (meters).",
         "type": "number"
      },
      "true_anomaly": {
         "title": "True Anomaly",
         "description": "True anomaly (degrees).",
         "default": 0,
         "exclusiveMaximum": 360,
         "minimum": 0,
         "type": "number"
      },
      "epoch": {
         "title": "Epoch",
         "description": "Timestamp (epoch) of the initial orbital state.",
         "default": "2023-04-01T19:44:08.701722+00:00",
         "type": "string",
         "format": "date-time"
      },
      "type": {
         "title": "Type",
         "description": "Orbit type discriminator.",
         "default": "keplerian",
         "enum": [
            "keplerian"
         ],
         "type": "string"
      },
      "inclination": {
         "title": "Inclination",
         "description": "Inclination (degrees).",
         "default": 0,
         "exclusiveMaximum": 180,
         "minimum": 0,
         "type": "number"
      },
      "right_ascension_ascending_node": {
         "title": "Right Ascension Ascending Node",
         "description": "Right ascension of ascending node (degrees).",
         "default": 0,
         "exclusiveMaximum": 360,
         "minimum": 0,
         "type": "number"
      },
      "eccentricity": {
         "title": "Eccentricity",
         "description": "Eccentricity.",
         "default": 0,
         "minimum": 0,
         "type": "number"
      },
      "perigee_argument": {
         "title": "Perigee Argument",
         "description": "Perigee argument (degrees).",
         "default": 0,
         "exclusiveMaximum": 360,
         "minimum": 0,
         "type": "number"
      }
   },
   "required": [
      "altitude"
   ]
}

Fields
  • altitude (float)

  • eccentricity (float)

  • epoch (Optional[datetime.datetime])

  • inclination (float)

  • perigee_argument (float)

  • right_ascension_ascending_node (float)

  • true_anomaly (float)

  • type (Literal['keplerian'])

field altitude: float [Required]

Mean altitude (meters).

field eccentricity: float = 0

Eccentricity.

Constraints
  • minimum = 0

field epoch: Optional[datetime] = datetime.datetime(2023, 4, 1, 19, 44, 8, 701722, tzinfo=datetime.timezone.utc)

Timestamp (epoch) of the initial orbital state.

field inclination: float = 0

Inclination (degrees).

Constraints
  • exclusiveMaximum = 180

  • minimum = 0

field perigee_argument: float = 0

Perigee argument (degrees).

Constraints
  • exclusiveMaximum = 360

  • minimum = 0

field right_ascension_ascending_node: float = 0

Right ascension of ascending node (degrees).

Constraints
  • exclusiveMaximum = 360

  • minimum = 0

field true_anomaly: float = 0

True anomaly (degrees).

Constraints
  • exclusiveMaximum = 360

  • minimum = 0

field type: Literal['keplerian'] = 'keplerian'

Orbit type discriminator.

get_derived_orbit(delta_mean_anomaly: float, delta_raan: float) KeplerianOrbit[source]

Gets a derived orbit with perturbations to the mean anomaly and right ascension of ascending node.

Parameters
  • delta_mean_anomaly (float) – Delta mean anomaly (degrees).

  • delta_raan (float) – Delta right ascension of ascending node (degrees).

Returns

the derived orbit

Return type

KeplerianOrbit

get_mean_anomaly() float[source]

Gets the mean anomaly (decimal degrees).

Returns

the mean anomaly

Return type

float

get_mean_motion() float

Gets the mean motion (revolutions per day).

Returns

the mean motion

Return type

float

get_orbit_period() timedelta

Gets the approximate orbit period.

Returns

the orbit period

Return type

timedelta

get_semimajor_axis() float

Gets the semimajor axis (meters).

Returns

the semimajor axis

Return type

float

to_tle() TwoLineElements[source]

Converts this orbit to a two line elements representation.

Returns

the two line elements orbit

Return type

TwoLineElements