Отслеживание спутников в реальном времени

Отслеживание спутников в реальном времени


pip install requests folium


# Импортируем нужные библиотеки

import requests

import folium

import time

import webbrowser


# ========== Настройка ==========

# URL API для получения позиции Международной Космической Станции (МКС)

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


# Интервал обновления данных (в секундах)

REFRESH_INTERVAL = 10


# Имя HTML-файла для карты

MAP_FILE = "satellite_tracker.html"


# ========== Функция для получения координат МКС ==========

def get_iss_position():

  """

  Получает текущую широту и долготу МКС через API

  """

  response = requests.get(API_URL)

  data = response.json()

  position = data['iss_position']

  latitude = float(position['latitude'])

  longitude = float(position['longitude'])

  return latitude, longitude


# ========== Функция для создания карты ==========

def create_map(lat, lon):

  """

  Создает HTML-карту с точкой текущего положения спутника

  """

  # Центрируем карту на текущем положении спутника

  m = folium.Map(location=[lat, lon], zoom_start=2)


  # Добавляем маркер спутника

  folium.Marker(

    [lat, lon],

    tooltip="МКС",

    icon=folium.Icon(color='blue', icon='info-sign')

  ).add_to(m)


  # Сохраняем карту в файл

  m.save(MAP_FILE)


# ========== Основной цикл ==========

if __name__ == "__main__":

  # Открываем браузер один раз при старте

  webbrowser.open(MAP_FILE)


  print("Запуск отслеживания МКС в реальном времени...")

   

  while True:

    try:

      # Получаем свежие координаты МКС

      lat, lon = get_iss_position()

      print(f"Текущее положение МКС: широта {lat:.2f}, долгота {lon:.2f}")


      # Пересоздаем карту

      create_map(lat, lon)


      # Пауза между обновлениями

      time.sleep(REFRESH_INTERVAL)

    except KeyboardInterrupt:

      print("\nОтслеживание остановлено пользователем.")

      break

    except Exception as e:

      print(f"Ошибка при обновлении данных: {e}")

      time.sleep(REFRESH_INTERVAL)

Report Page