问题标签 [astronomy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4970 浏览

python - 使用 spg4,pyephem 的 Python 卫星跟踪 - 位置不匹配

我正在尝试编写一个基本的 python 脚本,它将从给定位置跟踪用 tle 定义的给定卫星。我不是一个 asto/orbital 人,但我正在努力变得更聪明。

我遇到了一个问题,我使用的不同模型给了我非常不同的位置答案。我试过使用:pyEphem spg4 predict(exec system call from script)

我正在测试的卫星是 ISS 和 directv10(一颗固定的,一颗移动的 - 具有可用于验证的互联网跟踪):

我已经修改了预测源以给我 eci 位置,以便我可以使用它来了解真实位置。我还让它给出了用于验证观察的 az、el 范围。我正在使用 spg4 来获取真实位置。对于观察到的位置,我使用的是 PyEphem。

我从 spg4 获得 ECEF 职位:

我的基于 pyephem 的观察代码是:

llh2ecef 转换:

aer2ecef:

当我比较和绘制 3D 地球仪上的位置时(使用 ecef 位置),我得到了所有地方的答案。预测 eci 位置(转换为 ecef)与我在 ISS 跟踪网站上看到的相匹配(http://www.n2yo.com/?s=25544

get_real() 的结果在规模和位置上都相差甚远。get_ob() 的结果在比例上是正确的,但在地球上的位置是错误的

示例结果:

基于预测:

基于python:

两个观测值之间的 az、el 和范围不匹配。这些位置与“真实”位置不匹配。(在 ecef2llh 转换后,lat 和 long 会,但 height 不会。

与基于网络的跟踪器相比,我注意到预测的“真实”llh 位置与网站匹配。对于 directv10,pyEphem 匹配方位角和仰角,但不匹配 ISS

当我在地球仪上绘制它们时,预测 eci“真实”位置在正确的位置 - 匹配跟踪器网站)。spg84 ecef 位置(我认为应该与 predict 相同,位于地球的另一侧。预测的“观察到”位置靠近 spg84 位置。pyEphem 的高度完全关闭并且不显示(方式太低,在地球内部)。

所以我的问题是我在哪里使用错误的 python 模型?我的理解是 spg84 传播()调用应该以米为单位返回卫星的执行位置。我会认为应该匹配 eci2efec 转换后的预测位置。当使用 sat.sublat、sat.sublong、sat.elevation 时,我还期望匹配然后是 llh2ecef()。

正如我所说,我对所有轨道事物都是新手,所以我确信我会犯一个简单的数学错误或一些事情。我尝试用谷歌搜索并尽可能多地搜索答案、示例和教程,但到目前为止没有任何帮助(我尝试了多种 ecef2llh 和 llh2ecef 方法来尝试解决这些错误。

任何建议,意见,正确方向的指示将不胜感激。如果这对某人有帮助,我可以发布/发送我正在使用的完整代码。我试图确保我在这里发布了重要的部分,并且不想让这个(已经非常)长的帖子变得更长。

谢谢您的帮助。

亚伦

更新:

我发现了问题的至少一部分。spg84.propagate() 返回 ECI 中的位置,而不是 ECEF。通过 eci2ecef 快速运行,它与预测响应完美对齐。

在发帖寻求帮助后,我似乎总能找到解决方案;)

现在需要弄清楚观察者位置发生了什么。这归结为:如何从 pyEphem.compute() 获取结果并获取卫星的 ecef 位置?更喜欢使用 az、el、范围值,而不是纬度、经度、海拔。

我猜我的 aer2ecef 调用中的错误。

谢谢。

更新 2:

让观察结果与“真实”位置一致。看来我遇到了单位问题。工作代码:

现在只需要 aer2ecef() 方法来返回正确的位置......

0 投票
1 回答
10884 浏览

coordinate-transformation - ECEF 来自方位角、仰角、范围和观察者 Lat、Lon、Alt

我正在尝试编写一个基本的 python 脚本,该脚本将从给定位置跟踪用 tle 定义的给定卫星。我不是一个 asto/orbital 人,但我正在努力变得更聪明。

当我尝试将方位角、仰角、范围值转换为 ECEF 位置时遇到问题。我正在使用 PyEphem 来获取观察值,并使用 spg4 来获取要验证的真实位置。我也在使用网站http://www.n2yo.com/?s=25544来验证值。

我通过以下方式获得观察到的方位角、仰角和范围:

报告的方位角、仰角和范围与网站相符。我正在转换为 ECEF 职位:

但是,当我绘制它时,位置很偏离(地球的错误一侧)。我从网站和 spg4 中获得的位置匹配,所以我相信这些是正确的。

我不确定错误是在我的转换方法中,还是我使用了错误的数据进行转换。我在这里的答案中找到了该方法:Get ECEF XYZ given starting coordinates, range, azimuth, and elevation

任何关于我下车的建议或建议将不胜感激。以下是测试输入/输出:

我正在测试的卫星是 ISS 和 directv10(一颗固定的,一颗移动的 - 具有可用于验证的互联网跟踪):

观察站lla:

结果:

0 投票
2 回答
491 浏览

python - 使用 ATpy 和 numpy 高效读取大文件?

我已经到处寻找这个问题的答案,但似乎没有什么真正符合要求。我有非常大的文件,我试图用 ATpy 读取,数据以 numpy 数组的形式出现。对于较小的文件,以下代码就足够了:

从那里我建立了一些变量,我必须在以后进行操作以用于绘图目的。有很多这样的操作:

等等

但是对于非常大的文件,计算机无法处理。我认为在解析开始之前所有数据都存储在内存中,这对于 2GB 文件是不可行的。那么,我可以用什么来处理这些大文件呢?

我看过很多帖子,人们将数据分解成块并使用for循环遍历每一行,但鉴于这些文件的性质和操作类型,我认为这对我不起作用我需要在这些阵列上做。我不能只对文件的每一行进行一次操作,因为每一行都包含许多分配给列的参数,在某些情况下,我需要对单个列中的数字进行多项操作。

老实说,我并不真正了解 ATpy 和 numpy 幕后发生的一切。我是 Python 的新手,所以我很欣赏清楚拼写出来的答案(即不依赖大量隐式编码知识)。必须有一种干净的方式来解析它,但我没有找到它。谢谢。

0 投票
2 回答
1567 浏览

python - 如何使用 PyEphem 计算正确的经度和行星星座

我试图使用 PyEphem 计算太阳纬度和经度,但我不明白的是当我计算太阳经度和星座时

所以 43:02:58.8 是 13.02 Taurus 但是当我尝试获取星座时

它说白羊座出了什么问题我不明白请帮忙

0 投票
3 回答
1299 浏览

python - pyEphem - 计算非地球卫星的位置

我正在尝试获取不绕地球运行的卫星的地球距离和赤经(相对于我在地球上的观察点),但 pyEphem 没有返回与其他太阳体相同的属性。

以木卫三(木星最大的卫星)为例:

我收到此错误:

ra属性存在,但它是相对于我的Observer还是相对于木星的?

似乎是相对的Observer,因为如果我改变位置,值也会改变。

我已经阅读了文档,我知道这些属性不是为卫星定义的,但我不知道如何计算相对于地球的那些属性,因为月球体的附加定义属性:

在行星卫星上,还设置:

月球相对于行星的位置(以行星半径测量)

正在做:

输出:

由于木星的平均半径为 69173 公里,这些值转化为:

鉴于我知道木星相对于 的距离和赤经,Observer如何计算moonGanymede(也相对于Observer的距离和赤经?

我正在使用 pyEphem 3.7.5.1(使用 Python 2.7)。

0 投票
1 回答
1966 浏览

astronomy - pyephem、libnova、stellarium、JPL Horizo​​ns 在月球 RA/DEC 上存在分歧?

小编辑:我在下面说 JPL 的 Horizo​​ns 库不是开源的。实际上,它是,它可以在这里找到:http: //naif.jpl.nasa.gov/naif/tutorials.html

2013-01-01 00:00:00 UTC,北纬0度,东纬0度,海平面高程,J2000时代的月球赤经和赤纬是多少?

可悲的是,不同的库给出的答案略有不同。转换为度数,汇总结果(RA 优先):

我的问题:为什么?笔记:

  • 我意识到这些差异很小,但是:

    • 我使用 pyephem 和 libnova 来计算太阳/月亮升起/落下,这些时间对高纬度的位置非常敏感(例如,午夜太阳)。

    • 我可以理解 JPL 的 Horizo​​ns 库不是开源的,但其他三个是开源的。不应该有人找出这些库中的差异并将它们合并吗?这是我的主要抱怨。stellarium/pyephem/libnova 库的作者在如何进行这些计算上有根本的区别,还是他们只需要合并他们的代码?

  • 我也意识到计算不同可能还有其他原因,并且希望在纠正这些可能的错误方面提供任何帮助:

    • Pyephem 和 Libnova 可能正在使用日期的纪元而不是 J2000

    • 月球足够近,以至于观察者的位置可以影响它的 RA/DEC(视差效应)。

    • 我使用的是 Perl 的 Astro::Nova 和 Python 的 pyephem,而不是这些库的原始 C 实现。但是,如果这些差异是由使用 Perl/Python 引起的,我认为这很重要。

  • 我的代码(带原始结果):

    • 首先,Perl 和 Astro::Nova:

在此处输入图像描述

在此处输入图像描述

[JPL Horizo​​ns 需要 POST 数据(不是真的,而是假装),所以我无法发布 URL]。

0 投票
1 回答
542 浏览

python - 带有 healpy 的 2-dim ndarray 的 Gnomonic 投影

Gnomview 允许可视化球形地图的 gnomonic 投影。如何将投影存储在二维 numpy.ndarray 中?healpy 相当于map_outIDL 的 gnomview 的选项是什么?

0 投票
1 回答
3160 浏览

google-maps-api-3 - 如何使用 Google map Sky API 获取夜空中星星的位置

在查看了Google Earth Sky API的文档后,我知道使用它可以渲染夜空。

但是,我可以知道星星的确切位置和名称吗?此外,我可以列举出天上所有的星星吗?

0 投票
1 回答
821 浏览

ruby - 在 Ruby 中计算天文事件最可靠的方法是什么?

给定一个纬度和经度,我需要在 Ruby 中计算天文、航海、民用的黄昏,以及月亮和太阳的天顶。

基于纬度/经度和日期的本地工作(无需网络调用)的 gem 将是完美的,但我可以查询的网络服务也可以。

Weather Underground 通过 Web 显示此信息,但他们的 API 并未提供所有字段(例如,缺少天顶)。

solareventcalculator是一个宝石,但它缺乏一些功能,在某些情况下正确计算日落时间但日期不正确。

RubyGems 只有一个天文学结果,setec_astronomy似乎是 KeePass 搜索实用程序。

这里有一个相关的答案,但不如SolarEventCalculator.

0 投票
1 回答
1459 浏览

python - Python 和 1D 频谱 - 如何访问拟合文件中的数据

我对 Python 很陌生,一直在寻找我想要的答案,但还没有找到。我有一个 1D 光谱文件 (.fits),想访问它的波长和通量信息。例如,如果我插入一个波长值,我正在尝试编写一个程序,该程序会给我输入波长的通量。谁能给我一个关于如何编写这样一个程序的快速指南,或者我需要从哪些模块开始?numpy 和 pyfits 是否足以完成这项任务?太感谢了。