Отслеживайте положение Международной космической станции и людей в космосе в режиме реального времени — с помощью 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) людей в космосе.
Давайте опишем код шаг за шагом, а затем оставим полный код для выполнения.
- Сначала мы собираемся прочитать файл 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)
Счастливого обучения !!