假设我在某个时间拥有(ECEF)纬度,经度和距离地球的距离。我需要得到它的J2000坐标。 我正在做的是
import skyfield.api
planets = skyfield.api.load('de421.bsp')
earth = planets['earth']
ts = skyfield.api.load.timescale()
sat = earth + skyfield.api.Topos(latitude_degrees=latitude, longitude_degrees=longitude)
obs = earth.at(ts.utc(time)).observe(sat)
x, y, z = obs.km
然后,我会将[x, y, z]
标准化并乘以距离地球的距离。
涉及两个问题:
答案 0 :(得分:1)
结果应该是准确的,但确实有一种更简单的方法 - 你应该问的预感在这里确实是正确的!尝试阅读地球卫星文档的“生成卫星位置”部分:
http://rhodesmill.org/skyfield/earth-satellites.html#generating-a-satellite-position
我想你会发现你可以做这样的事情来达到同样的结果:
sat = skyfield.api.Topos(latitude_degrees=latitude, longitude_degrees=longitude)
x, y, z = sat.at(ts.utc(time)).position.km
但是我不确定您的代码究竟是什么样子,因为我在代码中的任何地方都没有看到您所说的距离到地球,并且您的代码引用了sa
变量否则不会使用(也许你的意思是sat
?) - 但希望文档会让你感动!