我试着写一个非常简单的程序,打印出任何行星的当前距离(以公里为单位)。我在用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'我能做什么?
发布于 2015-03-04 23:30:23
distance是一个Distance对象,所以如果您想要以公里为单位的距离,可以简单地使用distance.km。如果您想自己进行转换,可以使用distance.AU * 149597871。(如果它不完全匹配,那是因为Skyfield使用149597870.700公里/金进行转换)。
您可以在源这里中看到这个类的实现。
https://stackoverflow.com/questions/28867022
复制相似问题