创建个人国际空间站探测器

国际空间站(ISS)是每个太空爱好者梦寐以求的地方。想象一下,从国际空间站的窗口眺望地平线上的蓝色薄雾,这是一种难以置信的感觉。想要知道从太空看地球是什么样子吗?这里就是答案。

从太空看地球 - nasa.gov

国际空间站以约18,000英里每小时的速度绕地球飞行,仅需90分钟即可完成一次地球公转。现在可能会问,为什么会告诉关于空间站的事情?因为今天将使用Python创建自己的国际空间站探测器。

预备条件

为了构建Python中的ISS探测器,需要在系统中安装以下软件组件:

  • Anaconda发行版
  • Jupyter Notebook
  • Plotly
  • API
  • Python
  • Pandas

重要的是要注意,这里需要安装Anaconda个人版,因为它是免费的。安装Anaconda后,Jupyter Notebook也会一并安装,并且包含在Python发行版中。现在让开始项目。

启动Jupyter Notebook

可能会想,为什么在这里描述启动Jupyter Notebook(这样一个简单的步骤)。因为大事往往始于小事。

启动Jupyter Notebook取决于使用的操作系统。因为将在这里使用Ubuntu 20.04.2 LTS,所以将向展示已经完成的步骤。尽管操作系统可能不同,但从代码的角度来看,其余的都是一样的。

对于在Ubuntu或任何基于Linux的发行版上启动Jupyter Notebook,只需打开终端并输入“jupyter-notebook”,然后按回车。几秒钟后,将看到Jupyter Notebook在网络浏览器中打开。

创建新的Jupyter Notebook

一旦Jupyter Notebook启动并运行,现在需要在其中创建一个新的笔记本。将笔记本想象为在传统IDE中创建的文件。

安装必要的库

在这个项目中,将使用两个Python库,分别是pandas和plotly。如果已经安装了这些库,那么就可以继续了。如果没有,请跟随一起安装。

将使用pip安装这些库。只需在笔记本中输入以下两个命令,安装就会开始。安装完成后,不要忘记重启内核。

!pip install pandas plotly

使用API

现在可能会问,正在开发一个ISS探测器,而ISS以18,000英里每小时的速度绕地球飞行,大约需要90分钟。那么如何锁定ISS的坐标呢?这就是API发挥作用的地方。

如果搜索了关于API(应用程序编程接口)的信息,会发现很多关于它的信息。为了简单起见,让给一个例子。由于COVID-19大流行,现在都在家工作。那么如何与团队沟通呢?简单地说,就是通过使用任何聊天应用程序,如Microsoft Teams、Slack、Skype。类似地,API允许计算机之间交换信息。

在这种情况下,将使用的API将为提供ISS在地球轨道上的位置。为此,将使用一个API。请访问以下链接。

首先,将在Jupyter笔记本中加载所需的库,即pandas和plotly。

import pandas as pd import plotly.express as px

现在来到重要的部分。记得告诉过关于API以及将如何使用它。现在是时候看看将如何使用它了。

首先需要记住的是,API使用JSON作为他们的通信语言,就像在工作中使用英语一样。

现在访问上面提到的链接,然后复制“http://api.open-notify.org/iss-now.json”。

url = "http://api.open-notify.org/iss-now.json"

复制这个值后,将把它存储在一个变量中,称之为URL。接下来,将创建一个pandas数据框。在这里,将使用read_json()方法。原因很简单,正在传递一个API的URL,它将返回JSON格式的结果,而要读取JSON格式的数据,有pandas中的read_json()方法。

df = pd.read_json(url)

在这里看到的是包含时间戳、消息和iss_position的三列值。这些纬度和经度将是ISS的坐标。

数据框的内容看起来是结构化的,但它们不适合图形可视化。让现在重新调整数据框。

df = df[['iss_position', 'latitude', 'longitude']]

现在,有一个问题。真的需要数据框中的索引和消息列吗?因为最终需要有关ISS坐标的信息。因此,将从数据框中删除索引和消息列。

df = df.drop(['timestamp', 'message'], axis=1)

有趣的部分来了,找到ISS的位置。让直接进入正题。

使用plotly绘制ISS的位置。

fig = px.scatter_geo(df, lat='latitude', lon='longitude') fig.show()

在这里,使用了scatter_geo()方法创建了一个世界地图,并且在该方法中,传递了包含ISS纬度和经度的数据框。

准备好看到ISS的位置了吗?敢打赌已经准备好了。那么它就在这里:

能看到那个紫色的点吗?那是ISS的位置!

一旦图表创建完成,将在这个世界地图上看到一个小点。只需将鼠标指针移动到该点上,就可以看到ISS的确切位置。

希望喜欢这篇文章。

请与朋友和同事分享这篇文章。

在LinkedIn上与联系。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485