저는 단지 PyEphem
으로 시작하고 있습니다. 내 즉각적인 작업은 주어진 날짜와 시간에 지구상의 태양 광 지점을 latitude-longitude
값으로 계산합니다. 이것을 해결하기 위해 PyEphem
을 조사 하겠지만 누군가 이미 이것을 수행했다면 샘플 코드를 고맙게 생각합니다.서브 솔라 포인트 계산
답변
나는 오늘 아침 나는 곳에서 실제 코드를 테스트 할 수는 없지만 : 객체를 적위에서 φ이 항상 옳다 위도 φ이 지구에 위치 일련의 위에 타고해야한다, 그래서 위도 번호가 주어집니다 직접 신체의 .dec
속성 (또는 응용 프로그램에 따라 .a_dec
또는 .g_dec
)을 사용합니다.
이제 경도는 어떻습니까?
그리니치가 0도 경도를보고 0도 오른쪽 오름차순 하늘의 선을 볼 때 대략 하루에 한 번 발생해야하는 상황을 상상해보십시오. 그 순간, 하늘에있는 몸체 인 적경이 θ 일 때, 경도는 θ이며, 경도는 동쪽으로 향하는 것으로 가정합니다 (PyEphem의 경우와 동일).
이제 그리니치가 대신 0이 아닌 적경 선을 찾으십시오. 그렇다면 우리는 육체의 적경으로부터 그것을 빼내어 경도를 만들 필요가 있습니다. 왜냐하면 그 날이 진행되고 지구가 바뀌고 적소에 그리니치가 그리니치에 더 크고 커다란 권리가 넘겨지기 때문에, 어떤 주어진 시체가 지구를 가로 질러 서쪽을 통과 할 것이고, 그 경도는 서반구를 지나갈 때 줄어들고 음수가 될 것입니다.
그리니치 표준시의 경도 0도 경도 0도에서 관찰자를 만들고 빠른 참조를 올바르게 호출하면 .sidereal_time()
을 요청하여 주어진 순간의 그리니치에서의 오른쪽 오름차순 오버 헤드 라인을 확인할 수 있습니다. 그래서 신체의 아래에 경도 될 수 있다고 생각 :
lon = body.ra - greenwich.sidereral_time()
내가 합리적인 숫자가 나올 있는지 확인하기 위해 오늘에 나중에와 빠른 테스트를 할 것입니다.
나는 OP와 같은 대답을 찾고 있었다. 많은 글이 PyEphem이 실제의 예제를 제공하지 않고 어떻게 움직이는지를 "언급"하고 있습니다.
다음은 서브 솔라 포인트를 계산하는 실제 예제입니다. 모든 것을 -180도에서 180도 사이의 경도로 매핑합니다.
greenwich = ephem.Observer()
greenwich.lat = "0"
greenwich.lon = "0"
greenwich.date = datetime.utcnow()
sun = ephem.Sun(greenwich)
sun.compute(greenwich.date)
sun_lon = math.degrees(sun.ra - greenwich.sidereal_time())
if sun_lon < -180.0 :
sun_lon = 360.0 + sun_lon
elif sun_lon > 180.0 :
sun_lon = sun_lon - 360.0
sun_lat = math.degrees(sun.dec)
print "Subsolar Point Sun Lon:",sun_lon, "Lat:",sun_lat
저는 PyEphem에 대한 전문가가 아니기 때문에 더 나은 접근 방법이 될 수 있습니다. 그러나 지금까지 제 테스트는 제 목적을 위해이 작업을 수행했습니다.
p.s. 네 .. 위의 그리니치는 실제 위도/경도로 설정되지 않았습니다 ... 우리가 필요로하는 적절한 사이드 타임을 얻는 데 필요한 경도는 실제로 0.0입니다.