利用NASA的數據接口製作國際空間站實時跟蹤器

2021-02-15 Crossin的編程教室

大家好,歡迎來到 Crossin的編程教室 !

今天給大家分享一個開源項目:Open Notify。它的目的是將 NASA(美國國家航空航天局)的一些數據開放為簡單的編程接口。

open-notify.org 的作者做了一些工作,以獲取原始數據並將其轉換為與太空和太空飛行器有關的API。

本文將通過這個接口,獲取得到國際空間站的位置,並實時地繪製到地圖上:

感謝 cr0sis/Real-time-International-space-station-tracker 的貢獻。

為了實現本文的目標,你得先安裝 ISS_Info:


下面分步驟講解整套繪製流程

1.地圖初始化

為了實時展示國際空間站的路徑,需要使用turtle繪製曲線,因此可以創建一個turtle畫布,將背景設為地球:

import ISS_Infoimport turtleimport timeimport jsonimport urllib.request
screen = turtle.Screen()screen.setup(720,360)screen.setworldcoordinates(-180,-90,180,90)screen.bgpic("map.png")screen.bgcolor("black")screen.register_shape("isss.gif")screen.title("Real time ISS tracker")
iss = turtle.Turtle()iss.shape("isss.gif")

2.獲取空間站的人數

如果能知道空間站上的太空人人數,我們就能更加準確的跟蹤國際空間站。幸運的是open-notify確實提供了這樣的接口。

為了獲取人數信息,我們必須向下列接口請求拿到數據,並將相應的太空人名字寫在左上角:
http://api.open-notify.org/astros.json

astronauts = turtle.Turtle()astronauts.penup()astronauts.color('black')astronauts.goto(-178,86)astronauts.hideturtle()url = "http://api.open-notify.org/astros.json"response = urllib.request.urlopen(url)result = json.loads(response.read())print("There are currently " + str(result["number"]) + " astronauts in space:")print("")astronauts.write("People in space: " + str(result["number"]), font=style)astronauts.sety(astronauts.ycor() - 5)
people = result["people"]
for p in people: print(p["name"] + " on: " + p["craft"]) astronauts.write(p["name"] + " on: " + p["craft"], font=style)    astronauts.sety(astronauts.ycor() - 5)

3.繪製空間站位置

為了能夠繪製空間站的實時位置,我們需要請求拿到空間站的位置信息。請求的接口是:
http://api.open-notify.org/iss-now.json

不過作者將其封裝成了一個函數,我們直接調用 iss_current_loc 即可,循環獲取國際空間站位置:

while True:      location = ISS_Info.iss_current_loc()    lat = location['iss_position']['latitude']    lon = location['iss_position']['longitude']    print("Position: \n latitude: {}, longitude: {}".format(lat,lon))    pos = iss.pos()     posx = iss.xcor()    if iss.xcor() >= (179.1):                   iss.penup()                             iss.goto(float(lon),float(lat))         time.sleep(5)    else:      iss.goto(float(lon),float(lat))      iss.pendown()      time.sleep(5)

我們還可以標出自己目前所處的位置,以查看和國際空間站的距離及空間站經過你上空的時間點(UTC)。

while True:      location = ISS_Info.iss_current_loc()    lat = location['iss_position']['latitude']    lon = location['iss_position']['longitude']    print("Position: \n latitude: {}, longitude: {}".format(lat,lon))    pos = iss.pos()     posx = iss.xcor()    if iss.xcor() >= (179.1):                   iss.penup()                             iss.goto(float(lon),float(lat))         time.sleep(5)    else:      iss.goto(float(lon),float(lat))      iss.pendown()      time.sleep(5)

不過這裡值得注意的是,iss-pass.json這個接口的緯度計算必須在-90到90之內,因此深圳的緯度需要減去90.

最終效果如下:

在公眾號Crossin的編程教室回復關鍵字「國際空間站」可獲取本文完整源碼

_往期文章推薦_

相關焦點

  • 2022年中國天宮空間站,17國加入,打造真正的國際空間站!
    和平號是蘇聯在禮炮空間站基礎上打造的第一個國際空間站。從一九八六年之後的十年裡,陸續和五個模塊進行對接,組成了一個巨無霸。和平號空間站的主體是太空人的生活艙,它不同於禮炮空間站只有一個對接口,而是擁有六個對接口,可以對接各種模塊和飛船。每個模塊都是一個專業的太空實驗室。太空人在核心艙生活,在實驗室工作,蘇聯在這時候還和美國nasa進行了很多航天項目的合作。
  • 美國宇航局將網絡直播國際空間站外實時畫面
    【搜狐IT消息】北京時間3月12日消息:據國外媒體報導,美國宇航局將網播國際空間站外部攝像頭捕捉的實時畫面,不過這僅限於太空人業餘或者睡眠時間。  美國宇航局說,地面和空間站有四個信道傳輸數據,在太空人醒了之後或者開始工作時,宇航局需要這些信道用於工作,因此此時無法網播空間站外畫面。
  • 編碼器的CAN總線接口及其在光電跟蹤系統中的應用
    2.3 提出編碼器CAN總線接口在對各種現場總線的綜合比較中,基於CAN總線構建的通信系統具有很多優異的特性:數據信號採用差分電壓傳輸;總線傳輸介質可用雙絞線、同軸電纜和光纖;可以多主方式工作,通信方式靈活;可以點對點、點對多點及全局廣播方式傳送接收數據;網絡上的節點信息可分成不同的優先級,滿足不同的實時要求;採用非破壞性總線仲裁技術;數據採用短幀結構,
  • 通過MES接口實時收集應對多品種的壓入裝置的控制數據的三大解決方案
    打開APP 通過MES接口實時收集應對多品種的壓入裝置的控制數據的三大解決方案 工程師周亮 發表於 2018-08-15 09:00:22
  • 運行20年,國際空間站20大科學突破
    這些晶片被送往國際空間站,以求更好地了解微重力對人類健康的影響,並將其應用於改善地球人健康狀況。 刺激近地軌道經濟:從衛星部署到在軌研究,充滿活力的商業太空經濟已經發展起來,其價值目前超過3450億美元。國際空間站一直是支持這一領域發展的重要力量。
  • NASA網站開始在線直播國際空間站實時視頻
    (圖片來自網絡) 北京時間3月13日消息,據國外媒體報導,美國宇航局已開始在線直播有關國際空間站外景象的視頻,但欣賞這種直播是有條件的,網民必須等到空間站工作人員睡覺或者下班的時候 宇航局發言人凱利·漢弗萊斯(Kelly Humphries)表示,宇航局只有4個通訊鏈路,用於向地球傳送數據。宇航局希望在太空人醒著和工作的時候,將他們每日的工作狀態全部免費呈現在世人面前。宇航局並沒有將鏡頭對準狹窄的空間站內部,以尊重太空人的隱私權。漢弗萊斯說:「這就像是錄製真人秀《老大哥》,有人會每周7天,每天24小時盯著你。」
  • 龍飛船與國際空間站對接成功,直播五位太空人太空匯合
    這個龐然大物飄浮在距離地面大約390公裡的地方,從2000年11日就已經開始有國際成員在上面居住了。按照計劃,今年8月底,載人龍飛船將搭載3名美國人、1名日本太空人前往國際空間站。有生之年,遊客也有望上太空了。下面我們來看一看對接的具體過程。小憩一下,等待對接這一趟太空旅行,Behnken和Hurley在接近國際空間站之前還睡了一會兒。
  • Astrobee:NASA 為國際空間站設計的最新機器人
    機器人的中心部分包含豐富的傳感器、控制系統、觸控屏幕,以及為後續增加硬體而預留的有效載荷託架,其中包括一個手臂用於抓取國際空間站的扶手。儘管這款機器人在設計上就是為了在國際空間站上自由的飛行,不過在地面進行測試的時候,Astrobee被安裝在一個雪橇的頂部,使用二氧化碳噴氣推進器創造低摩擦的空氣,從而讓機器人在非常平滑(同時非常巨大)的花崗巖石塊上移動。
  • NASA回顧2020年在國際空間站上進行的關鍵實驗
    NASA回顧2020年在國際空間站上進行的關鍵實驗2021-01-05 11:12出處/作者:cnBeta.COM整合編輯:佚名責任編輯:zhaoyongyu1   在任何時候,國際空間站上都有幾十項實驗正在進行。隨著2020年的完結,美國航天局談到了其中的一些實驗。
  • 相差20多年上天,天宮空間站和國際空間站的區別在哪裡?
    其實,國際空間站早在1993年就開始立項,是由美國和俄羅斯共同發起的,然後有日本,歐盟等16個國家共同參與,一起完成了國際空間站的總體設計,1998年11月,完成所有的製造和測試,正式發射入軌。遲到20年的天宮空間站,與現在的國際空間站到底有哪些區別的呢?
  • 實時大數據分析的應用_實時可視化大屏的製作
    實時大數據分析是指對規模巨大的數據進行分析,利用大數據技術高效的快速完成分析,達到近似實時的效果,更及時的反映數據的價值和意義。用戶可實時捕捉數據運行情況,如電商運營大屏等,幫助用戶實時決策,運營情況瞭然於胸。
  • 國際空間站將在10月4日至10月9號進行SSTV圖片活動
    北京時間 10 月 4 日 22:00 至 10 月 9 日 03:15,國際空間站上的太空人將使用 145.800 MHz FM 模式從國際空間站(ISS)發送業餘無線電慢掃描電視(SSTV)圖像。(具體時間/日期可能會有變動)首先,你必須知道ISS何時會出現在你的「視野」範圍內。跟蹤ISS的方法有很多,有電腦軟體,手機 APP ,還有在線的網頁,當然你還可以自己去計算。
  • 定位跟蹤器
    定位跟蹤器 地圖導航 大小: 14.02M
  • 國際空間站網速怎麼樣?不好意思,每秒600兆比特!
    在地球上上網並不稀奇,但是你可曾想過如果在國際空間站上網呢?國際空間站和地球的區別不僅是天上地下的區別,更重要的是國際空間站的責任重大,肩負著各大航空任務的前沿任務!在數字時代,連通性和帶寬很重要,即使你在近地軌道(LEO)。
  • NASA免費開放軟體下載:從機器人系統到數據處理工具
    在 VCAM 儀器上採用 AMDIS 方法適應飛行狀態,以用自動化的方式進行國際空間站安裝(Adaptation of the AMDIS Method to Flight Status on the VCAM Instrument for ISS Installation in an Autonomous Manner)3.
  • NASA一周新聞(2021.02.05)
    為國際空間站提供新的動力來源……針對第二次綠色試跑進行的點火測試……太空發射系統的另一個重大推動力……
  • 世界地球日,與NASA一起探索這顆美麗的藍色星球
    2020年NASA世界地球日50周年海報——「地球的心跳」:在世界地球日的50周年之際,NASA科學任務理事會的海報利用真實的科學數據,以驚人的方式展示了我們星球的互聯繫統,以及它們如何連成了地球跳動的心臟。
  • NASA揭示了國際空間站「苯水平升高」的可能來源
    國際空間站目前由俄羅斯太空人Anatoly Ivanishin和Ivan Wagner以及美國太空人Christopher Cassidy、Douglas Hurley和Robert Behnken駕駛。
  • 看廢舊手機變身跟蹤器
    廢舊手機變身跟蹤器    最近被朋友問起家裡老人走丟,有沒有個人GPS跟蹤器來跟蹤家裡的老人。久經思索之後發現,目前市面上的GPS跟蹤器其實無法滿足朋友的需求,所以今天特地再來說說GPS跟蹤的這個話題。
  • 基於ADSP21161的比相測距雷達跟蹤控制系統設計
    利用兩者的相位差即可確定目標對應的距離。  3 跟蹤控制系統的軟硬體設計  跟蹤控制系統能實時給出目標的速度、距離、角度和信噪比等信息,並能對雷達伺服系統進行控制,以使雷達波束始終跟蹤住目標。系統的設計主要包括硬體系統的設計和軟體系統的設計。