1

위성 궤도의 지구 중심 관성 좌표계 (ECI)에서 위치 (x, y, z)와 속도 (Vx, Vy, Vz) 벡터를 가지며 궁극적으로 측지 좌표로 끝나기를 원합니다 (위도, 경도, & 고도).지구 중심 관성 (ECI) 좌표를 지구 중심 지구 좌표로 변환하는 방법 (ECEF) AstroPy? 다른?

이 점에 따르면 지구 중심 지구 고정 (ECEF) 좌표를 중간 단계 (ECI -> ECEF -> 위도/경도/Alt)로 변환해야하는 것으로 보입니다.

저는 ECI와 ECEF가 동일한 원점 (지구 질량 중심)과 북극을 가리키는 동일한 z 축을 공유하고 있음을 알고 있습니다. 그러나 ECI를 ECEF로 변환하기 위해 필요한 실제 방정식 또는 조정이 무엇인지 확실하지 않습니다.

그렇지 않으면 누구나 Astropy에서 변환 된 캔을 알고 있거나 비슷한 점이 있다면 더 좋을 것입니다. (저는 Astro Py 또는 Space Py에서 ECI를 옵션으로 보지 못했습니다).

여기 내 궤도를 생성하고 위치와 속도 벡터를 얻기 위해 사용하는 코드입니다.

from scipy.constants import kilo 
import orbital 
from orbital import earth, KeplerianElements, Maneuver, plot, utilities 
from orbital.utilities import Position, Velocity 
import matplotlib.pyplot as plt 
import numpy as np 

orbitPineapple = KeplerianElements.with_period(5760, body=earth, 
e=0.05, i=(np.deg2rad(0)), arg_pe=(np.deg2rad(30))) 
plot(orbitPineapple) 
plt.show() 
print(orbitPineapple.r) 
print(orbitPineapple.v) 

아웃 : 위치 (X = Y 5713846.540659178 = 3298890.8383577876, Z = 0.0) 속도 (X = -3982.305479346745는, Y는 6897.555421488496 = Z = 0.0)

+0

같은 lat, lonheight 속성이 일부 exemplaric 입력과 예상 출력을 포함 할 수 액세스? 그러면 실제로 효과가있는 솔루션을 찾기가 훨씬 쉬워집니다. – MSeifert

+0

내 궤도를 생성하고 위치 및 속도 벡터를 얻기 위해 사용하는 코드를 포함하도록 내 질문을 편집합니다. – Rose

+0

지금 샘플 위성 궤도의 ECI에서 위치와 속도를 가지고 있습니다. 위치 (x = 5713846.540659178, y = 3298890.8383577876, z = 0.0) 속도 (x = -3982.305479346745, y = 6897.555421488496, z = 0.0) 위성에 대한 위도, 경도 및 고도를 얻고 싶습니다. 같은 위치. 위도와 경도로 변환하기 위해서는 먼저 ECI에서 ECEF로 변환해야한다고 읽었습니다. 문제는 ECI는 ECEF 및 위도/경도/고도와 같이 지구와 함께 회전하지 않는 고정 좌표계입니다. ECI를 ECEF로 변환하는 방법을 모르겠습니다. – Rose

답변

0

가지가 있습니다 지구 중심 관성 프레임, 그리고 응답은 당신이 좌표를 가지고있는 것에 달려 있습니다.

가장 흔한 것은 J2000입니다. 이것은 2000 년 1 월 1 일에 지구의 방향에 따라 정의됩니다. 또 다른 공통적 인 것은 GCRF로 거의 동일합니다 (80 밀리 초 내로).

은 그 두 중 하나가 있다면, 당신은 astropy EarthLocation 객체를 생성 할 수 있어야한다 그래서

from astropy import coordinates as coord 
from astropy import units as u 
from astropy.time import Time 
now = Time('2017-09-27 12:22:00') 
# position of satellite in GCRS or J20000 ECI: 
cartrep = coord.CartesianRepresentation(x=5713846.540659178, 
             y=3298890.8383577876, 
             z=0., unit=u.m) 
gcrs = coord.GCRS(cartrep, obstime=now) 
itrs = gcrs.transform_to(coord.ITRS(obstime=now)) 
loc = coord.EarthLocation(*itrs.cartesian.cartrep) 
print(loc.lat, loc.lon, loc.height) 
+0

시간 계수는 어떻게됩니까? 위치 (x = -2686197.06, y = -6402017.61, z = 10956.56) 및 UTC 시간 (오늘) 2017/09/28 16 : 53 : 40.293 또는 559889620.2930000의 ISS 궤도에 대한 위도/경도/고도를 얻고 싶다고합시다 J2000에서. – Rose

+0

주어진 위치에 정확한 시간을 사용하는 것은 GCRS에서 ITRS 로의 변환을 올바르게하는 데 중요합니다. 그래서'nowropy.time.Time' 객체에 저장된'xyz'의 위치에 해당하는 시간이 있다면'itrs = coord.GCRS (cartrep, obstime = now) .transform_to (coord .ITRS (장애물 = 지금))'. 나는이 대답을 편집했습니다 –

+0

새 버전을 사용해 보았는데 형식 오류가 발생했습니다 :'TypeError : transform_to()는'itrs = gcrs.transform_to (coord.지금 ITRS, obstime =) ' – Rose