Geodetic

Module: sasktran.geodetic

Internally SASKTRAN uses the World Geodetic System (WGS48). This module provides some helpers for working with geodetic coordinates.

class sasktran.Geodetic(geoid_name=None)

Bases: object

Class which handles the representation of the Earth geometry. The object is initialized through one of the from methods, and then after initialization various parameters are available.

Parameters:

geoid_name (str, optional)

Examples

>>> import sasktran as sk
>>> geodetic = sk.Geodetic()
>>> geodetic.from_lat_lon_alt(latitude=60, longitude=30, altitude=0)
>>> print(geodetic)
ISKGeodetic: IAU 1976
 Latitude: 60.0, Longitude: 30.0, Altitude: 0.0
>>> print(geodetic.local_up)
[ 0.4330127  0.25       0.8660254]
>>> print(geodetic.location)
[ 2768775.09176071  1598553.04455358  5500479.72571591]
property altitude

Altitude in meters

Examples

>>> import sasktran as sk
>>> geodetic = sk.Geodetic()
>>> geodetic.from_xyz([ 5797230.47518212, -2110019.3341472, -1642001.16317228])
>>> print(geodetic.altitude)
7341.999999995809
Type:

float

altitude_intercepts(altitude, observer, look_vector)

Calculate the two intersections of a line of sight and an altitude.

Parameters:
  • altitude (float) – Altitude in meters.

  • observer (np.ndarray) – Three element array containing the obsever position in geocentric coordinates.

  • look_vector (np.ndarray) – Three element array containing a normalized look vector.

Returns:

  • np.ndarray – Three element array containing the first (entering) intercept in geocentric coordinates.

  • np.ndarray – Three element array containing the second (exiting) intercept in geocentric coordinates.

Examples

>>> import sasktran as sk
>>> import numpy as np
>>> geodetic = sk.Geodetic()
>>> look = geodetic.from_tangent_altitude(15322, [3.676013154788849600e+005, 1.009976313640051500e+006,                                                       -6.871601202127538600e+006], [0, 0, 1])
>>> obs = geodetic.location
>>> intercept1, intercept2 = geodetic.altitude_intercepts(16000, obs, look)
>>> print(np.array_str(intercept1, precision=3))
[ 1147300.6    3152182.491 -5425366.163]
>>> print(np.array_str(intercept2, precision=3))
[ 1201097.087  3299987.124 -5325581.071]
from_lat_lon_alt(latitude, longitude, altitude)

Initializes the Geodetic based on a specifiec latitude, longitude, and altitude.

Parameters:
  • latitude (float) – Latitude in degrees (-90 to 90)

  • longitude (float) – Longitude in degrees (0 to 360 or -180 to 180)

  • altitude (float) – Altitude above the geoid in metres

Examples

>>> import sasktran as sk
>>> geodetic = sk.Geodetic()
>>> geodetic.from_lat_lon_alt(latitude=-15, longitude=-20, altitude=7342)
>>> print(geodetic)
ISKGeodetic: IAU 1976
 Latitude: -15.0, Longitude: 340.0, Altitude: 7342.0
from_tangent_altitude(altitude, observer, boresight)

Initialized the Geodetic from a specified tangent altitude, obsever location, and bore sight plane.

Parameters:
  • altitude (float) – Tangent altitude in meters

  • observer (np.ndarray) – Three element array containing the obsever position in geocentric coordinates

  • boresight (np.ndarray) – Three element array containing a normalized look vector that is within the bore sight plane.

Returns:

Three element array containing the normalized look vector to the tangent point.

Return type:

np.ndarray

Examples

>>> import sasktran as sk
>>> geodetic = sk.Geodetic()
>>> look = geodetic.from_tangent_altitude(15322, [ 3.676013154788849600e+005, 1.009976313640051500e+006,                                                          -6.871601202127538600e+006], [0, 0, 1])
>>> print(look)
[ 0.28880576  0.7934873   0.535695  ]
>>> print(geodetic)
ISKGeodetic: IAU 1976
 Latitude: -57.608525446153806, Longitude: 70.00000000000001, Altitude: 15321.971935943235
from_tangent_point(observer, look_vector)

Initializes the Geodetic by calculating the tangent point from an observer position and look vector

Parameters:
  • observer (np.ndarray) – Three element array containing the observer position in geocentric coordinates

  • look_vector (np.ndarray) – Three element array containing a normalized look vector

Examples

>>> import sasktran as sk
>>> geodetic = sk.Geodetic()
>>> geodetic.from_tangent_point([ 3.676013154788849600e+005, 1.009976313640051500e+006,                                         -6.871601202127538600e+006], [ 2.884568631765662100e-001,                                          7.925287180643269000e-001,  5.372996083468238900e-001])
>>> print(geodetic)
ISKGeodetic: IAU 1976
 Latitude: -57.499726734289936, Longitude: 70.0, Altitude: 10000.000072686584
from_xyz(location)

Initializes the Geodetic from a geocentric location

Parameters:

location (np.ndarray) – Three element vector containing a location in geocentric coordinates

Examples

>>> import sasktran as sk
>>> geodetic = sk.Geodetic()
>>> geodetic.from_xyz([ 5797230.47518212, -2110019.3341472, -1642001.16317228])
>>> print(geodetic)
ISKGeodetic: IAU 1976
 Latitude: -15.000000000000009, Longitude: 340.00000000000006, Altitude: 7341.999999995809
property latitude

Latitude in degrees in the range (-90 to 90)

Examples

>>> import sasktran as sk
>>> geodetic = sk.Geodetic()
>>> geodetic.from_xyz([ 5797230.47518212, -2110019.3341472, -1642001.16317228])
>>> print(geodetic.latitude)
-15.000000000000009
Type:

float

property local_south

Three element vector unit vector tangent to the Earth pointing south

Examples

>>> import sasktran as sk
>>> geodetic = sk.Geodetic()
>>> geodetic.from_xyz([ 5797230.47518212, -2110019.3341472, -1642001.16317228])
>>> print(geodetic.local_south)
[-0.24321035  0.08852133 -0.96592583]
Type:

np.ndarray

property local_up

Three element unit vector normal to the surface of the Earth pointing up

Examples

>>> import sasktran as sk
>>> geodetic = sk.Geodetic()
>>> geodetic.from_xyz([ 5797230.47518212, -2110019.3341472, -1642001.16317228])
>>> print(geodetic.local_up)
[ 0.90767337 -0.33036609 -0.25881905]
Type:

np.ndarray

property local_west

Three element unit vector tangent to the surface of the Earth pointing west

Examples

>>> import sasktran as sk
>>> geodetic = sk.Geodetic()
>>> geodetic.from_xyz([ 5797230.47518212, -2110019.3341472, -1642001.16317228])
>>> print(geodetic.local_west)
[-0.34202014 -0.93969262  0.        ]
Type:

np.ndarray

property location

Three element vector representing the position in geocentric coordinates

Examples

>>> import sasktran as sk
>>> geodetic = sk.Geodetic()
>>> geodetic.from_lat_lon_alt(latitude=-15, longitude=-20, altitude=7342)
>>> print(geodetic.location)
[ 5797230.47518212 -2110019.3341472  -1642001.16317228]
Type:

np.ndarray

property longitude

Longitude in degrees in the range (0 to 360)

Examples

>>> import sasktran as sk
>>> geodetic = sk.Geodetic()
>>> geodetic.from_xyz([ 5797230.47518212, -2110019.3341472, -1642001.16317228])
>>> print(geodetic.longitude)
340.00000000000006
Type:

float

property osculating_spheroid_center

Three element vector representing the center of the osculating spheroid, relative to the center of the geoid, in meters.

Examples

>>> import sasktran as sk
>>> geodetic = sk.Geodetic()
>>> geodetic.from_xyz([ 5797230.47518212, -2110019.3341472, -1642001.16317228])
>>> print(geodetic.osculating_spheroid_center)
[ 36183.74814049 -13169.80728732    735.81389216]
Type:

np.ndarray

property osculating_spheroid_radius

Radius of the osculating spheroid in meters. .. rubric:: Examples

>>> import sasktran as sk
>>> geodetic = sk.Geodetic()
>>> geodetic.from_xyz([ 5797230.47518212, -2110019.3341472, -1642001.16317228])
>>> print(geodetic.osculating_spheroid_radius)
6339703.29902925
Type:

np.ndarray

See Also

Geometry

Objects which describe the geometry of the calculations to the engine. At a minimum these objects define the Lines of Sight, but can also specify things such as the suns position and the polling reference point.

Lines of Sight

An object that describes a line of sight. A line of sight is made up of: (1) a look vector, (2) an observer position, (3) an obervation time.