Давненько мы не добавляли в наш симулятор пешеходного движения новые фичи.

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

Источник фото https://gre4ark.livejournal.com/483750.html

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

Раньше в нашем симуляторе нельзя было ограничить доступ агентов на какую-либо территорию, в итоге могли появляться транзитные маршруты и тропы, которых в реальности бы не было. Теперь такая возможность появилась. Под катом — описание, как правильно такие территории разметить в редакторе.

Нарисуем простой пример двора с решетками и калитками на входе, доступными только для жильцов.

Во-первых, теперь у всех генераторов появились идентификаторы. Это просто число, которое присваивается каждому генератору при его добавлению на карту:

Запомним эти идентификаторы для двух генераторов внутри двора.

Используем новый инструмент «барьер» для создания барьеров, перегораживающих входы во двор.

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

Выделим наш барьер и через запятую укажем идентификаторы генераторов — подъездов дома (в нашем случае это 0 и 1):

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

Реализация сквозного подъезда (имеющего выход на обе стороны дома) выглядит так:

  1. Делаем разрыв в полигоне дома
  2. Вставляем в разрыв генератор
  3. Перекрываем разрыв барьером с идентификатором генератора