3

我正在尝试编写一个非常简单的程序,以公里为单位打印到任何行星的当前距离。我正在使用天域。这是我的火星代码:

from skyfield.api import earth, mars, now
ra, dec, distance = earth(now()).observe(mars).radec()


print(distance)

这将以天文单位打印出距离。为了转换为公里,我尝试乘以 149597871:

from skyfield.api import earth, mars, now
ra, dec, distance = earth(now()).observe(mars).radec()


print(distance*149597871)

但这会返回一个错误:

TypeError: unsupported operand type(s) for *: 'Distance' and 'int'

我能做些什么?

4

1 回答 1

5

distance是一个Distance对象,所以distance.km如果你想要以公里为单位的距离,你可以简单地使用。如果您想自己进行转换,可以使用distance.AU * 149597871. (如果不完全匹配,那是因为 Skyfield 使用 149597870.700 km/au 进行转换)。

您可以在此处的源代码中查看此类的实现。

于 2015-03-04T23:30:23.637 回答