如何使用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程式設計技能。
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP