Иногда вам может понадобиться создать сеть ГИС с помощью программного кода.
В этой статье мы рассмотрим код из следующей модели:
Демо-модель: Create GIS Network by CodeМы создадим ГИС сеть, состоящую из двух ГИС точек, связанных ГИС маршрутом. ГИС маршрут состоит из двух сегментов. В этой демо модели поезд добавляется в ГИС сеть в одной ГИС точке и перемещается по ГИС маршруту в другую ГИС точку.
ГИС сеть создается программно с помощью Java кода в функции createRoute, которая вызывается из действия При запуске агента Main (в секции свойств Действия агента):
// Создание и инициализация ГИС точек
GISPoint gp1 = new GISPoint( map, 60.19, 24.94 );
GISPoint gp2 = new GISPoint( map, 59.92, 25 );
GISPoint gp3 = new GISPoint( map, 59.43, 24.95 );
gp1.initialize();
gp2.initialize();
gp3.initialize();
// Создание сегментов ГИС маршрута
GISMarkupSegmentLine segment1 =
new GISMarkupSegmentLine( gp1.getLatitude(), gp1.getLongitude(), gp2.getLatitude(), gp2.getLongitude() );
GISMarkupSegmentLine segment2 =
new GISMarkupSegmentLine( gp2.getLatitude(), gp2.getLongitude(), gp3.getLatitude(), gp3.getLongitude() );
// Создание и инициализация кривой
Curve curve = new Curve();
curve.addSegment( segment1 );
curve.addSegment( segment2 );
curve.initialize();
// Создание ГИС маршрута
GISRoute gr = new GISRoute( map, curve, gp1, gp3, true );
gr.initialize();
// Создание ГИС сети
GISNetwork n = new GISNetwork( map, "n", true, gp1, gp2, gp3, gr );
Вначале мы создаем три ГИС точки. У конструктора класса GISPoint три аргумента: имя ГИС карты, на которую мы добавляем ГИС точку (в нашей модели это map), а также широта и долгота данной ГИС точки.
GISPoint gp1 = new GISPoint( map, 60.19, 24.94 );
GISPoint gp2 = new GISPoint( map, 59.92, 25 );
GISPoint gp3 = new GISPoint( map, 59.43, 24.95 );
Затем мы инициализируем созданные элементы с помощью функции initialize().
gp1.initialize();
gp2.initialize();
gp3.initialize();
После этого мы создаем ГИС маршрут.
Для этого вначале создаются сегменты ГИС маршрута, затем создается кривая, в которую добавляются эти сегменты, и наконец создается сам ГИС маршрут, в конструктор которого передается эта кривая в качестве одного из аргументов.
Наш ГИС маршрут состоит из двух сегментов. Каждый сегмент маршрута создается с помощью конструктора класса GISMarkupSegmentLine. У этого конструктора четыре аргумента: широта и долгота начальной точки сегмента, а также широта и долгота его конечной точки.
GISMarkupSegmentLine segment1 = new GISMarkupSegmentLine( gp1.getLatitude(), gp1.getLongitude(), gp2.getLatitude(), gp2.getLongitude() );
GISMarkupSegmentLine segment2 = new GISMarkupSegmentLine( gp2.getLatitude(), gp2.getLongitude(), gp3.getLatitude(), gp3.getLongitude() );
Если использовать конструктор без этого аргумента, то по умолчанию рисуются сегменты на основе геодезических линий (т.е. isGeodesic == true.)
Затем мы создаем кривую, добавляем в нее созданные сегменты маршрута в порядке их следования от начальной к конечной точке ГИС маршрута, и инициализируем эту кривую.
Curve curve = new Curve();
curve.addSegment( segment1 );
curve.addSegment( segment2 );
curve.initialize();
После этого мы создаем собственно ГИС маршрут и инициализируем его. У используемого нами конструктора класса GISRoute пять аргументов: ГИС карта, созданная нами кривая, начальная и конечная точки маршрута, а также аргумент типа boolean, определяющий, является ли маршрут двунаправленным (мы разрешаем движение по нему в обоих направлениях, передав этому аргументу значение true).
GISRoute gr = new GISRoute( map, curve, gp1, gp3, true );
gr.initialize();
Создав все элементы нашей сети, пришло время создать и саму ГИС сеть, добавив в нее эти элементы. В конструкторе класса GISNetwork мы указываем ссылку на ГИС карту, передаем имя сети, делаем сеть видимой, передав значение true аргументу visible, который идет следом, а затем перечисляем все элементы разметки пространства, из которых будет состоять данная ГИС сеть:
GISNetwork n = new GISNetwork(map, "n", true, gp1, gp2, gp3, gr);
-
Как мы можем улучшить эту статью?
-