Альтернативы реализации GIS в AnyLogic

Здравствуйте, коллеги.

На конференции AnyLogic 2013 я немного рассказал о своем недавнем проекте, касающемся альтернативных путей реализации GIS в AnyLogic, и теперь настало время поделиться с вами его результатами. Используя немного Java-кода, open-source проекты и бесплатные сервисы по работе с GIS-данными, я смог реализовать в модели следующую функциональность:
  • Анимированная и масштабируемая тайловая карта;
  • Переключение между разными источниками тайлов во время выполнения модели;
  • Анимация агентов, находящихся в GIS-пространстве, на карте;
  • Прямое и обратное геокодирование путем парсинга ответа на http-запрос;
  • Маршрутизация путем парсинга ответа на http-запрос.
Я создал в AnyLogic библиотеку, которая позволяет встраивать такую карту в модель. Она состоит из двух объектов:
  • TileGIS. В качестве области для отображения карты объекту передается расположенный в нужном месте компонент Radiobutton.
  • TileSourceSelector. Этот объект должен быть связан с объектом TileGIS для переключения источников тайлов во время выполнения модели.


Эта библиотека содержит лишь базовую функциональность, которая, однако, сама по себе предоставляет широкие возможности.
Сейчас она поддерживает отображение на карте двух типов объектов:
  • PointOverlay, который отображает точки на карте в виде круга с надписью;
  • PathOverlay, который используется для анимации маршрутов на карте.
Вдобавок, объект TileGIS может анимировать агентов, находящихся в GIS-пространстве. Для задания пространства вам понадобится стандартный объект GIS с любым shape-файлом и объект «Среда», чтобы задать параметры GIS-пространства.

Настроив работу тайловой карты, я решил также включить отображение на карте данных OpenStreetMap. Открытая инициатива MapQuest (MapQuest Open Initiative) предоставляет различные API для извлечения данных из OSM. Для большинства API требуется ключ, который выдается после бесплатной регистрации.

Сделав это, я получил возможность проводить поиск по карте и отправлять запросы на геокодирование и маршрутизацию. Все результаты возвращаются в виде простых JSON-объектов, которые можно распарсить с использованием инструмента json-simple.



Этот способ значительно увеличивает функциональность моделей AnyLogic в том, что касается GIS. Это значительно быстрее использования shape-файлов, использует меньше памяти, предоставляет доступ к большой базе данных и т.д.

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

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

Если у вас появились вопросы, вы можете задать их мне. Любые отзывы и пожелания приветствуются!

Анатолий Жеребцов
Руководитель отдела консалтинга
Компания AnyLogic

Полезные ссылки:

OpenStreetMap: http://wiki.openstreetmap.org/
Маршрутизация: http://open.mapquestapi.com/directions/
Другой инструмент маршрутизации на базе OSM данных (в том числе оффлайновый): http://graphhopper.com/
Прямое и обратное геокодирование, поиск по карте:
http://open.mapquestapi.com/nominatim/
http://open.mapquestapi.com/xapi/
http://wiki.openstreetmap.org/wiki/Overpass_API