首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用skyfield实现ECEF到J2000

用skyfield实现ECEF到J2000
EN

Stack Overflow用户
提问于 2017-07-11 13:27:36
回答 1查看 1.1K关注 0票数 1

假设我在某一时刻有一个物体的纬度、经度和距离。我需要得到它的J2000坐标。我要做的是

代码语言:javascript
运行
复制
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]归一化并乘以它到地球的距离。其中涉及两个问题:

  1. 这样做对吗?
  2. 有没有更快的方法不加载'de421.bsp'?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-12 03:05:54

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

http://rhodesmill.org/skyfield/earth-satellites.html#generating-a-satellite-position

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

代码语言:javascript
运行
复制
sat = skyfield.api.Topos(latitude_degrees=latitude, longitude_degrees=longitude)
x, y, z = sat.at(ts.utc(time)).position.km

但我不确定您的代码会是什么样子,因为我在您的代码中看不到您所说的到地球的距离,您的代码引用了一个没有使用的sa变量(也许您指的是sat?) --但是希望文档能够帮助您移动!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45035936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档