pyEphem - 计算非土卫星的位置

时间:2013-04-23 15:01:46

标签: python math geometry astronomy pyephem

我试图获得一颗不绕地球轨道运行的卫星的地球距离和正确的提升(相对于我在地球上的观测点),但是pyEphem没有返回与其他太阳体相同的属性。

使用木卫三(木星最大的卫星),例如:

import math, ephem

Observer = ephem.city('London')
Observer.date = '2013-04-23'
Observer.pressure, Observer.elevation = 0, 100

moonGanymede = ephem.Ganymede(Observer)

print math.cos(moonGanymede.ra) # right ascension
print moonGanymede.earth_distance * ephem.meters_per_au # distance

我收到此错误:

AttributeError: 'Ganymede' object has no attribute 'earth_distance'

ra属性存在,但它是相对于我的Observer还是Jupiter?

似乎与Observer相关,因为如果我更改位置,则值也会更改。

我读过the documentation并且我知道这些属性没有为卫星定义,但我不知道如何计算相对于地球的属性,因为月球体的附加定义属性:

  

关于行星卫星,也有:

     

月球相对于行星的位置(以行星半径测量)

x — offset +east or –west
y — offset +south or –north
z — offset +front or –behind

这样做的:

print moonGanymede.x, moonGanymede.y, moonGanymede.z

输出:

-14.8928060532 1.52614057064 -0.37974858284

由于木星的平均半径为69173公里,因此这些值转换为:

moonGanymede.x = 1030200 kilometers (west)
moonGanymede.y = 105570 kilometers (south)
moonGanymede.z = 26268 kilometers (behind)

鉴于我知道木星相对于Observer的距离和正确提升, 我如何计算moonGanymede的距离和右上升(也相对于Observer {1}})

我正在使用pyEphem 3.7.5.1(使用Python 2.7)。

3 个答案:

答案 0 :(得分:1)

只是一些想法;您可能需要执行两个步骤。

  1. 获取相对于母行星的卫星位置
  2. 获取行星相对于观察者的位置
  3. 三角学计算;获得相对于观察者的卫星位置。
  4. 你已经做了1,并且很容易做到2.将所有值转换为x,y,z然后再添加回角度。或者我确定你/ ephym可以直接为你做这件事。

    HTH

答案 1 :(得分:0)

正确计算正确的提升,赤纬,方位角等:

In [31]: g = ephem.Ganymede(Observer)

In [32]: j = ephem.Jupiter(Observer)

In [33]: g.ra, g.az, g.dec
Out[33]: (1.3024204969406128, 5.586287021636963, 0.38997682929039)

In [34]: j.ra, j.az, j.dec
Out[34]: (1.303646765055829, 5.5853118896484375, 0.39010250333236757)

Ganimede和Jupiter的值足够接近,看起来除了到物体的距离外,你得到的结果都是正确的。

答案 2 :(得分:0)

我仍然想弄明白(如果有人发现了什么,请告诉我),但如果我这样做似乎

sqrt((-14.8928060532)^2 + (1.52614057064)^2 + (-0.37974858284)^2) = 14.9756130481

我总是会得到一个始终在轨道中心最小/最大距离内的值(14.95 - 14.99)。

由于在轨道中心半径中指定,我需要乘以69173 * 1000来获得SI单位:

14.9756130481 * 69173 * 1000 = 1.0359080813762213 * 10^9 meters

因为pyEphem处理与AU的距离:

print (1.0359080813762213 * 10**9) / ephem.meters_per_au # 0.00692461785302

与此同时,地球 - 木星距离为5.79160547256 AU。

现在,为了获得距离,我应该根据z坐标的符号加或减:

5.79160547256 - 0.00692461785302 = 5.78468085470698 AU

今天(现在)运行相同的代码会返回6.03799937821,这似乎非常接近WolframAlpha当前正在返回的6.031的值,它不匹配100%,但也许可以通过一些不同的基础星历表库或数据源来解释。不确定......