AnyLogic
Развернуть
Размер шрифта

ГИС Карта

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

  • Тайловая карта: Карта, которая загружается в реальном времени с сайта поставщика, например, с сервиса OpenStreetMap. Такие карты называются тайловыми, поскольку состоят из тайлов (от англ. a tile — «плитка») — небольших, как правило, квадратных изображений, незаметно соединенных друг с другом.
  • Шейп-файлы: Карта, получаемая из файлов, которые называются "шейп-файлы" (шейп-файл состоит из набора файлов форматов .shp, .shx и .dbf). Шейп-файл содержит данные о точках, линиях и полигонах, которые составляют карту ГИС.

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

Карта ГИС в AnyLogic поддерживает только географическую систему координат в равноугольной цилиндрической проекции Меркатора.

При наличии активного доступа к сети Интернет на вашем компьютере, тайловый слой карты загрузится автоматически, как только вы добавите фигуру ГИС Карта на диаграмму типа агента, и вы сможете сразу же начать ей пользоваться.

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

Чтобы добавить карту ГИС

  1. Перетащите элемент ГИС Карта из секции ГИС палитры Разметка пространства на графическую диаграмму.

  2. Вы можете отредактировать сначала саму фигуру: одним из частых решений в моделях с картами ГИС является карта, которая заполняет все окно модели, при этом запрещается перетаскивание для самого окна презентации.
  3. Далее вам может понадобиться редактировать карту внутри фигуры: перемещаться по ней или изменять ее масштаб, чтобы выбрать ту местность, которую вы хотите использовать в модели.
  4. Также вы можете использовать поиск по карте, чтобы добавить найденные места в модель.
  5. При необходимости добавьте объекты разметки ГИС пространства с помощью панели Поиск ГИС элементов или перетащите их из палитры Разметка пространства.
  6. Вы можете расположить агентов в пространстве с помощью элементов разметки ГИС или программным методом.
  7. Маршруты на ГИС карте загружаются автоматически с помощью поддерживаемых поставщиков маршрутов. Но вы также можете построить маршруты из файла или добавить их вручную.

Свойства

Основные

Имя — Имя карты. Имя используется для идентификации и обращения к карте из кода.

Исключить — Если опция выбрана, то карта будет исключена из модели.

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

Блокировать — Если опция выбрана, то фигура будет считаться заблокированной и не будет реагировать на щелчки мыши. Таким образом, вы не сможете выбрать заблокированную фигуру в графическом редакторе до тех пор, пока вы не снимете с нее блокировку.

Видимость — Если опция выбрана, то фигура будет отображаться на презентации во время выполнения модели.

Тайлы

Отображать тайлы — Эта опция включена по умолчанию. Снимите флажок, если не хотите отображать тайлы.

Поставщик тайлов — Здесь вы можете выбрать поставщика тайлов из предоставляемого списка поставщиков: AnyLogic OSM (OpenStreetMap), OSM classic, OSM german или OSM Humanitarian. Как только вы выберете поставщика, карта автоматически обновится и отобразит новый слой тайлов.

Маршруты

Маршруты — Здесь вы можете выбрать опцию, согласно которой будут задаваться маршруты в карте ГИС. Вы можете выбрать одного из предоставляемых поставщиков под опцией Загружаются с сервера OSM. В ином случае, вы можете использовать опцию Считываются из файла PBF, чтобы создать маршруты из своего файла. Если вы выберете опцию Строятся по прямой, то маршруты будут, соответственно, задаваться прямыми линиями.

Сервер маршрутов — [Опция доступна, если Маршруты: Загружаются с сервера OSM] ГИС Карта поддерживает три сервера маршрутов: AnyLogic (рекомендуется), YOURS и BRouter.

Выбирается маршрут — [Параметр недоступен, если выбрана опция Маршруты: Строятся по прямой] Выберите, хотите ли вы получить Быстрейший или Кратчайший маршрут.

Сеть дорог — [Опция доступна, если Маршруты: Загружаются с сервера OSM] Выберите предпочитаемую сеть для маршрута: Автомобильную, Велосипедную или Пешеходную.

Алгоритм построения маршрутов — [Опция доступна, если Маршруты: Считываются из файла PBF] Выберите желаемый алгоритм для построения маршрутов: A*, bidirectional A*, Dijkstra, Dijkstra bidirectional, Dijkstra native bidirectional.

Загрузите граф маршрутов — [Опция доступна, если Маршруты: Считываются из файла PBF] Щелкните эту кнопку, чтобы открыть окно мастера создания графа маршрутов. Вы можете создать новый граф или загрузить существующий из папки на своем компьютере. Поддерживаются типы файлов .pbf и .osm. Этот процесс может занять какое-то время в зависимости от размера файла. Вы можете в таком случае выбрать опцию Выполнять в фоновом режиме в диалоговом окне создания графа маршрутов.

Если маршрут не найден — [Параметр недоступен, если выбрана опция Маршруты: Строятся по прямой] Здесь вы можете выбрать, что должно происходить в случае, если маршрут не может быть построен, например, если требуемый маршрут не был найден в базе онлайн-поставщика или в файле, который вы используете, что построить граф маршрутов. Выберите опцию Строить маршрут по прямой, если хотите, чтобы модель продолжала работать в таком случае, или выберите вариант Отображать сообщение об ошибке, если хотите получать уведомление, когда маршрут не был найден.

Поиск

Здесь можно задать область, в которой при запуске модели будет производится поиск заданных местоположений объектов. По умолчанию поиск производится в области, видимой на ГИС карте при запуске модели.

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

Нижняя (широта, в градусах) — Широта нижней левой точки области поиска, измеряется в градусах.
Левая (долгота, в градусах) — Долгота нижней левой точки области поиска, измеряется в градусах.
Верхняя (широта, в градусах) — Широта, верхней правой точки области поиска, измеряется в градусах.
Правая (долгота, в градусах) — Долгота, верхней правой точки области поиска, измеряется в градусах.

Не использовать фиксированные границы поиска — Удаляет координаты, определяющие область поиска местоположений, позволяя таким образом проводить поиск в области, видимой на ГИС карте при запуске модели.

Шейп-файлы
Здесь вы можете указать шейп-файлы, которые будет отображать ГИС карта. Используйте расположенную справа кнопку , чтобы добавить шейп-файлы. Появится диалоговое окно, в котором вы сможете указать шейп-файл. Выбрав файл, вы увидите, как данные из него отображаются на ГИС карте. Этот файл также автоматически появится в папке Ресурсы, расположенной в панели Проекты. Таким образом вы сможете отслеживать текущее состояние этого файла, менять тип пути к файлу, и т.д.
Набор свойств этого шейп-файла будет доступен в секции свойств Шейп-файлы:

Отображается — Используя этот флажок, можно показывать/прятать данные шейп-файла на ГИС карте.

Шейп-файл, Dbf — Поля только для чтения, отображают имена шейп-файлов.

Номер столбца с именем — Здесь вы можете указать имя столбца шейп-файла, который содержит имена элементов. Необходимо обязательно найти имя этого столбца в шейп-файле и указать его в этом поле, если вы хотите Преобразовать ГИС шейп-файлы в ж/д фигуры разметки пространства или в дорожную сеть. В этом случае, у элементов разметки пространства, созданных конвертацией, будут осмысленные имена (а не случайно заданные, к примеру, road145, road146).

Цвет линии по умолчанию, Цвет заливки по умолчанию — Здесь вы можете настроить цвет линий и цвет заливки шейп-файла.
Чтобы удалить файл, выберите его секцию и щелкните по кнопке .
Центр и масштаб

Также вы можете передвигаться по карте и изменять ее масштаб в режиме редактирования карты.

Широта (в градусах) — Широта центральной точки проекции карты, измеряется в градусах (-90 ... (South) ... 0 ... (North) ... 90)

Долгота (в градусах) — Долгота центральной точки проекции карты, измеряется в градусах (-180 ... (West) ... 0 ... (East) ... 180)

Масштаб 1: — Масштаб проекции карты, 1:<особое значение>, например, 1:10000.

Внешний вид

Цвет границы — Цвет границы фигуры (прямоугольной рамки вокруг карты).

Цвет заливки — Цвет заливки фигуры (цвет, которым будут залиты области карты, не содержащие объектов).

Местоположение и размер

Уровень — Уровень, на котором расположен этот элемент.

X — x-координата верхнего левого угла карты.

Y — y-координата верхнего левого угла карты.

Ширина — Ширина карты (в пикселях).

Высота — Высота карты (в пикселях).

Специфические

Действие по щелчку — Код, который будет выполняться при каждом щелчке пользователя мышью по карте во время выполнения модели. По умолчанию код возвращает значение false. Если в точке щелчка несколько фигур наслаиваются друг на друга, AnyLogic производит итерацию по этим фигурам в Z-порядке их расположения, сверху вниз, и последовательно выполняет действия, заданные кодом в поле Действие по щелчку. Итерация прекращается, когда код действия возвращает значение true.

Локальные переменные: self — сам элемент
clickx — x-координата щелчка относительно координат фигуры
clicky — y-координата щелчка относительно координат фигуры

Другой поставщик тайлов — Выберите опцию, если хотите задать поставщика тайлов самостоятельно. Ниже, в поле свойства Поставщик тайлов вы найдете основу кода с комментариями, которую можете модифицировать.

Другой поставщик маршрутов — Выберите опцию, если хотите задать поставщика маршрутов самостоятельно. Ниже, в поле свойства Поставщик маршрутов вы найдете основу кода с комментариями, которую можете модифицировать.

Генерализация маршрутов/регионов использует — Здесь вы можете задать, насколько детальной должна быть анимация маршрутов и регионов после запуска модели, то есть, сколько точек будет содержать эта анимация. В зависимости от модели, которую вы разрабатываете, выберите либо опцию Текущий масштаб карты, либо опцию Абс. точность (м.) как тип генерализации.

Чтобы редактировать карту

  1. Сделайте двойной щелчок по карте, чтобы войти в режим редактирования карты, или щелкните по карте правой кнопкой мыши и выберите Редактировать карту из контекстного меню.
  2. Графический редактор за пределами карты будет затемнен. Вы можете перетаскивать карту или изменять ее масштаб, чтобы выбрать область, которую хотите использовать в модели.

  3. Щелкните затемненную область графического редактора или снова сделайте двойной щелчок по карте, чтобы выйти из режиме редактирования карты ГИС. Также вы можете сделать по карте щелчок правой кнопкой мыши и выбрать из контекстного меню Завершить редактирование.

Чтобы выбрать несколько объектов разметки на карте

  1. Удерживайте клавишу Ctrl и выбирайте щелчком мыши объекты разметки на карте один за другим. Таким же образом вы можете снять выделение с одного объекта из группы.
  2. Также, находясь в режиме редактирования карты, вы можете удерживать клавишу Ctrl или клавишу Shift и обводить мышью с нажатой левой кнопкой область, содержащую элементы, которые вы хотите выбрать.

Когда вы находитесь в режиме редактирования карты, AnyLogic отображает текущие координаты положения курсора мыши на карте в статусной строке:

Тайлы, маршруты, поиск в ГИС карте кэшируются, когда вы запускаете модель, и если эти данные запрашиваются с сервера, то скорость выполнения модели (до того, как будет создан кэш) может зависеть от подключения к сети Интернет.

Если вы не хотите использовать тайлы или не имеете доступа в сеть Интернет, вы можете добавить карту ГИС из файла. В таком случае вам понадобится вручную добавить файл в свойствах карты ГИС.

Чтобы загрузить карту ГИС из шейп-файла

  1. Перейдите в раздел свойств карты Шейп-файлы.
  2. Выберите шейп-файлы карты ГИС (.shp), которые вы хотите отображать на презентации с помощью данной фигуры. Чтобы добавить новый шейп-файл, щелкните по кнопке . По щелчку откроется диалоговое окно Открыть. Выберите нужный вам шейп-файл и щелкните по кнопке Открыть. Шейп-файлы карты ГИС копируются в каталог модели и при перемещении модели они будут копироваться вместе с ней. Эти файлы также автоматически появятся в папке Ресурсы, расположенной в панели Проекты. Таким образом вы сможете отслеживать текущее состояние файлов, менять тип пути к файлам, и т.д.

Функции

С помощью функций карты ГИС вы можете преобразовать координаты из широты и долготы в пиксели и тому подобное.

Центр отображаемой карты
Функция Описание
void setCenterLatitude(double centerLatitude) Задает широту центра отображаемой карты.

centerLatitude — новая широта центра отображаемой карты, измеряемая в градусах (-90 ... (South) ... 0 ... (North) ... 90)
void setCenterLongitude(double centerLongitude) Задает долготу центра отображаемой карты.

centerLongitude — новая долгота центра отображаемой карты, измеряемая в градусах (-180 ... (West) ... 0 ... (East) ... 180)
void setProjectionCenter(double centerLatitude, double centerLongitude) Задает центр отображаемой карты.

centerLatitude — новая широта центра отображаемой карты, измеряемая в градусах (-90 ... (South) ... 0 ... (North) ... 90)
centerLongitude — новая долгота центра отображаемой карты, измеряемая в градусах (-180 ... (West) ... 0 ... (East) ... 180)
Масштаб отображаемой карты
Функция Описание
double getMinMapScale() Возвращает минимально возможный масштаб отображаемой карты (соотношение между метрами на экране и метрами на поверхности Земли), например, 1/100000 означает "1 км в 1 см".
double getMaxMapScale() Возвращает максимально возможный масштаб отображаемой карты (соотношение между метрами на экране и метрами на поверхности Земли), например, 1/100000 означает "1 км в 1 см".
void setMapScale(double mapScale) Задает масштаб отображаемой карты.

mapScale — масштаб (соотношение между метрами на экране и метрами на поверхности Земли), например, 1/100000 означает "1 км в 1 см".
void pan(int toEast, int toNorth) Перемещает центр отображаемой карты. Параметрами задается количество приращений в получаемом отступе. Одно горизонтальное приращение равняется половине разницы в значениях долготы центра отображаемой карты и ее западного или восточного видимого края. Одно вертикальное приращение равняется половине разницы в значениях широты центра карты и ее северного или южного края.

toEast — количество горизонтальных приращений, которые будут добавлены к центру карты; если значение положительное, центр переносится на Восток, если отрицательное — на Запад
toNorth — количество вертикальных приращений, которые будут добавлены к центру карты; если значение положительное, центр перемещается на Север, если отрицательное — на Юг
void zoomIn() Увеличивает масштаб отображаемой карты в два раза.
void zoomOut() Уменьшает масштаб отображаемой карты в два раза.
Расстояния
Функция Описание
double getDistance(double latFrom, double lonFrom, double latTo, double lonTo) Возвращает расстояние в метрах между двумя заданными точками.

latFrom — широта первой точки, измеряемая в градусах (-90 ... (South) ... 0 ... (North) ... 90)
lonFrom — долгота первой точки, измеряемая в градусах (-180 ... (West) ... 0 ... (East) ... 180)
latTo — широта второй точки, измеряемая в градусах (-90 ... (South) ... 0 ... (North) ... 90)
lonTo — долгота второй точки, измеряемая в градусах (-180 ... (West) ... 0 ... (East) ... 180)
double getDistance(GISPoint fromPoint, GISPoint toPoint) Возвращает расстояние в метрах между двумя заданными точками.

fromPoint — первая точка
toPoint — вторая точка
double getDistanceByRoute(double latFrom, double lonFrom, double latTo, double lonTo) Вычисляет длину пути от одной точки до другой (в метрах). Для построения пути используется поставщик маршрутов.

latFrom — широта первой точки, измеряемая в градусах (-90 ... (South) ... 0 ... (North) ... 90)
lonFrom — долгота первой точки, измеряемая в градусах (-180 ... (West) ... 0 ... (East) ... 180)
latTo — широта второй точки, измеряемая в градусах (-90 ... (South) ... 0 ... (North) ... 90)
lonTo — долгота второй точки, измеряемая в градусах (-180 ... (West) ... 0 ... (East) ... 180)
double getDistanceByRoute(GISPoint fromPoint, GISPoint toPoint) Вычисляет длину пути от одной точки до другой (в метрах). Для построения пути используется поставщик маршрутов.

fromPoint — первая точка
toPoint — вторая точка
Местоположение фигуры
Функция Описание
double getX() Возвращает X-координату карты ГИС, а именно, X-координату ее верхнего левого угла.
double getY() Возвращает Y-координату карты ГИС, а именно, Y-координату ее верхнего левого угла.
void setX(double x) Задает X-координату карты ГИС.

x — новое значение координаты X
void setY(double y) Задает Y-координату карты ГИС.

y — новое значение координаты Y
void setPos(double x, double y) Задает новые координаты фигуры карты.

x — новое значение координаты X
y — новое значение координаты Y
Размер фигуры, масштаб
Функция Описание
double getWidth() Возвращает ширину фигуры.
double getHeight() Возвращает высоту фигуры.
void setWidth(double width) Задает новую ширину фигуры, равную параметру width.
void setHeight(double height) Задает новую высоту фигуры, равную параметру height.
double getScaleX() Возвращает масштаб фигуры по оси координат X.
double getScaleY() Возвращает масштаб фигуры по оси координат Y.
void setScaleX(double sx) Задает масштаб фигуры по оси координат X.

sx — новое значение масштаба по оси X *
* если параметр равен 1, то фигура сохраняет изначальный размер
void setScaleY(double sy) Задает масштаб фигуры по оси координат Y.

sy — новое значение масштаба по оси Y *
* если параметр равен 1, то фигура сохраняет изначальный размер
void setScale(double sx, double sy) Задает масштаб фигуры по осям координат X и Y.

sx — новое значение масштаба по оси X
sy — новое значение масштаба по оси Y
* если параметр равен 1, то фигура сохраняет изначальный размер
void setScale(double s) Задает масштаб фигуры по осям координат X и Y.

s — новое значение масштаба по обеим осям координат *
* если параметр равен 1, то фигура сохраняет изначальный размер
double getMPP() Возвращает количество метров на 1 пиксель презентации карты.
Видимость фигуры
Функция Описание
boolean isVisible() Проверяет видимость фигуры. Если во время запуска модели фигура отображается, возвращает true, иначе — false.
void setVisible(boolean v) Задает видимость фигуры во время запуска модели.

v — видимость: если true — фигура видна во время запуска модели, если false — видимость отключена.
Работа со слоями
Функция Описание
boolean isLayerVisible(String shapeFileName) Проверяет, виден ли слой шейп-файла. Если слой виден, то возвращает true, если слой не виден или не найден — то false.

shapeFileName — имя шейп-файла.
ShapeGISMap.Layer[] getLayers() Возвращает массив слоев, используемых в этой карте ГИС. Структура массива не должна подвергаться изменениям: только его элементы доступны для изменений.
Создание маршрутов в ГИС
Функция Описание
GISRoute getRoute(GISPoint start, GISPoint end) Создает однонаправленный маршрут между указанными ГИС Точками.

start — ГИС Точка, которая будет началом маршрута.
end — ГИС Точка, которая будет концом маршрута.
GISRoute getRoute(GISPoint start, GISPoint end, boolean bidirectional) Создает маршрут между указанными ГИС точками.

start — ГИС Точка, которая будет началом маршрута.
end — ГИС Точка, которая будет концом маршрута.
bidirectional — если true, то созданный маршрут будет двунаправленным. Если false, то создается однонаправленный маршрут.
GISRoute getRoute(double startLatitude, double startLongitude, double endLatitude, double endLongitude) Создает однонаправленный маршрут между указанными точками на карте ГИС.

startLatitude — Широта стартовой точки маршрута.
startLongitude — Долгота стартовой точки маршрута.
endLatitude — Широта конечной точки маршрута.
endLongitude — Долгота конечной точки маршрута.
GISRoute getRoute(double startLatitude, double startLongitude, double endLatitude, double endLongitude, boolean bidirectional) Создает маршрут между указанными точками на карте ГИС.

startLatitude — Широта стартовой точки маршрута.
startLongitude — Долгота стартовой точки маршрута.
endLatitude — Широта конечной точки маршрута.
endLongitude — Долгота конечной точки маршрута.
bidirectional — если true, то созданный маршрут будет двунаправленным. Если false, то создается однонаправленный маршрут.
Ознакомьтесь с документацией API, посвященной объекту GISRoute, чтобы узнать о других способах создавать маршруты в ГИС с помощью кода.

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

Навигация во время разработки модели

Разрабатывая модель с картой ГИС, вы можете выбрать, какую территорию хотите использовать в модели, какую область эта карта будет отображать во время запуска модели, и насколько детальной эта область должна быть.

Чтобы войти в режим редактирования карты

  1. Сделайте двойной щелчок по карте, чтобы войти в режим редактирования карты, или щелкните карту правой кнопкой мыши и выберите опцию Редактировать карту из контекстного меню:

  2. Область графического редактора за пределами карты будет затемнена. Теперь вы сможете перемещать карту или изменять ее масштаб.

  3. Чтобы выйти из режима редактирования карты, щелкните затемненную область графического редактора за пределами карты или сделайте снова двойной щелчок мышью по карте ГИС. Также вы можете щелкнуть карту правой кнопкой мыши и выбрать опцию Завершить редактирование в меню.

Перемещение карты

Чтобы переместить карту

  1. Войдите в режим редактирования карты, сделав по ней двойной щелчок мышью.
  2. Щелкните левой кнопкой мыши по карте, и не отпуская ее, передвиньте мышь в нужном направлении. Вы увидите этот курсор при перемещении карты:

  3. Если вы будете передвигать мышь, зажав правую клавишу мыши, то, как обычно, будете перемещать диаграмму графического редактора вместе в картой ГИС в режиме редактирования.
  4. Выйдите из режима редактирования карты.

Изменение масштаба карты

Чтобы уменьшить или увеличить масштаб

  1. Войдите в режим редактирования карты ГИС. Остальная часть графического редактора будет затемнена.
  2. Прокрутите колесо мыши от себя, чтобы увеличить масштаб, и прокрутите колесо мыши на себя, чтобы уменьшить масштаб. Карта будет масштабироваться относительно положения курсора мыши на карте. Вы также можете перемещаться по карте, чтобы уменьшать или увеличивать масштаб разных частей карты.
  3. Если вы будете крутить колесо мыши, удерживая при этом клавишу Ctrl, масштаб карты будет изменяться с меньшим шагом. В целом, так масштаб изменяется медленнее, но вы сможете точнее выбрать нужный масштаб.
  4. Выйдите из режима редактирования карты.

Навигация во время запуска модели

Вы можете перемещать карту ГИС в окне запущенной модели так же, как во время ее разработки: не отпуская левую кнопку мыши, передвиньте мышь в нужном направлении.

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

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

  1. Выделите эксперимент Simulation в дереве модели, чтобы открыть для него панель Свойства.
  2. Перейдите в секцию свойств Окно и снимите флажок опции Разрешить изменение масштаба и перетаскивание.
  3. Теперь перетаскивание полотна презентации правой кнопкой мыши отключено, но вы можете легко перемещаться по карте ГИС.

Увеличение и уменьшение масштаба при запуске модели не сложнее, чем при разработке модели.

Чтобы увеличить или уменьшить масштаб

  1. Поместите указатель мыши над местом, которое хотите приблизить.
  2. Чтобы увеличить масштаб, прокрутите колесо мыши от себя. Область карты ГИС вокруг указателя мыши будет увеличена. Это место переместится в центр карты, чтобы вы лучше могли видеть окружающую местность.
  3. Чтобы уменьшить масштаб, прокрутите колесо мыши на себя. Масштаб карты ГИС уменьшится, но ее центр не изменится. В этом случае местоположение указателя мыши не играет роли. Вы можете перемещать карту, чтобы с уменьшением масштаба охватить нужную вам территорию.
  4. Обратите внимание, что если вы будете прокручивать колесо мыши, удерживая клавишу Ctrl, то будете изменять масштаб всего окна презентации, а не самой карты.

Функции навигации по карте ГИС

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

Центр отображаемой карты
Функция Описание
double getCenterLatitude() [Не поддерживается в AnyLogic Cloud] Возвращает широту центра отображаемой карты, измеряемой в градусах (-90 ... (South) ... 0 ... (North) ... 90)
double getCenterLongitude() [Не поддерживается в AnyLogic Cloud] Возвращает долготу центра отображаемой карты, измеряемой в градусах (-180 ... (West) ... 0 ... (East) ... 180)
void setCenterLatitude(double centerLatitude) Задает широту центра отображаемой карты.

centerLatitude — новая широта центра отображаемой карты, измеряемой в градусах (-90 ... (South) ... 0 ... (North) ... 90)
void setCenterLongitude(double centerLongitude) Задает долготу центра отображаемой карты.

centerLongitude — новая долгота центра отображаемой карты, измеряемой в градусах (-180 ... (West) ... 0 ... (East) ... 180)
void setProjectionCenter(double centerLongitude, double centerLatitude) Задает центр отображаемой карты.

centerLongitude — новая долгота центра отображаемой карты, измеряемой в градусах (-180 ... (West) ... 0 ... (East) ... 180)
centerLatitude — новая широта центра отображаемой карты, измеряемой в градусах (-90 ... (South) ... 0 ... (North) ... 90)

Масштаб отображаемой карты
Функция Описание
double getMapScale() Возвращает масштаб отображаемой карты (соотношение между метрами на экране и метрами на поверхности Земли), например, 1/100000 означает "1 км в 1 см".
double getMinMapScale() Возвращает минимально возможный масштаб отображаемой карты (соотношение между метрами на экране и метрами на поверхности Земли), например, 1/100000 означает "1 км в 1 см".
double getMaxMapScale() Возвращает максимально возможный масштаб отображаемой карты (соотношение между метрами на экране и метрами на поверхности Земли), например, 1/100000 означает "1 км в 1 см".
void setMapScale(double mapScale) Задает масштаб отображаемой карты.

mapScale — масштаб (соотношение между метрами на экране и метрами на поверхности Земли), например, 1/100000 означает "1 км в 1 см".
void pan(int toEast, int toNorth) Перемещает центр отображаемой карты. Параметрами задается количество приращений в получаемом отступе. Одно горизонтальное приращение равняется половине разницы в значениях долготы центра отображаемой карты и ее западного или восточного видимого края. Одно вертикальное приращение равняется половине разницы в значениях широты центра карты и ее северного или южного края.

toEast — количество горизонтальных приращений, которые будут добавлены к центру карты; если значение положительное, центр переносится на Восток, если отрицательное — на Запад
toNorth — количество вертикальных приращений, которые будут добавлены к центру карты; если значение положительное, центр перемещается на Север, если отрицательное — на Юг
void setProjectionCenter(double centerLongitude, double centerLatitude) Задает центр отображаемой карты.

centerLongitude — новая долгота центра отображаемой карты, измеряемой в градусах (-180 ... (West) ... 0 ... (East) ... 180)
centerLatitude — новая широта центра отображаемой карты, измеряемой в градусах (-90 ... (South) ... 0 ... (North) ... 90)
void zoomIn() Увеличивает масштаб отображаемой карты (x 2).
void zoomOut() Уменьшает масштаб отображаемой карты (x 1/2).

Слой тайлов карты

AnyLogic поддерживает отображение слоя тайлов в карте ГИС. Тайловая карта — это карта, состоящая из незаметно соединенных отдельных изображений, количество которых зависит от масштаба карты. вы можете выбрать одного из предоставляемых поставщиков тайлов в свойствах карты ГИС.

Когда вы перемещаетесь по карте или изменяете ее масштаб во время разработки модели, все тайлы, которые были запрошены с сервера, будут помещены в кэш в папку AnyLogic на вашем компьютере. Это позволит вам уменьшить количество запросов через сеть Интернет и увеличить скорость разработки модели, поскольку вам не придется постоянно заново загружать тайлы, работая с одной и той же областью на карте. Кроме того, этот кэш является общим для всех моделей, которые вы будете разрабатывать на этом компьютере, и при создании новой модели у вас уже будут загружены некоторые тайлы.

Когда вы запустите модель с картой ГИС, AnyLogic создаст папку под названием cache в папке модели, чтобы сохранить тайлы, которые необходимы для этой конкретной модели. Теперь вы сможете запускать эту модель, даже не имея соединения с сетью Интернет, или поделиться моделью с другим пользователем, зная, что она всегда правильно запустится.

Чтобы изменить поставщика тайлов

  1. Выделите фигуру ГИС Карта в графическом редакторе и перейдите в панель Свойства.
  2. Откройте секцию свойств карты Тайлы. В ней вы найдете список поддерживаемых поставщиков. Вы можете выбрать одного из следующих: AnyLogic OSM (OpenStreetMap), OSM classic, OSM german или OSM Humanitarian.

  3. Карта обновится автоматически, как только вы выберете поставщика из списка.

Если ни один из предлагаемых поставщиков тайлов не подходит вам, вы можете добавить карту из шейп-файла или самостоятельно задать другого поставщика тайлов для ГИС карты.

Чтобы задать другого поставщика тайлов

  1. Выделите фигуру ГИС Карта в графическом редакторе и перейдите в панель Свойства.
  2. Откройте секцию свойств Специфические. Выберите флажок для опции Другой поставщик тайлов.
  3. Появится параметр Поставщик тайлов и редактируемое поле с заданной основой кода, которую вы можете использовать, чтобы определить своего поставщика тайлов. Методы, которые вам нужно определить, вы можете найти в Справочнике классов AnyLogic.
  4. Поддерживаемые поставщики тайлов будут недоступны, пока вы используете эту специфическую опцию.

Генерализация маршрутов и регионов

Так как карта всегда отображает объекты в меньшем масштабе, чем они есть на самом деле, эти объекты обычно подвергаются генерализации, чтобы карта оставалась достаточно точной, и при этом легко читаемой. Любой слой тайлов в карте ГИС уже использует генерализацию: вы можете заметить ее при изменении масштаба карты, но вам может понадобиться изменять настройки генерализации для элементов, которые вы добавляете на карту: маршрутов или регионов.

Как сами ГИС маршруты, так и границы ГИС регионов могут быть очень неровными. Эти объекты состоят из множества соединенных точек, и от настроек генерализации зависит, какое количество будет отображаться при их анимации при запуске модели. Большее количество приближает анимацию объекта к реальному масштабу, но может также повлиять на скорость выполнения модели.

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

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

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

Маршрут Grasse-Toulon, точность генерализации: 100 метров

Тот же маршрут, точность генерализации: 1000 метров

Чтобы выбрать тип генерализации

  1. Выделите фигуру карты ГИС в графическом редакторе и перейдите в панель Свойства.
  2. Откройте секцию Специфические, в которой вы можете найти параметр Генерализация маршрутов/регионов использует.
  3. Здесь вы можете выбрать один из двух вариантов: Текущий масштаб карты или Абс. точность (м).
  4. В случае если вы оставите выбранной опцию Текущий масштаб карты, точность построения маршрутов и регионов на карте будет задаваться текущим масштабом карты в графическом редакторе. Чем более детальной является видимая область карты, тем более детальными будут маршруты и регионы при запуске модели, то есть, они будут содержать больше точек. И наоборот, при меньшем масштабе карты уменьшается точность отрисовки маршрутов и регионов.
  5. Если вы выберете опцию Абсолютная точность (метры) как правило генерализации, то детализация объектов разметки на карте не будет зависеть от масштаба карты, но всегда будет определяться с точностью, которую вы зададите в редактируемом поле рядом с параметром. По умолчанию точность составляет 1000 метров.
Как мы можем улучшить эту статью?