Files
dbstorage/dbapp/KUBSAT_FEATURE.md

11 KiB
Raw Blame History

Страница Кубсат

Описание

Страница "Кубсат" предназначена для фильтрации источников сигнала (Source) по различным критериям и экспорта результатов в Excel.

Доступ

Страница доступна по адресу: /kubsat/ Также добавлена в навигационное меню между "Наличие сигнала" и "3D карта".

Функциональность

Фильтры

Реализованные фильтры:

  1. Спутники (мультивыбор) - фильтрация по спутникам из связанных ObjItem
  2. Полоса спутника (выбор) - выбор диапазона частот
  3. Поляризация (мультивыбор) - фильтрация по поляризации сигнала
  4. Центральная частота (диапазон) - фильтрация по частоте от/до в МГц
  5. Полоса (диапазон) - фильтрация по полосе частот от/до в МГц
  6. Модуляция (мультивыбор) - фильтрация по типу модуляции
  7. Тип объекта (мультивыбор) - фильтрация по типу объекта (ObjectInfo)
  8. Количество привязанных ObjItem (radio button):
    • Все
    • 1
    • 2 и более

Фиктивные фильтры (заглушки):

  1. Принадлежность объекта (мультивыбор) - пока не реализовано
  2. Планы на (radio да/нет) - фиктивный фильтр
  3. Успех 1 (radio да/нет) - фиктивный фильтр
  4. Успех 2 (radio да/нет) - фиктивный фильтр
  5. Диапазон дат (от/до) - фиктивный фильтр

Таблица результатов

После применения фильтров отображается таблица на всю ширину страницы с колонками:

  • ID Source - идентификатор источника (объединяет несколько точек)
  • Тип объекта - тип источника
  • Кол-во точек - количество точек источника (автоматически пересчитывается при удалении)
  • Имя точки - название точки (ObjItem)
  • Спутник (имя и NORAD ID)
  • Частота (МГц)
  • Полоса (МГц)
  • Поляризация
  • Модуляция
  • Координаты ГЛ - координаты из geo_obj точки
  • Дата ГЛ - дата геолокации точки
  • Действия (кнопки удаления)

Важно:

  • Таблица показывает все точки (ObjItem) для каждого источника (Source)
  • Точки одного источника группируются вместе
  • Колонки ID Source, Тип объекта и Кол-во точек объединены для всех строк источника (rowspan)
  • Количество точек автоматически пересчитывается при удалении строк
  • Таблица имеет фиксированную высоту с прокруткой и sticky заголовок

Двухэтапная фильтрация

Фильтрация происходит в два этапа:

Этап 1: Фильтрация по дате ГЛ

  • Если задан диапазон дат (от/до), отображаются только те точки, у которых дата ГЛ попадает в этот диапазон
  • Точки без даты ГЛ исключаются, если фильтр по дате задан
  • Если фильтр не задан, показываются все точки

Этап 2: Фильтрация по количеству точек

  • Применяется к уже отфильтрованным по дате точкам
  • Варианты:
    • "Все" - показываются источники с любым количеством точек
    • "1" - только источники с ровно 1 точкой (после фильтрации по дате)
    • "2 и более" - только источники с 2 и более точками (после фильтрации по дате)

Важно: Фильтр по количеству точек учитывает только те точки, которые прошли фильтрацию по дате!

Управление данными в таблице

Кнопки удаления:

  • Кнопка с иконкой корзины (для каждой точки) - удаляет конкретную точку (ObjItem) из таблицы
  • Кнопка с иконкой заполненной корзины (для первой точки источника) - удаляет все точки источника (Source) из таблицы

Важно: Все удаления происходят только из таблицы, БЕЗ удаления из базы данных. Это позволяет пользователю исключить ненужные записи перед экспортом.

Экспорт в Excel

Кнопка "Экспорт в Excel" создает файл со следующими колонками:

  1. Дата - текущая дата (без времени)
  2. Широта, град - рассчитывается как инкрементальное среднее из координат оставшихся в таблице точек
  3. Долгота, град - рассчитывается как инкрементальное среднее из координат оставшихся в таблице точек
  4. Высота, м - всегда 0
  5. Местоположение - из geo_obj.location первого ObjItem
  6. ИСЗ - имя спутника и NORAD ID в скобках
  7. Прямой канал, МГц - частота + перенос из транспондера
  8. Обратный канал, МГц - частота источника
  9. Перенос - из объекта Transponder
  10. Получено координат, раз - количество точек (ObjItem), оставшихся в таблице для данного источника
  11. Период получения координат - диапазон дат ГЛ в формате "5.11.2025-15.11.2025" (от самой ранней до самой поздней даты среди точек источника). Если все точки имеют одну дату, показывается только одна дата.
  12. Зеркала - все имена зеркал через перенос строки (из оставшихся точек)
  13. СКО, км - не заполняется
  14. Примечание - не заполняется
  15. Оператор - имя текущего пользователя

Важно:

  • Экспортируются только точки (ObjItem), оставшиеся в таблице после удалений
  • Координаты рассчитываются по алгоритму инкрементального среднего из функции calculate_mean_coords (аналогично fill_data_from_df)
  • Если пользователь удалил некоторые точки, координаты будут рассчитаны только по оставшимся

Файл сохраняется с именем kubsat_YYYYMMDD_HHMMSS.xlsx.

Технические детали

Файлы

  • Форма: dbapp/mainapp/forms.py - класс KubsatFilterForm
  • Представления: dbapp/mainapp/views/kubsat.py - классы KubsatView и KubsatExportView
  • Шаблон: dbapp/mainapp/templates/mainapp/kubsat.html
  • URL: /kubsat/ и /kubsat/export/

Зависимости

  • openpyxl - для создания Excel файлов
  • Django GIS - для работы с координатами

Оптимизация запросов

Используется select_related и prefetch_related для минимизации количества запросов к базе данных:

queryset = Source.objects.select_related('info').prefetch_related(
    'source_objitems__parameter_obj__id_satellite',
    'source_objitems__parameter_obj__polarization',
    'source_objitems__parameter_obj__modulation',
    'source_objitems__transponder__sat_id'
)

Использование

  1. Откройте страницу "Кубсат" из навигационного меню
  2. Выберите нужные фильтры (спутники, поляризация, частота и т.д.)
  3. Опционально укажите диапазон дат для фильтрации точек по дате ГЛ (Этап 1)
  4. Опционально выберите количество точек (1 или 2+) - применяется к отфильтрованным по дате точкам (Этап 2)
  5. Нажмите "Применить фильтры"
  6. В таблице отобразятся точки (ObjItem) сгруппированные по источникам (Source)
  7. При необходимости удалите отдельные точки или целые объекты кнопками в колонке "Действия"
  8. Нажмите "Экспорт в Excel" для скачивания файла с оставшимися данными
  9. Форма не сбрасывается после экспорта - можно продолжить работу

Примечания

  • Форма не сбрасывается после экспорта
  • Удаление точек/объектов из таблицы не влияет на базу данных
  • Экспортируются только оставшиеся в таблице точки
  • Координаты в Excel рассчитываются как инкрементальное среднее из оставшихся точек
  • Фильтр по дате скрывает неподходящие точки (не показывает их в таблице)
  • Каждая строка таблицы = одна точка (ObjItem), строки группируются по источникам (Source)
  • Количество точек в колонке "Кол-во точек" автоматически пересчитывается при удалении строк