Python 使用skyfield将ECEF连接到J2000
假设我有(ECEF)纬度,经度和在特定时间物体到地球的距离。我需要得到它的J2000坐标。 我现在做的是Python 使用skyfield将ECEF连接到J2000,python,skyfield,Python,Skyfield,假设我有(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_degree
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]
并将其乘以到地球的距离。
涉及两个问题:
结果应该是准确的,但确实有一个更简单的方法——你应该问的直觉在这里确实是正确的!尝试阅读地球卫星文档中的“生成卫星位置”部分: 我想你会发现,你可以这样做来达到同样的效果:
sat = skyfield.api.Topos(latitude_degrees=latitude, longitude_degrees=longitude)
x, y, z = sat.at(ts.utc(time)).position.km
但我不确定你的代码会是什么样子,因为我看不到你的代码中有你提到的离地球的距离,而且你的代码引用了一个
sa
变量,而这个变量在其他情况下是不会被使用的(也许你的意思是sat
?)-但希望文档能让你有所行动 太好了,非常感谢sa
确实是sat
(修复它)。最后将使用到地球的距离,乘以结果,得到正确的距离(无论如何,这部分并不重要,这就是我忽略它的原因)。