Orbiteer — это веб-приложение, предназначенное для анализа и визуализации финансовых рисков, связанных с космическими миссиями. Оно предоставляет интерактивный 3D-интерфейс для оценки рисков столкновения на орбите и помогает пользователям понять потенциальные финансовые потери.
- Интерактивная 3D-визуализация: Отображение Земли и орбиты спутника с помощью
three.js. - Оценка рисков в реальном времени: Расчет рисков столкновения на основе актуальных данных о космических объектах.
- Финансовый анализ: Оценка ожидаемых финансовых потерь и страховых премий.
- API на основе Sanic: Быстрый и асинхронный бэкенд для выполнения сложных расчетов.
.
├── api/ # Модуль API (Sanic)
│ ├── routes/ # Обработчики маршрутов
│ │ ├── health.py # Эндпоинт для проверки работоспособности
│ │ └── risk.py # Эндпоинты для расчета рисков
│ └── __init__.py # Фабрика приложения Sanic
├── satellite_tracker/ # Модуль для отслеживания спутников и расчетов
│ ├── ... # Скрипты для работы с TLE, расчетов орбит и т.д.
├── utils/ # Вспомогательные утилиты
│ ├── distance_calculation.py # Расчет расстояний
│ └── risk_calculator.py # Формулы для расчета рисков
├── index.html # Фронтенд-приложение
├── requirements.txt # Зависимости Python
├── run_api.py # Точка входа для запуска API
└── README.md # Эта документация
-
Клонируйте репозиторий:
git clone <URL-репозитория> cd <имя-директории>
-
Создайте и активируйте виртуальное окружение (рекомендуется):
python -m venv venv source venv/bin/activate # Для Windows: venv\Scripts\activate
-
Установите зависимости:
pip install -r requirements.txt
Для запуска сервера API выполните следующую команду:
python run_api.pyПриложение будет доступно по адресу http://0.0.0.0:8098. Откройте этот URL в вашем веб-браузере, чтобы увидеть интерфейс Orbiteer.
API предоставляет следующие конечные точки:
- URL:
/orbit_risk - Метод:
GET - Описание: Рассчитывает финансовый риск столкновения для спутника на орбите.
- Параметры запроса:
height(float): Высота орбиты (км).A_effective(float): Эффективная площадь поперечного сечения (м²).T_years(float): Срок службы миссии (годы).C_full(float): Полная стоимость миссии.D_lost(float): Упущенный доход в случае потери спутника.
- Пример запроса:
http://127.0.0.1:8098/orbit_risk?height=550&A_effective=1.5&T_years=5&C_full=50000000&D_lost=100000000 - Пример ответа:
{ "financial_risk": 12345.67, "collision_risk": 0.00012345, "insurance_premium": 18518.51, "risk_class": "B (Low)" }
- URL:
/api/takeoff_risk - Метод:
GET - Описание: Рассчитывает финансовый риск столкновения во время фазы запуска.
- Параметры запроса:
lat(float): Широта места запуска.lon(float): Долгота места запуска.date(string): Дата и время запуска (UTC) в форматеYYYY-MM-DDTHH:MM:SS.H_ascent(float): Высота активного участка полета (км).A_rocket(float): Эффективная площадь поперечного сечения ракеты (м²).T_seconds(float): Продолжительность активного участка полета (секунды).C_total_loss(float): Суммарные потери при неудачном запуске.
- Пример запроса:
http://127.0.0.1:8098/api/takeoff_risk?lat=45.96&lon=63.30&date=2025-10-04T12:00:00&H_ascent=200&A_rocket=15.8&T_seconds=540&C_total_loss=50000000 - Пример ответа:
{ "financial_risk": 54321.98, "collision_risk": 0.00098765, "insurance_premium": 81482.97, "risk_class": "C (Moderate)", "objects_in_corridor": 5, "launch_corridor_radius_km": 50 }
- URL:
/health - Метод:
GET - Описание: Проверяет, что сервис запущен и работает.
- Пример ответа:
{ "status": "OK" }
- URL:
/swagger - Описание: Интерактивная документация API.