Рано или поздно возникает момент, когда функций только навигации, поиска и измерений в геоинформационных мобильных и веб-приложениях становится недостаточно и возникает необходимость в специфической обработке пространственных данных. Одной из таких потребностей является моделирование ЧС для получения зон поражающего фактора и оценки последствий. Например, для определения на случай взрыва зоны допуска к резервуарному парку персонала, не имеющего защитную одежду, или для нахождения населенных пунктов вблизи зоны распространения лесного пожара. Просмотр соответствующих интернет ресурсов показал, что практически отсутствуют примеры решения этой задачи. Я не беру в рассмотрение различные онлайн калькуляторы, которые выдают одну или несколько цифр и никак не связаны с пространственным представлением информации.
Из нашей практики я могу выделить четыре варианта решения этой задачи:
- Локальный расчет и построение зоны поражения.
- Локальный расчет и запрос зоны поражения от геометрического сервиса (удаленного или локального)
- Удаленный расчет и построение зоны поражения с помощью сервиса геообработки.
- Удаленный расчет и построение зоны поражения с помощью специализированного сервиса.
Эти варианты отсортированы в порядке сложности реализации. Первые три допускает интерактивную форму взаимодействия, когда время реакции мгновенно или в допустимых пределах. Рассмотрим подробнее каждый из них.
Локальный расчет и построение зоны поражения на клиенте возможно при использовании относительно простых эмпирических моделей, не связанных с конкретным местоположением. Это может быть взрыв или техногенный пожар, упрощенное химическое и радиактивное заражение. Например, во многих нормативных документов для расчета взрыва, то есть расчета величины давления, достаточно знать, какое вещество участвует во взрыве и его массу. И одна из методик для расчета взрыва конденсированных взрывчатых веществ (например, для прогноза теракта) содержит всего 2 формулы. Исходные данные подставляются в первую формулу, чтобы подсчитать некую вспомогательную характеристику «приведенный радиус», а результат первой формулы подставляется во вторую формулу для получения непосредственно величины давления.
Для построения одной зоны достаточно, меняя расстояние от эпицентра взрыва, определить величину давления, сравнить с известным значением и построить окружность, а результат отобразить в составе графического слоя. Тем самым даже на простом смартфоне можно мгновенно построить несколько зон поражения. При таком подходе конечно не учитываются реальные преграды, но для экспресс-оценки этого вполне достаточно. Например, такой подход мы реализовали в рамках нашего мобильного приложения Hazard Analyst, в котором собрано 17 различных методик.
Локальный расчет и запрос зоны поражения от геометрического сервиса (удаленного или локального) во многом повторяет первый подход. Отличие заключается в том, что для построения зоны поражения используются функции локального или удаленного геометрического сервиса. К этому приходится прибегать, если источник ЧС имеет сложную площадную форму и для построения зоны поражения необходимо воспользоваться более сложным геометрическим расчетом – чаще всего это построение буфера. Кстати, если для веб-приложений раньше можно было использовать только вариант удаленного сервиса, то уже в последних версиях ArcGIS API for JavaScript можно задействовать встроенный функционал GeometryEngine, который к тому же гораздо производительней GeometryService (подробнее смотрите в этом блоге).
Удаленный расчет и построение зоны поражения с помощью сервиса геообработки может применяться как для простых эмпирических моделей (первые два варианта), так и для моделей, зависящих от данных большого объема. Яркими примерами являются расчет зон затопления при паводках или расчет разлива нефти на суше, которые зависят от цифровой модели рельефа. Или это может быть расчет разлива нефти на воде, требующий наличие подробной карты течений. Очевидно, что хранить эти исходные данные на клиенте нецелесообразно, они должны размещаться на сервере. Это удобно и в том случае, если исходные данные периодически обновляются, как, например, в задаче расчета распространения лесного пожара в зависимости от метеорологических условий. Один из наших модулей ArcGIS – «Метео» – в автоматическом режиме занимается сбором и пространственной обработкой метеоданных и сохраняет результаты в файловой базе геоданных, а расчетный сервис «Лесной пожар» использует часть этих данных (ветер, индекс пожарной опасности) при моделировании. В нашей практике этот подход используется чаще всего и с некоторыми расчетными моделями вы можете ознакомиться на нашей странице ArcGIS Online по адресу http://intro-gis.maps.arcgis.com. К такому сервису можно «прицепиться», используя стандартные возможности таких веб-конструкторов, как Web AppBuilder, Silverlight Viewer, Flex Viewer. Или можно выполнить специальную адаптацию сервисов при разработке приложения, чтобы пользователь вводил исходные данные в максимально удобной форме.
Наконец, последний и самый специфический вариант – удаленный расчет и построение зоны поражения с помощью специализированного сервиса. Он связан с использованием имитационного моделирования с применением сложных математических моделей. В отличие от первых трех вариантов, когда время расчета мгновенно или находится в пределах нескольких секунд, что вполне допустимо для интерактивной работы, в данном варианте расчет выполняется долго и исчисляется в минутах, часах. Специализированный сервис (например, WCF сервис) выступает в качестве менеджера задач, которые не связан с текущей сессией пользователя. То есть сценарий взаимодействия выглядит примерно следующим образом: пользователь запускает удаленный расчет, закрывает приложение, открывает приложение через продолжительный период, проверяет состояние расчета, подгружает результаты расчета, если он завершен. Такой вариант может быть и единственно приемлемым, если расчет выполняется с использованием отдельного не-ГИС приложения, но результаты нужно отобразить на карте. Успешной практикой в таком подходе является сохранение результатов расчета в базе геоданных, которая в свою очередь используется для картографического сервиса. Мы уже апробировали его на примере расчета зон затопления с использованием одномерной гидромодели и расчета зон распространения нефтяного пятна на воде с использованием сложной модели блуждающих частиц.
В плане перспектив стоит отметить, что следующий релиз ArcGIS Runtime «Quartz» предоставит разработчикам гораздо больше возможностей по обработке пространственных данных и позволит на стороне мобильного или веб-клиента выполнять довольно сложную аналитическую обработку, доступнее ранее только с применением ArcObjects в Desktop приложениях.