轨道计算在pyepehm看起来并不顺利

时间:2014-11-05 10:24:31

标签: pyephem

我正在使用pyephem来计算特定时间特定卫星的位置。 使用此处描述的简单3LE方法执行此操作; http://rhodesmill.org/pyephem/quick.html#catalog-format

我当时正在做的是写一个循环,并将x分钟添加到我的now()时间,以便我可以在将来获得卫星的位置 - 在我的脑海中创建它将遵循的轨道。

所以使用

mySat = ephem.readtle(第1行,第2行,第3行) mySat.compute(myTime)// MyTime在每个循环中递增1分钟。

这给了我几点,但是当我绘制它们时,它们看起来很粗糙,你可以在这里看到; http://cdb.io/1zvJbQX (忽略日期行问题)。

我认为问题可能是一些问题 - 所以请允许我进行健全检查;

myDets = mySat.compute的输出是各种各样的东西,但包括myDets.sublong和myDets.sublat。这两个是我正在使用的。它们的格式为117:34:3.45,我读为度/分/秒,并使用D + M / 60 + S / 3600进行转换。 我认为这是正确的,因为返回的位置看起来适合所涉及的卫星。

之后 - 我只能假设这是造成这种情况的pyephem计算?

我希望这是有道理的,如果有人对如何管理我有任何指示我会非常感激。

由于

2 个答案:

答案 0 :(得分:0)

我似乎已经感染了“在网上发布后找到解决方案”'错误...

Sooo,在从DDMMSS转换为DD时,似乎我没有考虑负面/正面因素。

以下是我的代码 - 我知道这很难看。

    dmsLong = str(satLine.sublong);
    #print dmsLong
    dmsLat = str(satLine.sublat);
    ddLong = abs(float(dmsLong.split(":")[0]))+(float(dmsLong.split(":")[1])/60)+(float(dmsLong.split(":")[2])/3600)
    ddLat = abs(float(dmsLat.split(":")[0]))+(float(dmsLat.split(":")[1])/60)+(float(dmsLat.split(":")[2])/3600)

    if float(dmsLong.split(":")[0]) < 0:
        ddLong = -ddLong
    if float(dmsLat.split(":")[0]) < 0:
        ddLat = -ddLat
    #print ddLong
    coordstring += "[" + str(ddLong) + "," + str(ddLat) + "],"

所以这似乎有助于使曲线更平滑。

感谢阅读!

答案 1 :(得分:0)

您可以通过对数字进行数学运算将sublat等值直接转换为数字:

print(satLine.sublat)
print(satLine.sublat / ephem.degree)

输出:

45:54:58.6
45.9162779596