Отслеживайте положение Международной космической станции и людей в космосе в режиме реального времени — с помощью Python

Это очень простая, но мощная программа на Python для отслеживания положения МКС в реальном времени. Мой сын запускал его каждые 30-40 минут, чтобы увидеть его положение :-)

Требования: python , IDE, установка нескольких пакетов — pandas, plotly, google.

Справка: мы собираемся использовать существующий API для получения местоположения и другой информации в нашем коде. Можете обратиться по ссылке ниже, если вам интересно:

http://open-notify.org/Open-Notify-API/ISS-Location-Now/

Здесь вы найдете ниже файл, который регистрирует широту и долготу МКС.

http://api.open-notify.org/iss-now.json

## Content of the above JSON file : 

{"iss_position": {"longitude": "-41.8150", "latitude": "30.4643"}, "message": "success", "timestamp": 1613412345}

Другой файл содержит информацию о людях, находящихся в настоящее время на космической станции.

http://api.open-notify.org/astros.json

Мы собираемся прочитать эти 2 файла и отобразить содержимое с помощью python — максимально просто.

Программа: состоит из 2 частей — i) положение МКС и ii) людей в космосе.

Давайте опишем код шаг за шагом, а затем оставим полный код для выполнения.

  1. Сначала мы собираемся прочитать файл JSON местоположения ISS:
ISSurl = 'http://api.open-notify.org/iss-now.json'

ISS_Loc_DF = pd.read_json(ISSurl)
print("Basic info of ISS : ")
print(ISS_Loc_DF)

O/P:

Basic info of ISS : 
             iss_position  message           timestamp
latitude        -2.5352    success     2021-02-15 18:16:59
longitude      -14.8967    success     2021-02-15 18:16:59

2) Создайте столбцы широты и долготы и удалите ненужные столбцы.

# get the live latitude and longitude of ISS
ISS_Loc_DF['latitude'] = ISS_Loc_DF.loc['latitude', 'iss_position']
ISS_Loc_DF['longitude'] = ISS_Loc_DF.loc['longitude', 'iss_position']
ISS_Loc_DF.reset_index(inplace=True)

# drop unwanted columns
ISS_Loc_DF = ISS_Loc_DF.drop(['index','message'], axis=1)
print("Final position dataframe to refer : ")
print(ISS_Loc_DF)

O/P:

Final position dataframe to refer : 
     iss_position           timestamp       latitude  longitude
0       -2.5352       2021-02-15 18:16:59   -2.5352   -14.8967
1      -14.8967       2021-02-15 18:16:59   -2.5352   -14.8967

3) Показать положение МКС на карте мира

# Show the position of the ISS in global map
iss_position = pe.scatter_geo(ISS_Loc_DF, lat='latitude', lon='longitude')
iss_position.show()

O/P:

Примечание. Скорость ISS составляет прибл. 17 100 миль в час. Поэтому обновите страницу через 2–3 минуты, чтобы увидеть движение.

4) Теперь прочитайте имена людей, доступных в данный момент в космосе -

## Find the Number of people in space right now:
peopleurl = 'http://api.open-notify.org/astros.json'
People_DF = pd.read_json(peopleurl)
print(People_DF)

O/P:

message  number                                            people
0  success       7       {'craft': 'ISS', 'name': 'Sergey Ryzhikov'}
1  success       7           {'craft': 'ISS', 'name': 'Kate Rubins'}
2  success       7  {'craft': 'ISS', 'name': 'Sergey Kud-Sverchkov'}
3  success       7          {'craft': 'ISS', 'name': 'Mike Hopkins'}
4  success       7         {'craft': 'ISS', 'name': 'Victor Glover'}
5  success       7        {'craft': 'ISS', 'name': 'Shannon Walker'}
6  success       7        {'craft': 'ISS', 'name': 'Soichi Noguchi'}

5) Напечатайте их имя:

print("People who are available in space now : ")
for index, row in People_DF.iterrows():
    name = People_DF['people'].values[index]['name']
    print(name)

O/P:

People who are available in space now : 
Sergey Ryzhikov
Kate Rubins
Sergey Kud-Sverchkov
Mike Hopkins
Victor Glover
Shannon Walker
Soichi Noguchi

6) Получить некоторую информацию о них

print("Let's check who are they : ")
for index, row in People_DF.iterrows():
    name = People_DF['people'].values[index]['name']
    print(name)
    query = name+' iss'
    for i in search(query, tld="co.in", num=4, stop=4, pause=2):
        print(i)

O/P:

Let's check who are they : 
Sergey Ryzhikov
https://en.wikipedia.org/wiki/Sergey_Ryzhikov_(cosmonaut)
https://en.wikipedia.org/wiki/Sergey_Ryzhikov_(cosmonaut)#Cosmonaut_career
https://en.wikipedia.org/wiki/Sergey_Ryzhikov_(cosmonaut)#Expedition_49/50
https://www.nasa.gov/image-feature/expedition-64-commander-sergey-ryzhikov-of-roscosmos
Kate Rubins
http://t0.gstatic.com/images?q=tbn:ANd9GcTFLk1C2z0Tr-8CF9HPl3S2AKG1GjMPdC8rSFBxvTQGpLYMdtPurLXdEmTPkape
https://en.wikipedia.org/wiki/Kathleen_Rubins
https://en.wikipedia.org/wiki/Jeffrey_Williams_(astronaut)
https://en.wikipedia.org/wiki/Soyuz_MS-01
Sergey Kud-Sverchkov
https://en.wikipedia.org/wiki/Sergey_Kud-Sverchkov
http://t0.gstatic.com/images?q=tbn:ANd9GcQzRyC8GCNyvfiFy8jlWO-ifVywdEgvMJT2yICzYaK6PED2oZ2OcPyNpv-ZfX_d
https://www.nasa.gov/image-feature/cosmonauts-sergey-ryzhikov-and-sergey-kud-sverchkov

Вы можете увеличить или уменьшить свою поисковую ссылку по своему желанию.

Полный код:

import pandas as pd
import plotly.express as pe
from googlesearch import search

# refer http://open-notify.org/Open-Notify-API/ISS-Location-Now/ link for more details:
ISSurl = 'http://api.open-notify.org/iss-now.json'

ISS_Loc_DF = pd.read_json(ISSurl)
print("Basic info of ISS : ")
print(ISS_Loc_DF)

# get the live latitude and longitude of ISS
ISS_Loc_DF['latitude'] = ISS_Loc_DF.loc['latitude', 'iss_position']
ISS_Loc_DF['longitude'] = ISS_Loc_DF.loc['longitude', 'iss_position']
ISS_Loc_DF.reset_index(inplace=True)
# drop unwanted columns
ISS_Loc_DF = ISS_Loc_DF.drop(['index','message'], axis=1)
print("Final position dataframe to refer : ")
print(ISS_Loc_DF)

# Show the position of the ISS in global map
iss_position = pe.scatter_geo(ISS_Loc_DF, lat='latitude', lon='longitude')
iss_position.show()

## Find the Number of people in space right now:
peopleurl = 'http://api.open-notify.org/astros.json'
People_DF = pd.read_json(peopleurl)
print(People_DF)


print("People who are available in space now : ")
for index, row in People_DF.iterrows():
    name = People_DF['people'].values[index]['name']
    print(name)

print("Let's check who are they : ")
for index, row in People_DF.iterrows():
    name = People_DF['people'].values[index]['name']
    print(name)
    query = name+' iss'
    for i in search(query, tld="co.in", num=4, stop=4, pause=2):
        print(i)

Счастливого обучения !!