NASA Logo
Ocean Color Science Software

ocssw V2022
derive_orbitparams.py
Go to the documentation of this file.
1 import numpy as np
2 
3 def derive_orbitparams(posr, velr):
4 
5  # adapted from Fred Patt's IDL routine get_ephem_from_hkt.pro
6  omegae = 7.29211585494e-5
7  for i in np.arange(len(posr)):
8  velr[i][0] += posr[i][1]*omegae
9  velr[i][1] -= posr[i][0]*omegae
10 
11  # adapted from Fred Patt's IDL routine orb2lla.pro
12  re = 6378.137 # Earth equatorial radius (km)
13  rem = 6371.0 # Earth mean radius (km)
14  f = 1./298.257 # Earth flattening factor
15  omf2 = (1.0-f) * (1.0-f)
16 
17  xyz = np.array([p/1000.0 for p in posr], dtype=np.float64) # convert meters to km
18  x, y, z = [xyz[:,i] for i in np.arange(3)] # separate coords
19 
20  # Compute longitude
21  lon = np.arctan2(y, x)
22 
23  # Compute geodetic latitude
24  rad = np.linalg.norm(xyz,axis=1) # Euclidean distance
25  omf2p = (omf2*rem + rad - rem)/rad
26  pxy = x*x + y*y
27  temp = np.sqrt(z*z + omf2p*omf2p*pxy)
28  lat = np.arcsin(z/temp)
29 
30  # Compute altitude
31  clatg = np.cos(np.arctan(omf2*np.tan(lat)))
32  rl = re*(1.0-f)/np.sqrt(1.0-(2.0-f)*f*clatg*clatg)
33  alt = rad - rl
34 
35  # return as dictionary
36  orbitparams = {}
37  orbitparams['posr'] = posr
38  orbitparams['velr'] = velr
39  orbitparams['lon'] = np.rad2deg(lon)
40  orbitparams['lat'] = np.rad2deg(lat)
41  orbitparams['alt'] = alt * 1000.0 # convert from km to meters
42 
43  return orbitparams
def derive_orbitparams(posr, velr)