Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用skyfield将ECEF连接到J2000_Python_Skyfield - Fatal编程技术网

Python 使用skyfield将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

假设我有(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]
并将其乘以到地球的距离。 涉及两个问题:

  • 这样做对吗
  • 有没有不加载“de421.bsp”的更快的方法

  • 结果应该是准确的,但确实有一个更简单的方法——你应该问的直觉在这里确实是正确的!尝试阅读地球卫星文档中的“生成卫星位置”部分:

    我想你会发现,你可以这样做来达到同样的效果:

    sat = skyfield.api.Topos(latitude_degrees=latitude, longitude_degrees=longitude)
    x, y, z = sat.at(ts.utc(time)).position.km
    

    但我不确定你的代码会是什么样子,因为我看不到你的代码中有你提到的离地球的距离,而且你的代码引用了一个
    sa
    变量,而这个变量在其他情况下是不会被使用的(也许你的意思是
    sat
    ?)-但希望文档能让你有所行动

    太好了,非常感谢
    sa
    确实是
    sat
    (修复它)。最后将使用到地球的距离,乘以结果,得到正确的距离(无论如何,这部分并不重要,这就是我忽略它的原因)。