Фигура ГИС Карта, которую вы можете найти в палитре Разметка пространства, позволяет вам отображать и управлять ГИС (Географическая Информационная Система) в ваших моделях. Фигура ГИС Карта поддерживает два типа карт:
С помощью фигуры ГИС Карта Вы можете отображать любой из этих типов карт, а также оба типа сразу как наложенные друг на друга слои. Также вы можете добавлять на карту специальные элементы разметки: точки, маршруты и регионы.
Карта ГИС в AnyLogic поддерживает только географическую систему координат в равноугольной цилиндрической проекции Меркатора.
При наличии активного доступа к сети Интернет на вашем компьютере, тайловый слой карты загрузится автоматически, как только вы добавите фигуру ГИС Карта на диаграмму типа агента, и вы сможете сразу же начать ей пользоваться.
Вы можете добавить только одну фигуру ГИС Карта на диаграмму агента. Когда вы добавляете карту на диаграмму агента, вы задаете тип пространства для всех агентов, которые будут жить в этой среде (на диаграмме этого агента), как пространство ГИС.
Имя – Имя карты. Имя используется для идентификации и обращения к карте из кода.
Исключить – Если опция выбрана, то карта будет исключена из модели.
Отображается на верхнем агенте – Если опция выбрана, то карта будет видна на презентации типа агента, в который будет вложен данный агент.
Блокировать – Если опция выбрана, то фигура будет считаться заблокированной и не будет реагировать на щелчки мыши. Таким образом, вы не сможете выбрать заблокированную фигуру в графическом редакторе до тех пор, пока вы не снимете с нее блокировку.
Видимость – Если опция выбрана, то фигура будет отображаться на презентации во время выполнения модели.
Отображать тайлы – Эта опция включена по умолчанию. Снимите флажок, если не хотите отображать тайлы.
Поставщик тайлов – Здесь вы можете выбрать поставщика тайлов из предоставляемого списка поставщиков: AnyLogic OSM (OpenStreetMap), OSM classic, OSM german, OSM Humanitarian или LandSat. Как только вы выберете поставщика, карта автоматически обновится и отобразит новый слой тайлов.
Маршруты – Здесь вы можете выбрать опцию, согласно которой будут задаваться маршруты в карте ГИС. Вы можете выбрать одного из предоставляемых поставщиков под опцией Загружаются с сервера OSM. В ином случае, вы можете использовать опцию Считываются из файла PBF, чтобы создать маршруты из своего файла. Если вы выберете опцию Строятся по прямой, то маршруты будут, соответственно, задаваться прямыми линиями.
Сервер маршрутов – [Опция доступна, если Маршруты: Загружаются с сервера OSM] ГИС Карта поддерживает три сервера маршрутов: AnyLogic (рекомендуется), YOURS и BRouter.
Выбирается маршрут – [Параметр недоступен, если выбрана опция Маршруты: Строятся по прямой] Выберите, хотите ли вы получить Быстрейший или Кратчайший маршрут.
Сеть дорог – [Опция доступна, если Маршруты: Загружаются с сервера OSM] Выберите предпочитаемую сеть для маршрута: Автомобильную, Велосипедную или Пешеходную.
Алгоритм построения маршрутов – [Опция доступна, если Маршруты: Считываются из файла PBF] Выберите желаемый алгоритм для построения маршрутов: A*, bidirectional A*, Dijkstra, Dijkstra bidirectional, Dijkstra native bidirectional.
Загрузите граф маршрутов – [Опция доступна, если Маршруты: Считываются из файла PBF] Щелкните эту кнопку, чтобы открыть окно мастера создания графа маршрутов. Вы можете создать новый граф или загрузить существующий из папки на своем компьютере. Поддерживаются такие типы файлов, как .pbf и .osm. Этот процесс может занять какое-то время в зависимости от размера файла. Вы можете в таком случае выбрать опцию Выполнять в фоновом режиме в диалоговом окне создания графа маршрутов.
Если маршрут не найден – [Параметр недоступен, если выбрана опция Маршруты: Строятся по прямой] Здесь вы можете выбрать, что должно происходить в случае, если маршрут не может быть построен, например, если требуемый маршрут не был найден в базе онлайн-поставщика или в файле, который вы используете, что построить граф маршрутов. Выберите опцию Строить маршрут по прямой, если хотите, чтобы модель продолжала работать в таком случае, или выберите вариант Отображать сообщение об ошибке, если хотите получать уведомление, когда маршрут не был найден.
Здесь можно задать область, в которой при запуске модели будет производится поиск заданных местоположений объектов. По умолчанию поиск производится в области, видимой на ГИС карте при запуске модели.
Зафиксировать границы поиска - Позволяет зафиксировать координаты текущей видимой области ГИС карты и проводить поиск местоположений в этих границах. Модель при этом можно запускать с любой другой видимой областью. Если местоположение не найдено в заданных границах поиска, будет взято ближайшее к этим границам местоположение с таким же именем.
Если зафиксировать границы поиска, появятся координаты, определяющие зафиксированную область поиска двумя точками (в местах пересечения широты и долготы) в ее в нижнем левом и верхнем правом углу:
Нижняя (широта, в градусах) - Широта нижней левой точки области поиска, измеряется в градусах.
Левая (долгота, в градусах) - Долгота нижней левой точки области поиска, измеряется в градусах.
Верхняя (широта, в градусах) - Широта, верхней правой точки области поиска, измеряется в градусах.
Правая (долгота, в градусах) - Долгота, верхней правой точки области поиска, измеряется в градусах.
Не использовать фиксированные границы поиска - Удаляет координаты, определяющие область поиска местоположений, позволяя таким образом проводить поиск в области, видимой на ГИС карте при запуске модели.
Номер столбца с именем - Здесь вы можете указать имя столбца шейп-файла, который содержит имена элементов. Необходимо обязательно найти имя этого столбца в шейп-файле и указать его в этом поле, если вы хотите Преобразовать ГИС шейп-файлы в ж/д фигуры разметки пространства или в дорожную сеть. В этом случае, у элементов разметки пространства, созданных конвертацией, будут осмысленные имена (а не случайно заданные, к примеру, road145, road146).
Цвет линии по умолчанию, Цвет заливки по умолчанию - Здесь вы можете настроить цвет линий и цвет заливки шейп-файла.Также вы можете передвигаться по карте и изменять ее масштаб в режиме редактирования карты.
Широта (в градусах) – Широта центральной точки проекции карты, измеряется в градусах (-90 ... (South) ... 0 ... (North) ... 90)
Долгота (в градусах) – Долгота центральной точки проекции карты, измеряется в градусах (-180 ... (West) ... 0 ... (East) ... 180)
Масштаб 1: – Масштаб проекции карты, 1:<особое значение>, например, 1:10000.
Цвет границы – Цвет границы фигуры (прямоугольной рамки вокруг карты).
Цвет заливки – Цвет заливки фигуры (цвет, которым будут залиты области карты, не содержащие объектов).
Уровень – Уровень, на котором расположен этот элемент.
X – x-координата верхнего левого угла карты.
Y – y-координата верхнего левого угла карты.
Ширина – Ширина карты (в пикселах).
Высота – Высота карты (в пикселах).
Действие по щелчку – Код, который будет выполняться при каждом щелчке пользователя мышью по карте во время выполнения модели. По умолчанию код возвращает значение false. Если в точке щелчка несколько фигур наслаиваются друг на друга, AnyLogic производит итерацию по этим фигурам в Z-порядке их расположения, сверху вниз, и последовательно выполняет действия, заданные кодом в поле Действие по щелчку. Итерация прекращается, когда код действия возвращает значение true.
Другой поставщик тайлов –Выберите опцию, если хотите задать поставщика тайлов самостоятельно. Ниже, в поле свойства Поставщик тайлов вы найдете основу кода с комментариями, которую можете модифицировать.
Другой поставщик маршрутов – Выберите опцию, если хотите задать поставщика маршрутов самостоятельно. Ниже, в поле свойства Поставщик маршрутов вы найдете основу кода с комментариями, которую можете модифицировать.
Генерализация маршрутов/регионов использует – Здесь вы можете задать, насколько детальной должна быть анимация маршрутов и регионов после запуска модели, то есть, сколько точек будет содержать эта анимация. В зависимости от модели, которую вы разрабатываете, выберите либо опцию Текущий масштаб карты, либо опцию Абс. точность (м.) как тип генерализации.
Когда вы находитесь в режиме редактирования карты, AnyLogic отображает текущие координаты положения курсора мыши на карте в статусной строке:
Если вы не хотите использовать тайлы или не имеете доступа в сеть Интернет, вы можете добавить карту ГИС из файла. В таком случае вам понадобится вручную добавить файл в свойствах карты ГИС.
С помощью функций карты ГИС вы можете преобразовать координаты из широты и долготы в пиксели и тому подобное.
Функция |
Описание |
void setCenterLatitude(double centerLatitude) |
Задает широту центра отображаемой карты. Параметр: |
void setCenterLongitude(double centerLongitude) |
Задает долготу центра отображаемой карты. |
void setProjectionCenter |
Задает центр отображаемой карты. Параметры: |
Функция |
Описание |
double getMinMapScale() |
Возвращает минимально возможный масштаб отображаемой карты (соотношение между метрами на экране и метрами на поверхности Земли), например, 1/100000 означает "1 км в 1 см". |
double getMaxMapScale() |
Возвращает максимально возможный масштаб отображаемой карты (соотношение между метрами на экране и метрами на поверхности Земли), например, 1/100000 означает "1 км в 1 см". |
void setMapScale(double mapScale) |
Задает масштаб отображаемой карты. |
void pan(int toEast, |
Перемещает центр отображаемой карты. Параметрами задается количество приращений в получаемом отступе. Одно горизонтальное приращение равняется половине разницы в значениях долготы центра отображаемой карты и ее западного или восточного видимого края. Одно вертикальное приращение равняется половине разницы в значениях широты центра карты и ее северного или южного края. |
void zoomIn() |
Увеличивает масштаб отображаемой карты в два раза. |
void zoomOut() |
Уменьшает масштаб отображаемой карты в два раза. |
Функция |
Описание |
double getDistance |
Возвращает расстояние в метрах между двумя заданными точками. Параметры: |
double getDistance |
Возвращает расстояние в метрах между двумя заданными точками. Параметры: |
double getDistanceByRoute |
Вычисляет длину пути от одной точки до другой (в метрах). Для построения пути используется поставщик маршрутов. Параметры: |
double getDistance |
Вычисляет длину пути от одной точки до другой (в метрах). Для построения пути используется поставщик маршрутов. Параметры: |
Функция |
Описание |
double getX() |
Возвращает X-координату карты ГИС, а именно, X-координату ее верхнего левого угла. |
double getY() |
Возвращает Y-координату карты ГИС, а именно, Y-координату ее верхнего левого угла. |
void setX(double x) |
Задает X-координату карты ГИС. |
void setY(double y) |
Задает Y-координату карты ГИС. |
void setPos |
Задает новые координаты фигуры карты. Параметры: |
Функция |
Описание |
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. |
void setScaleY(double sy) |
Задает масштаб фигуры по оси координат Y. * если параметр равен 1, то фигура сохраняет изначальный размер |
void setScale(double sx, double sy) |
Задает масштаб фигуры по осям координат X и Y. * если параметр равен 1, то фигура сохраняет изначальный размер |
void setScale(double s) |
Задает масштаб фигуры по осям координат X и Y. * если параметр равен 1, то фигура сохраняет изначальный размер |
double getMPP() |
Возвращает количество метров на 1 пиксель презентации карты. |
Функция |
Описание |
boolean isVisible() |
Проверяет видимость фигуры. Если во время запуска модели фигура отображается, возвращает true, иначе - false. |
void setVisible(boolean v) |
Задает видимость фигуры во время запуска модели. Параметр: |
Функция |
Описание |
boolean isLayerVisible(String shapeFileName) |
Проверяет, виден ли слой шейп-файла. Если слой виден, то возвращает true, если слой не виден или не найден - то false. Параметр: shapeFileName - имя шейп-файла. |
ShapeGISMap.Layer[] getLayers() |
Возвращает массив слоев, используемых в этой карте ГИС. |
Иногда вам может понадобиться отредактировать фигуру презентации ГИС Карта, которая содержит в себе проекцию карты. Вы можете изменить размер фигуры или ее местоположение в графическом редакторе, также, вы можете, как обычно, передвигать диаграмму агента, уменьшать или увеличивать масштаб диаграммы, на которой находится фигура карты ГИС. Но иногда вам может понадобиться редактировать саму карту. В таком случае, сначала вам необходимо переключиться в режим редактирования карты, затем вы можете выполнять с картой определенные действия во время разработки модели. Также вы можете перемещаться по карте и изменять ее масштаб во время запуска модели.
Разрабатывая модель с картой ГИС, вы можете выбрать, какую территорию хотите использовать в модели, какую область эта карта будет отображать во время запуска модели, и насколько детальной эта область должна быть.
Вы можете перемещать карту ГИС в окне запущенной модели так же, как во время ее разработки: не отпуская левую кнопку мыши, передвиньте мышь в нужном направлении.
Некоторые пользователи могут путать перемещение карты (левой кнопкой мыши) и перемещение всего полотна в окне модели (правой кнопкой мыши). Вы можете отключить перетаскивание для окна презентации, чтобы пользователи случайно его не использовали. Отключение перетаскивания особенно имеет смысл, если карта ГИС занимает все полотно окна презентации в вашей модели.
Увеличение и уменьшение масштаба при запуске модели не сложнее, чем при разработке модели.
С помощью этих функций, вы можете динамически изменять масштаб карты или задавать координаты ее центра во время запуска модели.
Функция |
Описание |
double getCenterLatitude() |
[Не поддерживается в AnyLogic Cloud] Возвращает широту центра отображаемой карты, измеряемой в градусах (-90 ... (South) ... 0 ... (North) ... 90) |
double getCenterLongitude() |
[Не поддерживается в AnyLogic Cloud] Возвращает долготу центра отображаемой карты, измеряемой в градусах (-180 ... (West) ... 0 ... (East) ... 180) |
void setCenterLatitude(double centerLatitude) |
Задает широту центра отображаемой карты. Параметр: |
void setCenterLongitude(double centerLongitude) |
Задает долготу центра отображаемой карты. |
void setProjectionCenter |
Задает центр отображаемой карты. Параметры: |
Функция |
Описание |
double getMapScale() |
Возвращает масштаб отображаемой карты (соотношение между метрами на экране и метрами на поверхности Земли), например, 1/100000 означает "1 км в 1 см". |
double getMinMapScale() |
Возвращает минимально возможный масштаб отображаемой карты (соотношение между метрами на экране и метрами на поверхности Земли), например, 1/100000 означает "1 км в 1 см". |
double getMaxMapScale() |
Возвращает максимально возможный масштаб отображаемой карты (соотношение между метрами на экране и метрами на поверхности Земли), например, 1/100000 означает "1 км в 1 см". |
void setMapScale(double mapScale) |
Задает масштаб отображаемой карты. Параметр: |
void pan(int toEast, |
Перемещает центр отображаемой карты. Параметрами задается количество приращений в получаемом отступе. Одно горизонтальное приращение равняется половине разницы в значениях долготы центра отображаемой карты и ее западного или восточного видимого края. Одно вертикальное приращение равняется половине разницы в значениях широты центра карты и ее северного или южного края. Параметры: |
void setProjectionCenter |
Задает центр отображаемой карты. Параметры: |
void zoomIn() |
Увеличивает масштаб отображаемой карты (x 2). |
void zoomOut() |
Уменьшает масштаб отображаемой карты (x 1/2). |
AnyLogic поддерживает отображение слоя тайлов в карте ГИС. Тайловая карта - это карта, состоящая из незаметно соединенных отдельных изображений, количество которых зависит от масштаба карты. вы можете выбрать одного из предоставляемых поставщиков тайлов в свойствах карты ГИС.
Когда вы перемещаетесь по карте или изменяете ее масштаб во время разработки модели, все тайлы, которые были запрошены с сервера, будут помещены в кэш в папку AnyLogic на вашем компьютере. Это позволит вам уменьшить количество запросов через сеть Интернет и увеличить скорость разработки модели, поскольку вам не придется постоянно заново загружать тайлы, работая с одной и той же областью на карте. Кроме того, этот кэш является общим для всех моделей, которые вы будете разрабатывать на этом компьютере, и при создании новой модели у вас уже будут загружены некоторые тайлы.
Когда вы запустите модель с картой ГИС, AnyLogic создаст папку под названием cache в папке модели, чтобы сохранить тайлы, которые необходимы для этой конкретной модели. Теперь вы сможете запускать эту модель, даже не имея соединения с сетью Интернет, или поделиться моделью с другим пользователем, зная, что она всегда правильно запустится.
Если ни один из предлагаемых поставщиков тайлов не подходит вам, вы можете добавить карту из шейп-файла или самостоятельно задать другого поставщика тайлов для ГИС карты.
Так как карта всегда отображает объекты в меньшем масштабе, чем они есть на самом деле, эти объекты обычно подвергаются генерализации, чтобы карта оставалась достаточно точной, и при этом легко читаемой. Любой слой тайлов в карте ГИС уже использует генерализацию: вы можете заметить ее при изменении масштаба карты, но вам может понадобиться изменять настройки генерализации для элементов, которые вы добавляете на карту: маршрутов или регионов.
Как сами ГИС маршруты, так и границы ГИС регионов могут быть очень неровными. Эти объекты состоят из множества соединенных точек, и от настроек генерализации зависит, какое количество будет отображаться при их анимации при запуске модели. Большее количество приближает анимацию объекта к реальному масштабу, но может также повлиять на скорость выполнения модели.
Когда вы создаете маршруты или регионы на карте во время разработки модели, они создаются с максимальной точностью. Но так же, как невозможно отобразить на карте все улицы отдельных городов, когда мы смотрим на карте на всю страну, мы отображаем меньшее количество при уменьшении масштаба карты. При этом, если вы увеличите масштаб карты, то увидите, как маршрут или регион становятся все более точными и менее генерализованными, то есть, на карте отображается все большее количество точек. Во время разработки модели генерализация для маршрутов и регионов работает так же, как и генерализация самой карты.
Настройки генерализации карты ГИС для маршрутов и регионов начинают действовать при запуске модели. На рисунках ниже вы можете два варианта отображения маршрута: при разной точности генерализации. В первом случае маршрут более детальный, но такая точность может привести к снижению скорости выполнения модели, а агенты при движении по такому детальному маршруту будут слишком часто вращаться, и анимация их движения может выглядеть странно. Во втором случае детализация вполне приемлемая, при этом опускаются излишние повороты маршрута.
Время движения агента по маршруту не зависит от настроек генерализации, оно зависит от длины реального маршрута, поэтому точность вашей модели никак не снизится при генерализации, которая влияет только на отрисовку анимации и, соответственно, скорость выполнения модели.
Маршрут Grasse-Toulon, точность генерализации: 100 метров
Тот же маршрут, точность генерализации: 1000 метров