Ինչպե՞ս հետևել ISS-ին (Միջազգային տիեզերական կայանին) օգտագործելով Python-ը:


Միջազգային տիեզերակայանի (ՄՏԿ) գտնվելու վայրի ուսումնասիրությունը և դրա իրական ժամանակի շարժումներին ականատես լինելը կարող է հուզիչ փորձ լինել: . Հետևյալ հոդվածը նպատակ ունի ցույց տալ, թե ինչպես Python-ը կարող է օգտագործվել ISS-ին հետևելու համար՝ օգտագործելով Open Notify-ի կողմից տրամադրված ISS API-ն և պատկերացնելով դրա գտնվելու վայրը ինտերակտիվ աշխարհի քարտեզի վրա՝ «folium» գրադարանի օգնությամբ:

Պահանջվող գրադարանների տեղադրում

Նախքան ISS-ի հետագծման մեր ճամփորդությունը սկսելը, անհրաժեշտ է տեղադրել մի քանի գրադարան՝ «հարցումներ», որը հեշտացնում է 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()» անունով ֆունկցիա: Այս ֆունկցիան ուղարկում է GET հարցում Open Notify-ի ISS API-ին և այնուհետև վերլուծում է ստացված 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-ի մասին: Ի վերջո, մենք պահում ենք քարտեզը որպես HTML ֆայլ՝ «iss_location.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-ի և նրա շարժումների մասին մեր պատկերացումները, այլ նաև հնարավորություն է ընձեռում կատարելագործելու մեր Python ծրագրավորման հմտությունները API-ների և ինտերակտիվ քարտեզների հետ աշխատելիս: