Skip to content
Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
45 lines (34 sloc) 1.43 KB
"""Converts coordinates in TEME frame to ECEF frame."""
from datetime import datetime, timezone
import numpy as np
def conv_to_ecef(coords):
"""Converts coordinates in TEME frame to ECEF frame.
Args:
coords(nx4 numpy array): list of coordinates in the format [t,x,y,z]
Returns:
nx4 numpy array: list of coordinates in the format
[t, latitude, longitude, altitude]
Note that these coordinates are with respect to the
surface of the Earth. Latitude, longitude are in degrees.
"""
t = coords[:,0]
x = coords[:,1]
y = coords[:,2]
z = coords[:,3]
alt = (x**2+y**2+z**2)**0.5
lat = np.degrees(np.arcsin(z/alt))
lng = np.degrees(np.arctan2(y,x)%(2*np.pi))
midnight = datetime.fromtimestamp(t[0],tz=timezone.utc)
midnight = midnight.replace(hour=0,minute=0,second=0,microsecond=0)
t_mid = midnight.timestamp()
J2000 = 946728000
Tu = (t_mid-J2000)/86400/36525
tg0h = 24110.54841 + 8640184.812866*Tu + 0.093104*Tu**2 - 6.2e-6*Tu**3
we = 1.00273790935
tgt = tg0h + we*(t-t_mid)
era = (tgt%86400)*360/86400
lng = lng-era
return np.column_stack((t,lat,lng,alt))
if __name__ == "__main__":
ecef_coords = conv_to_ecef(np.array([[1521562500,768.281,5835.68,2438.076],[1521562500,768.281,5835.68,2438.076],[1521562500,768.281,5835.68,2438.076]]))
print(ecef_coords)
You can’t perform that action at this time.