9.9 KiB
Страница Кубсат
Описание
Страница "Кубсат" предназначена для фильтрации источников сигнала (Source) по различным критериям и экспорта результатов в Excel.
Доступ
Страница доступна по адресу: /kubsat/
Также добавлена в навигационное меню между "Наличие сигнала" и "3D карта".
Функциональность
Фильтры
Реализованные фильтры:
- Спутники (мультивыбор) - фильтрация по спутникам из связанных ObjItem
- Полоса спутника (выбор) - выбор диапазона частот
- Поляризация (мультивыбор) - фильтрация по поляризации сигнала
- Центральная частота (диапазон) - фильтрация по частоте от/до в МГц
- Полоса (диапазон) - фильтрация по полосе частот от/до в МГц
- Модуляция (мультивыбор) - фильтрация по типу модуляции
- Тип объекта (мультивыбор) - фильтрация по типу объекта (ObjectInfo)
- Количество привязанных ObjItem (radio button):
- Все
- 1
- 2 и более
Фиктивные фильтры (заглушки):
- Принадлежность объекта (мультивыбор) - пока не реализовано
- Планы на (radio да/нет) - фиктивный фильтр
- Успех 1 (radio да/нет) - фиктивный фильтр
- Успех 2 (radio да/нет) - фиктивный фильтр
- Диапазон дат (от/до) - фиктивный фильтр
Таблица результатов
После применения фильтров отображается таблица на всю ширину страницы с колонками:
- ID Source - идентификатор источника (объединяет несколько точек)
- Тип объекта - тип источника
- Кол-во точек - количество точек источника (автоматически пересчитывается при удалении)
- Имя точки - название точки (ObjItem)
- Спутник (имя и NORAD ID)
- Частота (МГц)
- Полоса (МГц)
- Поляризация
- Модуляция
- Координаты ГЛ - координаты из geo_obj точки
- Дата ГЛ - дата геолокации точки
- Действия (кнопки удаления)
Важно:
- Таблица показывает все точки (ObjItem) для каждого источника (Source)
- Точки одного источника группируются вместе
- Колонки ID Source, Тип объекта и Кол-во точек объединены для всех строк источника (rowspan)
- Количество точек автоматически пересчитывается при удалении строк
- Таблица имеет фиксированную высоту с прокруткой и sticky заголовок
Выделение по дате
Строки, у которых дата ГЛ попадает в выбранный диапазон дат, выделяются зеленым цветом. При этом все объекты остаются в таблице, независимо от фильтра по дате.
Управление данными в таблице
Кнопки удаления:
- Кнопка с иконкой корзины (для каждой точки) - удаляет конкретную точку (ObjItem) из таблицы
- Кнопка с иконкой заполненной корзины (для первой точки источника) - удаляет все точки источника (Source) из таблицы
Кнопка "Оставить только подходящие по дате":
- Удаляет из таблицы все точки, которые НЕ подходят по заданному диапазону дат
- Оставляет только зеленые (выделенные) строки
- Запрашивает подтверждение перед удалением
Важно: Все удаления происходят только из таблицы, БЕЗ удаления из базы данных. Это позволяет пользователю исключить ненужные записи перед экспортом.
Экспорт в Excel
Кнопка "Экспорт в Excel" создает файл со следующими колонками:
- Дата - текущая дата (без времени)
- Широта, град - рассчитывается как инкрементальное среднее из координат оставшихся в таблице точек
- Долгота, град - рассчитывается как инкрементальное среднее из координат оставшихся в таблице точек
- Высота, м - всегда 0
- Местоположение - из geo_obj.location первого ObjItem
- ИСЗ - имя спутника и NORAD ID в скобках
- Прямой канал, МГц - частота + перенос из транспондера
- Обратный канал, МГц - частота источника
- Перенос - из объекта Transponder
- Получено координат, раз - количество точек (ObjItem), оставшихся в таблице для данного источника
- Дата - пока заполняется как "-"
- Зеркала - все имена зеркал через перенос строки (из оставшихся точек)
- СКО, км - не заполняется
- Примечание - не заполняется
- Оператор - имя текущего пользователя
Важно:
- Экспортируются только точки (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'
)
Использование
- Откройте страницу "Кубсат" из навигационного меню
- Выберите нужные фильтры (спутники, поляризация, частота и т.д.)
- Опционально укажите диапазон дат для выделения подходящих точек
- Нажмите "Применить фильтры"
- В таблице отобразятся все точки (ObjItem) сгруппированные по источникам (Source)
- Точки, подходящие по дате, будут выделены зеленым цветом
- Опционально нажмите "Оставить только подходящие по дате" для быстрого удаления неподходящих точек
- При необходимости удалите отдельные точки или целые объекты кнопками в колонке "Действия"
- Нажмите "Экспорт в Excel" для скачивания файла с оставшимися данными
- Форма не сбрасывается после экспорта - можно продолжить работу
Примечания
- Форма не сбрасывается после экспорта
- Удаление точек/объектов из таблицы не влияет на базу данных
- Экспортируются только оставшиеся в таблице точки
- Координаты в Excel рассчитываются как инкрементальное среднее из оставшихся точек
- Фильтр по дате не скрывает объекты, а только выделяет их цветом
- Каждая строка таблицы = одна точка (ObjItem), строки группируются по источникам (Source)