Scientific journal
Modern problems of science and education
ISSN 2070-7428
"Перечень" ВАК
ИФ РИНЦ = 1,006

SOFTWARE DEVELOPMENT FOR PREPARATION OF CARTOGRAPHIC SCHEME FOR THE EMERGENCY DISPATCH SERVICE OF GAS DISTRIBUTION COMPANY

Vasileva E.E. 1 Sherstnev V.S. 1
1 National Research Tomsk Polytechnic University
This article deals with a design of the system for creation of cartographic schemas. Such systems are usually used to automate technologic processes at manufacture. The article contains analyze of the sphere where program can be useful, which shows an actuality and contemporaneity of this work. There are some features of geographic information system Zulu and, particularly, information about using its functional libraries. A significant part of the time is required to design quality software. Design of any system involves architecture planning of the whole application and then decomposition of it into parts; it was illustrated by the cartographic application. The author also describes the approach to the realization of the designed project, describes the tools used by him. This article is of interest to people addicted in software development, particularly in the field of geographic information systems.
software development
emergency dispatch service
map layout
gas distribution
geographic information system Zulu
cartography

Введение. Задача подготовки определенных картографических схем характерна и актуальна для любых предприятий, содержащих территориально-распределённые объекты инфраструктуры, к которым требуется оперативный подъезд ремонтных бригад (теплосети, электросети, нефте-газопроводы и т.д.), и не только. Рассмотрим пример создания приложения для решения данной задачи в газораспределительной отрасли. Данная разработка актуальна в связи с тем, что правительство проводит социальные программы по газификации сел и деревень и объем строящихся объектов сетей газораспределения растет. В виду повышенной опасности газопроводов, они нуждаются регулярных осмотрах непосредственно на местности, а в случае аварии группа сотрудников, ответственная за локализацию очага и устранение последствий, должна быстро найти поврежденный участок газопровода. Для этого используются такие схемы как планшеты аварийно-диспетчерской службы (планшеты АДС) и маршрутные карты на бумажном носителе. Планшет АДС представляет собой карту местности с нанесенной на нее сетью газораспределения в масштабе не менее 1:500. Маршрутная карта – это схема части сети газораспределения, нанесенная на план населенного пункта или план местности, содержащая маршрут обхода трассы газопровода с указанием контролируемых объектов [3]. В большинстве организаций для хранения актуальной информации об их объектах на местности используются геоинформационные системы (ГИС). Информация о газопроводах всегда должна быть актуальной, поэтому бумажные карты, которые в отличие от электронных, не могут быть изменены, быстро устаревают. Но при выезде на местность используется бумажный вариант карт. Поэтому формирование макетов карт для печати часто происходит на основе данных, хранящихся в ГИС. Программный продукт, о котором говорится в статье, связан с использованием ГИС Zulu. Также, согласно стандарту [3], печать макетов схем должна производиться из формата .dxf (AutoCAD).

В результате анализа предметной области был рассмотрен ряд ГИС: Zulu, MapInfo и ArcGIS. Только для ArcGIS реализована возможность формирования маршрутных карт, но это не решает поставленной задачи. В ходе исследования предметной области не были найдены аналогичные продукты, ориентированные именно на использование ГИС Zulu и AutoCAD, поэтому данную разработку можно считать уникальной.

Цель исследования. Разработка информационной системы, позволяющей оптимизировать производственный процесс.

Функциональность системы. Приложение в результате должно позволять загружать карты и слои форматов ГИС Zulu (.zmp, .b00) и получать из исходной карты необходимые схемы (планшеты АДС или маршрутные карты). Для планшетов АДС должны быть предоставлены настройки масштаба карты (1:500, 1:1000 или 1:2000 – наиболее востребованные масштабы для данного вида схем) и введена единая нумерация планшетов в рамках одного субъекта федерации. В режиме создания маршрутных карт пользователю должна предоставляться возможность задания произвольного контура, охватывающего рассматриваемый маршрут. Предполагается два режима работы программы: позволяющий предварительное редактирование и формирующий схемы без редактирования средствами ГИС Zulu (в случае нескольких выбранных объектов). Конечные варианты схем должны быть сконвертированы в формат .dxf (AutoCAD). Согласно вышеописанным требованиям, для разработки будут использоваться следующие средства: MS Visual Studio 2012 (C#), библиотеки Zulu и AutoCAD.

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

Проектируемое приложение является клиентским звеном в архитектуре «клиент-сервер». Серверная часть – это ZuluServer [2], реализованная компанией Политерм.

Архитектура клиентской части должна обеспечивать гибкость и быстродействие системы. Поэтому решено придерживаться смешанного типа архитектуры, а именно сочетание компонентной и объектно-ориентированной архитектур. Так, объектно-ориентированная парадигма проектирования подразумевает многократное использование самостоятельных объектов, содержащих данные и поведение. В качестве такого объекта можно выделить класс «картографическая схема», со всеми присущими ей параметрами (исполнитель схемы; главный инженер; контур, ограничивающий область планшета или маршрутной карты) и методами (вырезка объектов карты, попадающих в контур; формирование легенды; экспорт в формат .dxf). От данного класса создадим два наследника: «планшет АДС» (масштаб; номер схемы; номера соседних планшетов (для удобства навигации по распечатанным фрагментам карт)) и «маршрутная карта» (название маршрута).

Объектно-ориентированный подход также заложен в компонентах библиотеки ActiveX – ZuluXtools[1], которые будут использоваться. Устройство объектно-ориентированной модели Zulu похоже на другие геоинформационные системы: есть объект MapDoc, который содержит коллекцию слоев Layers, а слой, в свою очередь, содержит коллекцию объектов – Elements. Для каждого слоя могут быть определены возможные типовые объекты (ObjectTypes – типы объектов, ObjectModes – режимы объектов, например, тип – «Запорная арматура», режим – «Кран открыт»), а также стиль объектов, если они не являются типовыми, – ElemStyle, LineStyle, FontStyle, FillStyle.

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

  • формирование слоя-сетки в зависимости от масштаба;
  • проверка попадания объектов слоя в контур (произвольный – для маршрутных карт, объект слоя-сетки – для планшетов АДС);
  • формирование легенды для группы объектов, попавших в контур;
  • получение атрибутивной информации из картографических объектов.

Слой-сетка, разбивающий исходную карту на планшеты, должен формироваться в зависимости от границ карты. Формирование сетки будет вестись от верхнего левого угла карты к нижнему правому. Границы карты определяются по границам слоев, входящих в карту. Важно, чтобы единицей слоя-сетки была ячейка (с прозрачной заливкой), а не совокупность линей, так как для нее легче проводить проверку на попадание объектов и можно добавить атрибуты. Каждой ячейке сетки присваивается атрибут – инвентарный номер (рисунок 1), формирующийся следующим образом: (индекс области)-(квадрат по вертикали)-(квадрат по горизонтали)-(позиция ячейки). Принцип нумерации был предложен автором на основе нумерации кадастровых служб.

Рис. 1. Формирование инвентарных номеров для сетки

В зависимости от масштаба планшета определяется количество ячеек сетки по вертикали и горизонтали, и для каждой ячейки формируется объект типа Contour.

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

Даже если в карту попадает часть объекта, нужно отобразить информацию о нем в легенде. Проверку можно осуществлять согласно методу трассировки луча [4], строящегося из точки, принадлежность к полигону которой нужно определить, или же воспользовавшись методом IntersectByContour библиотеки Zulu.

Легенда для планшетов АДС формируется путем прохода по всем слоям карты, которые, в свою очередь, имеют свойство ObjectTypes. Для каждого нетипового слоя, объекты которого присутствуют на планшете, необходимо нарисовать фрагмент (символ, линию или прямоугольник) с использованием параметров данного стиля. Для типовых слоев нужно пройти по «типам» и «режимам» и при наличии объектов на карте, имеющих данный тип, отобразить их в легенде. Легенда для маршрутных карт отличается тем, что для каждого типового объекта (например, задвижка) должно отображаться количество данных объектов. Непосредственно для газопроводов нужно включать информацию об их протяженности, взятую из семантической базы данных (потому что визуальное отображение трубопровода на карте не позволяет оценить его перепады по высоте).

Обращение к семантической информации об объектах карт предполагает работу с запросами. В ГИС Zulu поддерживаются запросы на языке SQL и запросы с синтаксисом, использующемся в ГИС Zulu, реализующиеся через объект ZbDatabase [6]. В системе предполагается использование пространственных запросов к объектам, позволяющим получить доступ к таким полям, как «Тип» и «Режим», которые не входят в пользовательскую структуру баз данных.

Особое внимание следует уделить проверке корректности выполняемых пользователем действий, проверке на заполнение всех необходимых полей.

Алгоритмическое обеспечение. Разрабатываемая программа ориентирована на события, возникающие при работе ее пользователя. После запуска пользователь может загрузить карту или слой, из которых потом будет выполняться формирование схем. Изначально пользователь находится на вкладке «Просмотр», где он может создавать и выбирать контуры будущих схем, задавать их настройки. После построения схем (с предварительным редактированием) он попадает на вкладку «Редактирование», где полученный автоматически макет можно подкорректировать: сменить размер шрифта надписей, сами надписи, положение текстовых блоков и легенды. После нажатия кнопки «Конвертировать» схемы в формате .dxf сохраняются на жесткий диск.

На пути выполнения данного алгоритма возникает множество промежуточных задач, необходимых для решения. Примерами таких задач являются:

  • подсчет суммарной длины линейных объектов, попавших в контур;
  • построение легенды для карты.

Для выполнения первой задачи нет возможности в полной мере пользоваться возможностями ГИС-компонент ZuluXTools, т.к. реальная длина линейного объекта хранится в виде его атрибутивной информации и может отличаться от видимой длины объекта на карте. Для получения такой информации необходимо обращаться к атрибутивной информации объектов слоя, используя язык SQL или реализованный в ГИС Zulu синтаксис. При определении суммарной длины газопроводов в маршруте возникает вопрос о том, что делать с атрибутами объектов, частично попавших в контур. Так как заведомо точно узнать длину части объекта газораспределительной сети можно только на местности, то любое деление атрибутов целого объекта на пропорциональные части является некорректным. Поэтому в суммарной длине данные объекты не учитываются (если весь объект представляет интерес, то он должен быть включен в схему полностью), что и реализовано в прототипе приложения.

Для решения второй задачи (формирование легенды) есть несколько подходов:

  • так как ГИС Zulu не предоставляет встроенных средств для автоматического построения «легенды» карты, предлагается средствами ГИС Zulu создать отдельный слой карты и с помощью векторных примитивов сформировать «легенду» на дополнительном слое карты;
  • использовать для построения «легенды» возможности программы AutoCAD. Для этого нужно после передачи сконвертированной карты в AutoCAD получить доступ к рабочему пространству запущенной версии AutoCAD и работать, создавать «легенду» с помощью его графических примитив (объект AcadTable[5]).

В текущей версии программы реализован первый вариант, но второй видится более перспективным и тестируется в данный момент.

Реализация программы. Согласно спроектированному проекту был реализован прототип программы, который уже выполняет ключевые функции: создает слой-сетку, позволяет вырезать объекты, пересекающиеся с выделенным контуром, сформировать по ним легенду и сконвертировать полученный результат в формат .dxf. На рисунке 2 можно увидеть пример работы данного приложения в случае построения планшета АДС.

Рис. 2. Макет печати планшета АДС

В результате решения всех вышеописанных задач был получен работоспособный прототип приложения, который, в целом, выполняет своё основное предназначение.

Заключение. Приложение для создания картографических планшетов АДС и маршрутных карт было спроектировано с учетом сформированных требований, большая часть программного обеспечения была реализована. Данное приложение автоматизирует процесс формирования макетов картографических схем, пригодных к печати, что в перспективе будет уменьшать время, затрачиваемое работниками на этот процесс в несколько раз (пропорционально количеству изготовляемых схем). Разработка может развиваться в направлении других отраслей (например, нефтяная) или в направлении интеграции с другими геоинформационными системами. Таким образом, необходимость разработки подобного программного обеспечения исходила из узко ориентированной задачи, но тем не менее имеет перспективы развития.

Рецензенты:

Ким В.Л., д.т.н., профессор кафедры вычислительной техники Института Кибернетики ФГБОУ ВПО НИ ТПУ, г. Томск.

Авдеева Д.К., д.т.н., профессор, директор ООО «Медприбор», г. Томск.