我试图获得一颗不绕地球轨道运行的卫星的地球距离和正确的提升(相对于我在地球上的观测点),但是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)。
答案 0 :(得分:1)
只是一些想法;您可能需要执行两个步骤。
你已经做了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%,但也许可以通过一些不同的基础星历表库或数据源来解释。不确定......