Anylogic - Как извлечь данные о регионе и провинции из карты, используя код

Я студент, использующий AnyLogic 7 University 7.3.6 для симуляционного проекта.

В моем проекте я хочу иметь возможность распределять агентов (людей) по географическому региону (город, в частности, Стокгольм, столица Швеции) и размещать их в воображаемых "домах". Я знаю, что вы можете использовать openstreetmaps для загрузки карт в anylogic, и я хочу иметь возможность реально распределять людей по разным местам на этой карте.

Что мне интересно, так это:

Можно ли загрузить географическую карту города из openStreetMaps или любого другого подобного источника, написать код, который может извлечь различные регионы или муниципалитеты в этом географическом районе и сохранить их как коллекцию?

Я думаю, что это возможно, но сложно.

Например, Стокгольм (столица Швеции) состоит из 26 муниципалитетов. Я хочу иметь возможность загрузить карту Стокгольма, написать код, который может обнаружить названия различных муниципалитетов в Стокгольме (или какую-либо другую карту города), определить, сколько регионов или муниципалитетов есть на этой карте (26 в этом случай) и каковы их названия, сохраните их в коллекции, а затем для каждого муниципалитета найдите все названия улиц в этом муниципалитете.

Когда у меня есть все муниципалитеты города вместе со всеми (или большинством) названиями улиц, я могу разместить своих агентов на разных улицах, используя названия улиц.

Я хочу иметь возможность размещать различное количество агентов (людей) в каждом муниципалитете, и их нельзя размещать в нереалистичных местах (таких как вода или местность), поэтому я считаю, что мне нужны названия улиц, чтобы я мог реально разместите их в воображаемых "домах".

Я не нашел никакой ценной информации об этом, но я пытаюсь. Если у кого-нибудь есть какие-либо советы, это будет с благодарностью!

1 ответ

Решение

Я сделал что-то подобное.

Для этого вам нужно создать шейп-файл, содержащий всю необходимую вам информацию (муниципалитеты будут одним слоем шейп-файла (полигоны), а улицы - другим слоем (полилинии)), и вы будете читать этот шейп-файл с AnyLogic, и вы сможете генерировать случайные дома на основе этого.

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

Позже (Второй шаг) вам нужно будет научиться читать шейп-файлы после загрузки их на карту в AnyLogic и преобразования слоев шейп-файла в области и линии, видимые на карте... Вы начинаете использовать функцию getLayers()... Вы должны преобразовать шейп-файл в разметку, которую легко использовать в AnyLogic.

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

Другие вопросы по тегам