4

我正在尝试获取不绕地球运行的卫星的地球距离和赤经(相对于我在地球上的观察点),但 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还是相对于木星的?

似乎是相对的Observer,因为如果我改变位置,值也会改变。

我已经阅读了文档,我知道这些属性不是为卫星定义的,但我不知道如何计算相对于地球的那些属性,因为月球体的附加定义属性:

在行星卫星上,还设置:

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

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的距离和赤经?

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

4

3 回答 3

1

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

  1. 获取卫星相对于母行星的位置
  2. 获取行星相对于观察者的位置
  3. 三角计算;获取卫星相对于观察者的位置。

您已经完成了 1,并且可以轻松完成 2。将所有值转换为 x、y、z,然后再添加回 angular。或者我确定您/ephym 可以直接为您执行此操作。

高温高压

于 2013-05-15T05:20:32.137 回答
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 的值足够接近,看起来除了到物体的距离之外,您可以得到正确的结果。

于 2013-05-19T10:30:52.427 回答
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.79160547256AU。

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

5.79160547256 - 0.00692461785302 = 5.78468085470698 AU

为今天(现在)运行相同的代码返回6.03799937821似乎非常接近WolframAlpha6.031目前返回的值,它不匹配 100%,但这可能是由一些不同的基础星历库或数据造成的资源。没有把握...

于 2013-05-20T00:42:59.020 回答