2012-10-11 9 views
2

관찰자 수평 속성을 조정하면 지구 위성의 상승/정각 시간에는 영향을 미치지 않는 것으로 보입니다. 또한 나는 libastro 코드에서 이것을 발견했습니다 :지구 위성의 수평선

/* we don't implement a minimum horizon altitude cutoff 
    SiteMinElev = 0; 
*/ 

수평선 컷오프가 구현되지 않은 이유가 있습니까? 예를 들어 위성 표고를 마스킹하는 것이 유용 할 것입니다.

+0

이 질문은 아마도 패키지 작성자에게 가장 적합 할 것입니다. – Richard

+0

리차드, 우리는 실제적으로 사용자가 여기에서 질문하는 것을 선호합니다. 그런 식으로 응답이 오래 가지 않더라도 커뮤니티가 변경 될 수 있습니다. :) –

답변

2

좋은 소식 : 위성 상승 및 설정은 PyEphem이 지구에 사용하는 수평선을 조절하는 능력이 부족 것을 의미하지 않습니다 libastro 저자의 소스 코드에서 발견 그래서 earthsat.c 주석의 일이 아니다 위성. 그들이 일하는 방법에 대해 궁금하다면 상승 및 설정 루틴은 그의 riset_cir.c 파일에서 찾을 수 있습니다.

나쁜 소식 :보고있는 동작은 PyEphem의 버그입니다! 사실, PyEphem은 지구 위성의 상승 및 기울임 계산을 실행할 때 관찰자의 수평선 설정을 사용하려고 시도하지만 잘못된 위치에서 수평선을 당깁니다. (자세한 내용은 _next_pass() 함수를 _libastro.c에 참조하십시오.) 관찰자의 지평선을 사용하는 대신 위성에서 마지막으로 compute()을 호출했을 때의 수평 값을 사용합니다.

나는이 버그를 PyEhem 할 일 목록에 추가 할 것이다. 한편 위성을 sat.compute(observer)으로 먼저 호출하여 사용하고자하는 수평선 값을 "확인"하고 나서 다음 번 통과 오버 헤드를 묻습니다. 다음은 예입니다

import ephem 
iss = ephem.readtle(
    'ISS (ZARYA)', 
    '1 25544U 98067A 12286.88755895 .00013766 00000-0 24141-3 0 4559', 
    '2 25544 51.6478 256.6034 0017425 159.6565 253.2565 15.50708155796305', 
    ) 
boston = ephem.city('Boston') 

rising_time = boston.next_pass(iss)[0] 
print 'Horizon = 0 rising:', rising_time 

boston.horizon = '-5' 
iss.compute(boston) 

rising_time = boston.next_pass(iss)[0] 
print 'Horizon = -5 rising:', rising_time 

우리가 순수하게 기하학적 수평선 아래 수평선을 아래로 밀어 이후이 스크립트는 당신에게 이전 상승 시간을 표시해야하고, 실제로 나는 그 답을 얻을; 네가 그렇게한다면 나에게 알려줘!

Horizon = 0 rising: 2012/10/13 05:14:28 
Horizon = -5 rising: 2012/10/13 05:12:58 
+0

브랜든,이게 정확히 내가 필요했던 것입니다. – user1739051