2

如果使用 Python2 或 Python3 运行,以下代码会产生两种不同的结果。为什么?

from skyfield.api import wgs84, load

latitude =  -35
longitude =  150
altitude =  100
year = 2022
month = 1
day = 21
hour = 14
minute = 6
seconds = 43.941372

ts = load.timescale()
t_meas = ts.utc(year,month,day,hour,minute,seconds)

radar = wgs84.latlon(latitude, longitude, altitude)
radar_ECI = radar.at(t_meas)
print(radar_ECI.position.m)

输出天空场 1.41 [-2804378.01051857 4419981.90545062 -3632070.86144542]

输出天空场 1.40 [-2804356.81834716 4419995.31425895 -3632070.90655877]

4

3 回答 3

3

Skyfield的两个版本并不相同。1.40 版安装在 Python2 上,1.41 版安装在 Python3 上。一旦我升级到 1.41,问题就解决了。但是,Skyfield 的更改日志中似乎没有任何内容可以解释为什么它会在这两个版本之间产生不同的结果。

于 2022-01-24T21:43:40.673 回答
1

我建议更新您的问题以显示您获得的两个输出。没有它们,读者无法判断您是在询问输出差异很大还是很小。

一个可能的答案(但没有看到输出,我不知道它们之间的差异是否在合理的范围内以匹配这个解释):大多数 Skyfield 版本——理想情况下,所有 Skyfield 版本,但有时我忘记了——携带新的下载来自 IERS 的最新和最新的 ΔT 表。他们不断地预测,然后测量地球的方向。在 Skyfield 1.40 和 1.41 之间,表格已更新,这可能意味着对过去几个月地球指向的估计略有不同。通常,这意味着东西方向的差异,但在南北方向上的返回位置没有差异。

于 2022-01-25T03:06:26.603 回答
-2

毫无疑问,Python 2 和 3 的编码方式有很多不同,应该加以考虑。但是,如果您想使用具有相同 Python 2 编码的 Python 3,您可以使用这个未来的内置库。给出的金额可能会有所不同

syntax : from __future__ import ..

你可以在官方 Python 文档中阅读它:

https://docs.python.org/3/howto/pyporting.html#the-short-explanation

也许这篇文章也会对您有所帮助,为了更好地理解差异:

https://cv-tricks.com/how-to/developer-guide-to-key-differences-between-python-2-and-3/#:~:text=Python%203%20uses%20unicode%20strings, using%20the%20bytes()%20function.&text=Python%202%20provides%20useful%20functional,default%20in%20the%20global%20namespace

于 2022-01-22T16:35:39.183 回答