如何使用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编程技能。