Связь между электронной картой и программой пользователя.


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

В "доисторические" времена, для того чтобы высветить на электронной карте объекты пользователя, разработчики карты формировали т.н. слои, соответствующие этим объектам, аналогично таким общепринятым слоям карты как "улицы", "дома" и пр. Иными словами, для каждого пользователя вносились свои изменения в карту.

Недостатки такого подхода очевидны:
   - разработчики электронной карты вынуждено становятся также и разработчиками программы пользователя,
   - для каждого пользователя приходится разрабатывать свой вариант карты, что препятствует независимой модификаци обоих программ,
   - возникают серьезные трудности в организации связи объектов пользователя, отображенных на электронной карте, с информацией соответствующих объектов, записанных в Б.Д. пользователя. Фактически это можно сделать только при объединеннии обоих программ, т.е. обе стороны теряют свою независимость.

Поэтому, в настоящее время, применяется разработанный фирмой Microsoft, объектный способ связи между программами называемый OLE-технология, обеспечивающий независимую разработку и модификацию, связанных таким способом программ . В нашем варианте (разработка MosMap), электронная карта оформляется в виде OLE EXE-модуля, представляющего сторонним пользователям многочисленные свойства, методы и события.

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

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

Здесь можно провести аналогию с программами MS Offise, которые также разработаны по OLE-технологии. Так разработчики программ на VBA, могут не только обмениваться информацией, например с МS Excel, но и использовать ее мощный математический аппарат в своих целях. То же и с картой MosMap-GIS, вы можете не только высвечивать на ней свои данные и получать параметры объектов карты, но и использовать ее эффективные графические методы, например для построения трасс, маршрутов и областей.

Могут возразить, что формирование объектов пользователя в виде слоев карты, не является препятствием к взаимодействию между прикладной программой и картой. В достаточно продвинутых картах (в MosMap-GIS в том числе) существует механизм, позволяющий пользователю самому создавать нужные ему слои и менять их свойства.
Однако эффективность подобного подхода, существенно уступает объектному методу. Рассмотрим пример - АЗС в качестве объектов пользователя.
С одной стороны АЗС являются естественным элементом городской топологии и целесообразность оформления их в виде слоя не вызывает возражений.
С другой стороны, для эффективной работы с этими объектами, необходимо привязать к каждому объекту разнообразную информацию из БД, не имеющую никакого отношения к карте. И на основании этой информации, производить различного рода выборки.
Например, выбрать все АЗС, принадлежащей определенной фирме или имеющих запас топлива не ниже заданного. И как это отобразить в виде слоя?
Здесь могут быть использованы два варианта: оформить АЗС в виде объектов пользователя и высвечивать их на карте из прикладной программы или оформить в виде слоя карты и объектов пользователя.
Второй вариант позволяет привязывать к объектам пользовательскую информацию и подсвечивать на карте раздичного рода выборки.
Первый вариант был использован при разработке Информационной системы топливно-энергетических объектов г.Москвы (АЗС). Невозможно, также, представлять в виде слоя данные оперативного характера. Наконец, рассмотрим объекты, которые вообще невозможно оформить в качестве слоя карты. Это могут быть изолинии, поля, графики, гистограммы и пр. отображающие экологическую обстановку или иную информацию и эта информация может оперативно меняться.
Примером такой информации могут служить данные Лидара кругового обзора (ЛКО) , используемого для обнаружения пожаров.

В качестве примера эффективности OLE-модуля карты MosMap-GIS , можно упомянуть две функции, отсутствующие в карте, но запрограммированные для некоторых систем городского хозяйства, использующих ее.
   - прямое расстояние между двумя точками (в карте имеется более сложная функция "Построение трассы"). Для измерения расстояния между двумя точками в пределах текущего кадра, нужно зажав клавишу Ctrl и ПРАВУЮ кнопку мыши и не отпуская их, провести мышью между этими точками. Высвечиваемая прямая линия между начальной точкой и курсором мыши, показывает расстояние между ними. Величину этого расстояния можно видеть в информационной строке карты (вверху). Линия исчезает после отжатия кнопки мыши. Если отпустить клавишу Ctrl до отжатия кнопки мыши, линия останется в кадре до его изменения.
   - километры МКАД. При щелчке мыши на МКАД в информационной строке карты показывается не только название, как для других улиц, но километр от нулевой точки (пересечение МКАД и ш. Энтузиастов). Так же, можно выходить на заданный км. МКАД, введя соответствующее число в специальное окно.

    Отображение на электронной карте расстояния между двумя точками     Отображение на электронной карте точки на МКАД
В этих двух примерах показано, как пользователь может самостоятельно вносить в электронную карту новое качество и тем самым расширять ее возможности для своей задачи.
Слева, определено расстояние между ст. метро Бабушкинская и д.11 по Енисейской ул.,
справа - точка на МКАД.

Тем не менее, OLE технология имеет и недостатки:
   - отрисовка объектов из программы пользователя происходит медленнее, чем непосредственно из карты,
   - разработчики программ пользователя должны владеть азами OLE-технологии.
Однако, быстро возрастающие вычислительная мощь современных ПК и уровень программистов делает эти недостатки несущественными перед преимуществами, предоставляемыми данным подходом.

Автор проекта Найдич В. А.
Контакты:    Письмо


Материалы сайта по теме
Привязка точечных объектов к карте
Отображение объектов пользователя на электронной карте


Наверх.
CITYSOFT
На главную страницу
MosMap-GIS