Anylogic - Как извлечь данные о регионе и провинции из карты, используя код
Я студент, использующий AnyLogic 7 University 7.3.6 для симуляционного проекта.
В моем проекте я хочу иметь возможность распределять агентов (людей) по географическому региону (город, в частности, Стокгольм, столица Швеции) и размещать их в воображаемых "домах". Я знаю, что вы можете использовать openstreetmaps для загрузки карт в anylogic, и я хочу иметь возможность реально распределять людей по разным местам на этой карте.
Что мне интересно, так это:
Можно ли загрузить географическую карту города из openStreetMaps или любого другого подобного источника, написать код, который может извлечь различные регионы или муниципалитеты в этом географическом районе и сохранить их как коллекцию?
Я думаю, что это возможно, но сложно.
Например, Стокгольм (столица Швеции) состоит из 26 муниципалитетов. Я хочу иметь возможность загрузить карту Стокгольма, написать код, который может обнаружить названия различных муниципалитетов в Стокгольме (или какую-либо другую карту города), определить, сколько регионов или муниципалитетов есть на этой карте (26 в этом случай) и каковы их названия, сохраните их в коллекции, а затем для каждого муниципалитета найдите все названия улиц в этом муниципалитете.
Когда у меня есть все муниципалитеты города вместе со всеми (или большинством) названиями улиц, я могу разместить своих агентов на разных улицах, используя названия улиц.
Я хочу иметь возможность размещать различное количество агентов (людей) в каждом муниципалитете, и их нельзя размещать в нереалистичных местах (таких как вода или местность), поэтому я считаю, что мне нужны названия улиц, чтобы я мог реально разместите их в воображаемых "домах".
Я не нашел никакой ценной информации об этом, но я пытаюсь. Если у кого-нибудь есть какие-либо советы, это будет с благодарностью!
1 ответ
Я сделал что-то подобное.
Для этого вам нужно создать шейп-файл, содержащий всю необходимую вам информацию (муниципалитеты будут одним слоем шейп-файла (полигоны), а улицы - другим слоем (полилинии)), и вы будете читать этот шейп-файл с AnyLogic, и вы сможете генерировать случайные дома на основе этого.
Вам нужно найти и разбираться в ArcGis, чтобы помочь вам создать шейп-файл в соответствии с вашими потребностями. Я не эксперт в ArcGis, но у меня есть кто-то, кто создает шейп-файлы для меня, так что это будет первым шагом.
Позже (Второй шаг) вам нужно будет научиться читать шейп-файлы после загрузки их на карту в AnyLogic и преобразования слоев шейп-файла в области и линии, видимые на карте... Вы начинаете использовать функцию getLayers()... Вы должны преобразовать шейп-файл в разметку, которую легко использовать в AnyLogic.
В конце концов, ваш вопрос требует много вещей, поэтому, возможно, этот ответ укажет вам правильное направление, заставит вас выйти из проекта или будет бесполезным... Или вы можете найти другой и более простой способ упростить ваш проект без необходимости так много параферналии.