Files
dbstorage/dbapp/KUBSAT_FEATURE.md

9.9 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 заголовок

Выделение по дате

Строки, у которых дата ГЛ попадает в выбранный диапазон дат, выделяются зеленым цветом. При этом все объекты остаются в таблице, независимо от фильтра по дате.

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

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

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

Кнопка "Оставить только подходящие по дате":

  • Удаляет из таблицы все точки, которые НЕ подходят по заданному диапазону дат
  • Оставляет только зеленые (выделенные) строки
  • Запрашивает подтверждение перед удалением

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

Экспорт в Excel

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

  1. Дата - текущая дата (без времени)
  2. Широта, град - рассчитывается как инкрементальное среднее из координат оставшихся в таблице точек
  3. Долгота, град - рассчитывается как инкрементальное среднее из координат оставшихся в таблице точек
  4. Высота, м - всегда 0
  5. Местоположение - из geo_obj.location первого ObjItem
  6. ИСЗ - имя спутника и NORAD ID в скобках
  7. Прямой канал, МГц - частота + перенос из транспондера
  8. Обратный канал, МГц - частота источника
  9. Перенос - из объекта Transponder
  10. Получено координат, раз - количество точек (ObjItem), оставшихся в таблице для данного источника
  11. Дата - пока заполняется как "-"
  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. Опционально укажите диапазон дат для выделения подходящих точек
  4. Нажмите "Применить фильтры"
  5. В таблице отобразятся все точки (ObjItem) сгруппированные по источникам (Source)
  6. Точки, подходящие по дате, будут выделены зеленым цветом
  7. Опционально нажмите "Оставить только подходящие по дате" для быстрого удаления неподходящих точек
  8. При необходимости удалите отдельные точки или целые объекты кнопками в колонке "Действия"
  9. Нажмите "Экспорт в Excel" для скачивания файла с оставшимися данными
  10. Форма не сбрасывается после экспорта - можно продолжить работу

Примечания

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