我试图编写一个非常简单的程序,以千米为单位打印到任何行星的当前距离。我正在使用Skyfield。 这是我的火星代码:
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'
我该怎么办?
答案 0 :(得分:5)
distance
是一个Distance
对象,因此如果您想要以km为单位的距离,则可以使用distance.km
。如果您想自己进行转换,可以使用distance.AU * 149597871
。 (如果它不完全匹配,那是因为Skyfield使用149597870.700 km / au进行转换)。
您可以在源here中看到此类的实现。