如何使用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

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.