【问题标题】:Orbit Calculations don't seem smooth in pyepehmpyepehm 中的轨道计算似乎并不顺畅
【发布时间】:2014-11-05 21:41:33
【问题描述】:

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

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

所以使用

mySat = ephem.readtle(line1,line2,line3) 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 计算导致了这种情况?

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

谢谢

【问题讨论】:

    标签: pyephem


    【解决方案1】:

    我似乎感染了“在线发布后找到解决方案”的错误...

    太好了,在从 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) + "],"
    

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

    感谢阅读!

    【讨论】:

      【解决方案2】:

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

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

      输出:

      45:54:58.6
      45.9162779596
      

      【讨论】:

        猜你喜欢
        • 2014-06-26
        • 2021-05-28
        • 1970-01-01
        • 2013-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-01
        • 2021-10-28
        相关资源
        最近更新 更多