ГИС пространство 

Агенты могут обитать в различных типах пространств. AnyLogic Advanced поддерживает два типа пространств: двумерное непрерывное и двумерное дискретное. AnyLogic Professional также поддерживает геопространственный тип ГИС. 

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

  Чтобы сделать пространство геопространственным

  1. На странице Дополнительные панели свойств среды выберите ГИС из выпадающего списка Тип пространства. Задайте имя карты ГИС в поле справа.
  2. Затем перейдите на страницу свойств Агент класса активного объекта, задающего агента в Вашей модели, и также выберите опцию ГИС из группы кнопок Тип пространства.

Местоположение агента в ГИС пространстве определяется двумя координатами (широта, долгота) типа double.

Начальное расположение агентов

Начальное расположение агентов задается в классе агента. 

  Чтобы задать начальное расположение агентов
  1. На странице Агент панели свойств класса агента задайте координаты начального местоположения агента в полях Широта и Долгота.

Передвижение и перемещение "скачком"

Класс Agent предоставляет богатый программный интерфейс для перемещения агентов в пространстве ГИС. Во-первых, есть методы для получения информации о текущем местоположении и расстоянии (эти методы применимы и во время движения агента):

double getX() - возвращает текущую X-координату агента (долгота текущего местоположения, вычисляемая в градусах (-180 ... (West) ... 0 ... (East) ... +180) )

double getY() - возвращает текущую Y-координату агента (широта текущего местоположения, вычисляемая в градусах  (-90 ... (South) ... 0 ... (North) ... +90).

setXY(double x, double y)- задает координаты местоположения агента. Должен использоваться только для начальной расстановки агентов. Подразумевает, что агент не движется. 
Параметры:

x - x-координата местоположения (долгота, вычисляемая в градусах (-180 ... (West) ... 0 ... (East) ... +180) )
y - y-координата местоположения (широта, вычисляемая в градусах  (-90 ... (South) ... 0 ... (North) ... +90).

double distanceTo( Agent other ) - возвращает расстояние до указанного агента (в метрах)

Кроме того, есть набор методов, позволяющий производить перемещение агентов:

jumpTo( double x, double y ) - немедленно помещает агента в заданное место

moveTo( double x, double y )- инициирует перемещение агента в место с заданными координатами. Движение будет производиться по кратчайшему пути с заданной скоростью (которая при необходимости может быть изменена динамически). По прибытии будет выполнено Действие при достижении места назначения
Параметры:

x - x-координата местоположения (долгота, вычисляемая в градусах (-180 ... (West) ... 0 ... (East) ... +180))
y - y-координата местоположения (широта, вычисляемая в градусах  (-90 ... (South) ... 0 ... (North) ... +90))

stop() - останавливает агента (если он двигался); агент остается при этом в том же месте, и Действие при достижении места назначения не выполняется

boolean isMoving() - проверяет, движется ли агент в данный момент времени

double getTargetX() - возвращает x-координату места назначения движения агента, если он движется, или его текущую x-координату, если нет (долгота, вычисляемая в градусах (-180 ... (West) ... 0 ... (East) ... +180)).

double getTargetY() - возвращает y-координату места назначения движения агента, если он движется, или его текущую y-координату, если нет (широта, вычисляемая в градусах  (-90 ... (South) ... 0 ... (North) ... +90)).

double getVelocity() - возвращает скорость агента (в метрах в секунду, скорость является параметром агента, это та скорость, с которой он обычно передвигается, и ненулевая скорость еще не означает, что этот агент движется в данный момент времени)

double getGISHeading() - возвращает текущий угол поворота агента (в радианах, по часовой стрелке, нулевому углу соответствует положение часовой стрелки, показываюшей на двенадцать часов). 

double timeToArrival() - если агент движется, то возвращает время (в единицах модельного времени), нужное ему для того, чтобы прибыть в место назначения, с учетом того, что скорость не изменится. Если агент не движется, возвращает 0

setVelocity( double newVelocity ) - задает скорость (в метрах в секунду), с которой агент будет передвигаться. Если на момент вызова метода агент движется, то он продолжит движение с новой скоростью. Если агент не движется, то он не начнет движение, пока Вы не вызовете метод moveTo()

setRotation( double rotation )- задает угол поворота анимации агента (в радианах, по часовой стрелке). Этот угол поворота будет переопределен при следующем вызове метода moveTo() или, если агент движется, то прямо во время перемещения.. Если Вы не планируете в дальнейшем изменять угол поворота анимации агента, то используйте метод setRotation(double, boolean), передав в качестве значения второго параметра true
    rotation - угол поворота анимации агента (в радианах)

setRotation(double rotation, boolean freezeRotation) - Задает угол поворота (в радианах) анимации агента. Этот угол поворота будет переопределен при следующем вызове метода moveTo() или, если агент движется, то прямо во время перемещения.
Параметры:

rotation - угол поворота агента (в радианах)
freezeRotation - если true, то угол поворота не будет изменяться при вызовах метода moveTo(double, double) 

  Чтобы задать начальную скорость и угол поворота агента

  1. На странице Агент панели свойств класса агента задайте Скорость (м/с) и Поворот агента.

  Чтобы задать действие, которое должно выполняться при достижении агентом точки назначения (после того, как выполнится метод moveTo())

  1. На странице Агент панели свойств класса агента введите соответствующий код в поле Действие при достижении места назначения.