Python 如何追踪国际空间站(ISS)
探索国际空间站(ISS)的下落并目睹其实时运动可以是一种令人激动的体验。以下文章旨在展示如何利用Python追踪ISS,并利用Open Notify提供的ISS API在交互式世界地图上可视化其位置,借助folium
库的帮助。
安装所需的库
在我们开始ISS追踪之旅之前,有必要安装一些库:requests
,用于实现API调用,以及folium
,用于创建引人入胜的交互式地图。
pip install requests folium
获取国际空间站位置数据
为了获取国际空间站的当前位置,我们将使用Open Notify提供的ISS API。该API提供了代表国际空间站位置的纬度和经度坐标。
import requests
def acquire_iss_location():
response = requests.get("http://api.open-notify.org/iss-now.json")
data = response.json()
latitude = float(data["iss_position"]["latitude"])
longitude = float(data["iss_position"]["longitude"])
return latitude, longitude
iss_latitude, iss_longitude = acquire_iss_location()
print(f"ISS's present location: Latitude: {iss_latitude}, Longitude: {iss_longitude}")
输出
ISS's present location: Latitude: 47.3335, Longitude: 49.9148
在此代码片段中,定义了一个名为acquire_iss_location()
的函数。该函数发送一个GET请求到Open Notify的ISS API,并随后解析收到的JSON响应,提取ISS的纬度和经度坐标。最后,我们打印出ISS的当前位置。
在交互式地图上可视化ISS位置
要在交互式地图上可视化ISS的位置,我们将使用folium
库。该库使我们能够创建引人入胜的世界地图,并在其中绘制ISS的当前位置。
import folium
def generate_iss_map(latitude, longitude):
iss_map = folium.Map(location=[latitude, longitude], zoom_start=2)
folium.Marker([latitude, longitude], tooltip="ISS Location", popup="International Space Station", icon=folium.Icon(color="red", icon="info-sign")).add_to(iss_map)
return iss_map
iss_map = generate_iss_map(iss_latitude, iss_longitude)
iss_map.save("iss_location.html")
在这段代码片段中,我们对generate_iss_map()
进行了描述。此工作接受ISS的经度和纬度排列作为输入,并继续形成一个以ISS位置为中心的交互式世界地图。我们在地图上添加了一个标记,并附带了一个工具提示和弹出窗口,提供有关ISS的信息。最后,我们将地图保存为名为iss_location.html
的HTML文件。
要在地图上观察ISS的位置,只需在您喜欢的网页浏览器中打开iss_location.html
文件。
奖励:自动化ISS追踪
对于实时的ISS跟踪,我们可以设计一个简单的循环,定期获取ISS位置数据,然后相应地更新地图。
import time
while True:
iss_latitude, iss_longitude = acquire_iss_location()
print(f"ISS's present location: Latitude: {iss_latitude}, Longitude: {iss_longitude}")
iss_map = generate_iss_map(iss_latitude, iss_longitude)
iss_map.save("iss_location.html")
time.sleep(60)
在这个特定的示例中,我们使用一个while
循环每60秒不断地获取国际空间站的位置信息,确保描述保持最新。然而,当无限期地运行这个循环时,需要谨慎,因为它可能会消耗大量的系统资源。建议实施一个停止条件或用户中断机制。
在终端显示的 输出 将展示国际空间站当前的纬度和经度格式的位置:
ISS's present location: Latitude: -51.4142, Longitude: -179.8206
请注意,实际的纬度和经度值将取决于ISS在脚本执行时刻的实时位置。
结论
综上所述,本文全面演示了如何利用Python跟踪国际空间站。通过利用Open Notify的ISS API和多功能的folium
库,我们能够以纬度和经度坐标的形式获取ISS的位置数据,并在互动世界地图上有效地可视化其位置。参与这样的项目不仅可以增进我们对ISS及其运动的理解,还是锻炼我们使用API和互动地图的Python编程技能的机会。