Маршрут полета БЛА. Характеристики и визуализация

Дипломная работа - Транспорт, логистика

Другие дипломы по предмету Транспорт, логистика

? доступ к интерфейсу прикладного программирования ГИС Интеграция; библиотек Qt 3.3.4.

 

.3.2 Функциональное назначение

Подсистема представляет собой набор модулей, готовых к интеграции в СПО Проходчик, позволяющих осуществлять создание, редактирование и визуализацию некоторой совокупности маршрутов полетов БЛА в нескольких окнах отображения ЦКМ одновременно.

Для создания и редактирования маршрутов подсистема содержит набор диалоговых окон, позволяющих осуществлять визуальное управление маршрутами, маневрами и ХТТ. Также подсистема предоставляет диалоговые окна управления специальными маневрами: Отрезок, Замкнутая траектория, Круг, Бабочка, Восьмерка, Змейка, Область.

Для визуализации маршрутов подсистема предоставляет легко расширяемый базовый набор классов, реализующих графические примитивы и класс, реализующий отрисовку совокупности маршрутов на ЦКМ.

 

.3.3 Описание логической структуры

 

.3.3.1 Алгоритм отрисовки графических примитивов

Подсистема визуализации маршрута полета БЛА на ЦКМ реализована на основе классической схемы MVC (Modеl/Viеw/Controllеr - Модель/Вид/Контроллер), которая позволяет обеспечить логическое и непротиворечивое разделение функциональности по классам модели, прозрачность и гибкость в реализации алгоритма визуализации.состоит из объектов трех видов. Модель - это объект приложения, вид - экранное представление, контроллер описывает, как интерфейс реагирует на управляющие воздействия пользователя.

Схему MVC в спроектированной подсистеме образуют три основных класса:

) модель (сцена) - класс-контейнер, хранящий список элементов, из которых складывается графический образ маршрута полета БЛА на ЦКМ и список представлений, в экранных окнах которых осуществляется визуализация. Модель реализована в классе QMapPaintScеnе (детальное описание классов приводится в п. 2.3.3.5);

) вид - окно визуализации ЦКМ и маршрута полета БЛА. Представляет собой экранное окно с полосками вертикальной и горизонтальной прокрутки, способное отображать ЦКМ формата ГИС Интеграция и нанесенный на нее маршрут полета БЛА. Вид реализован в классе QMapScrollViеw;

) контроллер-отрисовщик графических примитивов (представление) - пограничный класс между сценой и видом, который позволяет обрабатывать события, поступающие из вида, отражая внесенные ими изменения в сцене.

Для всех графических примитивов, имеется абстрактный базовый класс QMapPaintItеm, который предоставляет общие поля (видимость, положение на карте, перо, кисть и др.) и методы (центрирование занимаемой примитивом области относительно произвольной позиции на карте, изменение текущей позиции, установка пера, кисти, состояния видимости).

Графические примитивы (объекты сцены) могут быть как видимыми, так и невидимыми, могут определенным образом реагировать на адресованные им события мыши или оставаться при этом неизменными, могут образовывать группы связанных примитивов или стоять обособленно.

Графические примитивы имеют привязку к карте, что позволяет масштабировать карту в широких пределах, сохраняя точное местоположение примитивов.

Класс сцены спроектирован таким образом, что позволяет производить визуализацию маршрута в нескольких экранных окнах (видах), которые могут отображать определенную часть карты с заданным масштабом. При изменении положения ХТТ в одном из видов, на изменения реагируют все виды, отображающие маршрут полета БЛА, связанные с данной сценой.

Подсистема визуализации маршрута оптимизирована для работы с большим количеством графических примитивов, рассредоточенных по всей области карты, образовывающих представление маршрута или совокупности маршрутов.

При работе с маршрутами посредством диалоговых окон (подробно рассмотрено в п. 2.3.3.3) визуализация осуществляется сравнительно просто требуется отразить на ЦКМ внесенные изменения путем повторной отрисовки видимой части маршрута, что характеризуется низкой чувствительностью к временным задержкам. При редактировании маршрутов путем перетаскивания их составных частей мышью, визуализация становится довольно сложной задачей, обретая высокую чувствительность к временным задержкам и, зачастую, большие объемы визуализируемой информации.

При обработке событий мыши, корректирующих маршрут, а также при движении БЛА по заданному курсу графические примитивы могут сильно изменять свое положение. Если примитивы образуют группу связанных примитивов, то перемещение одного из них может затронуть большое количество других элементов этой группы, возможно, находящихся на довольно большом расстоянии друг от друга. В этом случае возникает ситуация, когда необходимо перерисовать часть маршрута. Для этого нужно отрисовать определенную часть карты и повторно отобразить на ней измененную часть маршрута. При этом размеры повторно отрисовываемой части карты могут быть близки к размерам карты, что существенно замедляет работу подсистемы, особенно если учесть, что события от мыши могут поступать десятки раз в секунду.

 

.3.3.1.1 Кэширование карты

Карта рисуется с помощью довольно медленного метода, предоставленного интерфейсом прикладного программирования (API - Application Programming Interface) ГИС Интеграция. Для ускорения отрисовки карты используется ее кэширование, что позволяет снизить частоту обращения к медленному методу отрисовки.

Кэширование карты осуществляется следующим образом.

. ?/p>