如何使用Python追踪国际空间站 (ISS)?


探索国际空间站(ISS)的位置并见证其实时运行轨迹是一次令人兴奋的体验。下文将展示如何利用Python、Open Notify提供的ISS API以及`folium`库在一个交互式世界地图上可视化ISS的位置来追踪ISS。

安装必要的库

在我们开始追踪ISS之前,需要安装几个库:`requests`用于API调用,`folium`用于创建交互式地图。

pip install requests folium

获取ISS位置数据

为了获取ISS的当前位置,我们将使用Open Notify提供的ISS API。这个API会提供表示ISS位置的经纬度坐标。

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()`的函数。这个函数向Open Notify的ISS API发送GET请求,然后解析接收到的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的位置信息,确保地图保持最新。但是,无限运行此循环需要谨慎,因为它可能会消耗大量的系统资源。建议实现停止条件或用户中断机制。

终端显示的输出将以经纬度格式显示ISS的当前位置。

ISS's present location: Latitude: -51.4142, Longitude: -179.8206

请注意,实际的经纬度值会根据脚本执行时ISS的实时位置而有所不同。

结论

总而言之,本文全面演示了如何利用Python追踪国际空间站。通过利用Open Notify的ISS API和多功能的`folium`库,我们能够以经纬度坐标的形式获取ISS的位置数据,并在交互式世界地图上有效地显示其位置。参与这样的项目不仅增强了我们对ISS及其运行轨迹的理解,也为我们提供了一个机会,在处理API和交互式地图的同时提高Python编程技能。

更新于:2023年7月10日

浏览量:503

开启您的职业生涯

通过完成课程获得认证

开始学习
广告