ДонНТУ > Портал магистров ДонНТУ > Ганущак Надежда Константиновна
Библиотека > Статья №5 Продукты компании ESRI: NetEngine

Продукты компании ESRI: NetEngine

Источник:
  http://www.dataplus.ru/Soft/ESRI/NetEngine/Index.htm

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

В состав пакета входит набор программных модулей (32-разрядных динамически связываемых библиотек на платформах Windows 95 или NT, либо статических или разделяемых библиотек на платформах UNIX), многие из которых уже применяют десятки тысяч пользователей модуля ArcView Network Analyst. С помощью NetEngine можно проводить продвинутый анализ сетей несколькими способами. Во-первых, он обеспечивает структуру данных и методы для оптимизации быстрого восстановления связности сети. Во-вторых, предоставляет способ для сохранение структур сетевых данных в постоянный файл на диске. В-третьих, он включает готовые алгоритмы функций имеющихся в Network Analyst, например для определения кратчайшего пути (маршрута). Наконец, поддерживаются некоторые концепции расширенного моделирования с учетом иерархии объектов сети и много-модальных транспортных сетей (например, объединение сетей шоссейных и железных дорог и их совместного рассмотрения при анализе перевозок). Продукт включает примеры программ для сетевого моделирования и анализа (построение сети, поиск кратчайшего маршрута, составление отчета по результатам поиска).

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

Хотя это и не обязательно, но очень удобно и эффективно использовать продукт MapObjects (набор из более чем 35 на OCX объектов, ориентированных на ГИС-функции) от ESRI для встраивания приложений, созданных в NetEngine, в другие программы. При их совместном применении разработчик может быстро определить требуемый путь (маршрут) в логической сети и затем связать этот путь с конкретным представлением логической сети в пространстве карты, то есть в реальной обстановке.

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

Геометрические и логические сети. NetEngine можно рассматривать как библиотеку, которая использует Навигационную базу данных. Это база данных, применяемая для поиска пути по географической сети, например дорожной сети. Данные по сети Геометрическая и логическая сетимогут храниться в виде покрытий ARC/INFO, шейп-файлов или чертежей САПР. Все они имеют “геометрическую” природу, то есть содержат координаты X,Y, по которым строятся карты. Для сетевых алгоритмов эту геометрию следует представлять в виде “логической” сети, как показано на рис.

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

Для рассматриваемых приложений геометрическая сеть представляется состоящей из дуг и узлов, имеющих уникальные идентификаторы. Логическая сеть не имеет реальной геометрии. Ее структура данных позволяет хранить связность геометрической сети и обеспечивает ее быстрое воссоздание. В NetEngine хранятся три основные элемента: грани (edges), соединения (junctions) и повороты (turns). Грани в известном смысле аналогичны дугам, а соединения - узлам. Повороты обычно не имеют аналогов в геометрической сети. С помощью них моделируется перемещение между гранями через соединия.

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

Объектная модель. Структура NetEngine является объектно-ориентированном в том смысле, что вы работаете с объектами, имеющими свойства и методы. Но он написан не с помощью объектно-ориентированного языка программирования (такого как C++). Для хранения свойств объектов в нем применены структуры языка C, а методы являются функциями вызова, параметры которых включают структуры. При необходимости, эти функции можно приложить к C++.

В структуре объектной модели NetEngine объектом верхнего уровня является объект сеть (network), который представляет собой агрегацию элементов (elements), весов (Weights) и слоев (layers). С каждым элементом связаны один или несколько весов. Вес - это реальное число, используемое для оценки продвижения в соответствующих алгоритмах. Поскольку для каждого элемента NetEngine хранит несколько весов, то отпадает необходимость создания отдельных сетей для каждого веса, который вы хотите использовать в алгоритме перемещения по сети. Вес может представлять длину грани, время и стоимость прохождения маршрута, транспортную нагрузку.

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

Объект NetBrowse используется для последовательного просмотра сети, а объект NetEdit - для ее редактирования.

На следующем уровне находится объект NetView. Он является отображением сети в базе данных. Конкретное отображение сети может представлять кратчайший маршрут (объект PathView), матрицу исходных и конечных пунктов (ODMatrixView) или дерево кратчайших маршрутов (AllocView). NetView позволяет описать и решить разные сетевые задачи. По сути в NetView определяются основные параметры запроса к сети, как к базе данных, связанные с конкретной сетевой задачей.

Для задания отображения сети важен также объект flag - уникальное расположение объектов сети. Для решения разных сетевых задач применяются различные типы флагов.

Наконец, объект FStarCursor позволяет выявлять топологию сети. Для любого заданного соединения он возвращает следующее (примыкающее) соединение.

Типы данных. NetEngine моделирует реальную обстановку, сохраняя элементы, которые могут представлять соединения, грани или повороты.. Каждый элемент является частью слоя (группы элементов). Элементы сети отображают реальные объекты и события. Перекрестки представляются в виде соединений, а улицы - в виде граней. Элемент поворот позволяет моделировать перемещение от одной грани к другой через соединение. Он также отвечает за ситуации, когда реального поворота не происходит (перемещение по одной и той же улице через перекресток). NetView использует концепцию частичного (partial) элемента, что необходимо для перемещения по части грани, например, при проезде до дома, находящего не у конца или начала грани.

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

Перемещение по сети. Для доступа к элементам сети, запроса и описания перемещения по ней применяются объекты Forward Star и Network Browser. Первый учитывает топологию сети, второй обеспечивает простой последовательный просмотр элементов сети. Кроме того, имеется несколько функций для выявления конкретного элемента по его идентификатору.

Решение сетевых задач. Обычно оно включает несколько этапов: создание NetView для данного типа задач; использование флагов для относящихся к задаче местоположений в сети; выбор весов и других параметров; проведение расчетов; интерпретация и представление результатов.

Более подробную информацию по NetEngine можно получить на домашней странице ESRI: http://www.esri.com/. и в DATA+.

 Наверх