Статья опубликована в рамках: Научного журнала «Студенческий» № 4(258)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4, скачать журнал часть 5, скачать журнал часть 6
РАЗРАБОТКА МОДУЛЯ QGIS ДЛЯ НАХОЖДЕНИЯ КРАТЧАЙШЕГО ПУТИ
DEVELOPMENT OF A QGIS MODULE FOR FINDING THE SHORTEST PATH
Alexander Krainikov
student, Department of Information Systems and Information Security, Northern (Arctic) Federal University,
Russia, Arkhangelsk
АННОТАЦИЯ
В данной работе рассматриваются основные аспекты разработки модуля для геоинформационной системы QGIS. Разрабатываемый модуль будет решать задачу нахождения кратчайшего пути между двумя точками в пространстве алгоритмом Дейстеры. Модуль будет осуществлять сообщение с базой данных PostgreSQL и иметь графический интерфейс PyQT.
ABSTRACT
This paper discusses the main aspects of developing a module for the QGIS geographic information system. The module being developed will solve the problem of finding the shortest path between two points in space using the Dijkstra’s algorithm. The module will communicate with the PostgreSQL database and have a PyQT graphical interface.
Ключевые слова: QGIS, PostgreSQL, PyQT, Дейкстра, модуль.
Keywords: QGIS, PostgreSQL, PyQT, Dijkstra, plugin.
Алгоритмы поиска минимального пути являются основным инструментом для решения множества задач в различных областях, таких как логистика, маршрутизация, робототехника и другие. В данном проекте был разработан модуль для программы QGIS, использующую алгоритм Дейкстеры, чтобы найти кратчайший путь от одной точки до другой на заданной карте.
В качестве вводных данных для реализации этого проекта использовались спутниковые снимки одного из районов города Архангельска. Цель разработки данного проекта является разработка модуля c графическим интерфейсом для системы QGIS [1]. В качестве задач проекта были выделены следующие пункты, описывающие функциональность проекта:
- программа должна принимать 1 или две координаты на вход;
- вместо второй координаты можно передавать объект инфраструктуры;
- на карте должен отображаться минимальный маршрут между точками;
- программа должна указывать параметры пути.
На основе поставленных задач и вводных данных проекта была начата разработка. Для программной обработки данных необходимо было векторизовать их.
Для работы программы были выделены два основных векторных представления: точки и линии. Все необходимые для работы программы сущности были распределены по этим двум представлениям.
После оцифровки была получена следующая карта, представленная на рисунке 1.
Рисунок 1. Карта с векторизованными дорогами
Слои с полученными векторными данными были сохранены в .shp формате.
Некоторые сущности будут иметь специализированные атрибуты. Например, для магазина дополнительно будут указаны параметры «размер» и «название». Это позволит разработать более сложное программное обеспечение, которые позволит просчитывать маршруты до магазина с определенным названием, например. Перекрестки будут дополнительно хранить информацию сколько дорог в ней пересекаются. У светофоров будет указано для кого они, для людей или только для автомобилей. Аптеки будут хранить информацию идентичную с магазинами. Парковки будут хранить дополнительно информацию об этаже своего размещения и количестве парковочных мест. К дорогам будет дополнительно храниться их длина и название улицы, к которой они принадлежат.
В качестве базы данных будет использоваться система PostgreSQL [2] с плагином postGIS [3]. PostgreSQL имеет дружелюбный интерфейс. Также система QGIS позволяется импортировать данные из PostgreSQL и выполнять SQL запросы на отображение данных. Для экспорта данных будет использоваться postGIS.
Система QGIS имеет множество встроенных модулей для работы с картами. В том числе модули для разработки модулей. Примерами таких являются «Plugin Builder» и «Plugin Reloader», которыми мы будет пользоваться для разработки. Модуль «Plugin Builder» позволит нам создать пустой шаблон модуля. Для этого необходимо заполнить мастер-форму создания плагина. В качестве основных параметров предлагается указать название модуля, расположение файлов модуля и краткое описание. После успешного заполнения мастер-формы будет представлено сообщение о результате создания, а также приведены рекомендации по дальнейшей разработке.
В качестве директории для проекта была выбрана стандартная директория для хранения файлов модулей QGIS. Имя пустой шаблон модуля мы уже можем подключить его в QGIS через менеджер модулей и увидеть простой интерфейс, состоящий из окна с двумя кнопками.
С помощью встроенного в QGIS сервиса PyQt Designer мы можем настроить графический интерфейс нашей программы. Интерфейс данной программы и пример интерфейса разрабатываемого модуля можно наблюдать на рисунке 2.
Рисунок 2. Макет интерфейса разрабатываемого модуля
После разработки интерфейса можно перейти к разработке программной части. Основная часть программы уже будет написана, в качестве шаблона. Нас интересует основной python скрипт и указанный в нем метод «run» этот метод запускается после полной инициализации запуска модуля и отвечает непосредственно за бизнес-логику приложения. В этом методе мы укажем вызов наших функций при нажатии кнопок «Рассчитать» и «Сброс». Далее все остальные манипуляции будут проводиться в этих функциях. Отдельно создадим два класса: первый – класс работы с графом дорог, второй – импорт и экспорт данных c QGIS. Также отдельно разработаем несколько функций для конвертирования данных между форматами представления. Для удобства вызова не будет присоединять их ни к одному из классов. Общий алгоритм работы, будет следующий:
- сбор данных из интерфейса по нажатию кнопки «Рассчитать»;
- экспорт необходимых данных из базы данных;
- обработка данных, приведение к единым форматам;
- расчет кратчайшего пути;
- анализ пути, расчет его параметров;
- вывод информации на экран пользователя и в карту QGIS.
Список литературы:
- QGIS [электронный ресурс] – Электрон. Дан: вободная географическая информационная система с открытым кодом – Режим доступа: https://www.qgis.org/ru/site/, свободный (дата обращения 01.01.2024);
- PostgreSQL [электронный ресурс] – Электрон. Дан: PostgreSQL: The World's Most Advanced Open Source Relational Database – Режим доступа: https://www.postgresql.org/, свободный (дата обращения 01.01.2024);
- postGIS [электронный ресурс]/ Сайт производителя – Электрон. Дан: About PostGIS – Режим доступа: http://postgis.net/, свободный (дата обращения 01.01.2024);
Оставить комментарий