Руководство по настройке геозоны с помощью Azure Карты
В этом руководстве показано, как создавать и использовать службы геозон в Azure Maps.
Рассмотрим следующий сценарий:
Руководителю строительного объекта нужно отслеживать оборудование, которое пересекает периметр строительной зоны в любую сторону. Каждый раз, когда часть оборудования выходит или вводит эти периметры, уведомление по электронной почте отправляется в Operations Manager.
Azure Карты предоставляет услуги для поддержки отслеживания оборудования ввода и выхода из строительной области. При работе с этим руководством вы сделаете следующее:
- Отправка данных о геозонах в формате GeoJSON, которые определяют отслеживаемый строительный объект. Вы отправите геозоны в качестве координат многоугольников в учетную запись хранения Azure, а затем используйте службу реестра данных для регистрации данных в учетной записи Azure Карты.
- Настройка двух активируемых приложений логики, которые отправляют по электронной почте уведомления руководителю строительного объекта при пересечении оборудованием границ геозоны.
- Применение Сетки событий Azure для подписки на события входа в геозону Azure Maps и выхода из нее. Вы настроите две подписки для событий веб-перехватчиков, которые вызывают конечные точки HTTP, определенные в этих двух приложениях логики. После этого Logic Apps будет отправлять уведомления по электронной почте о входе оборудования в геозону и выходе из нее.
- Применение API поиска по геозоне для получения уведомлений о пересечении оборудованием границ геозоны.
Необходимые компоненты
В этом руководстве используется приложение Postman, но вы можете выбрать другую среду разработки API.
Важно!
В примерах URL-адресов замените {Your-Azure-Maps-Subscription-key}
ключ подписки azure Карты.
Отправка данных о геозоне в формате GeoJSON
В этом руководстве показано, как отправить данные geofencing GeoJSON, содержащие данные FeatureCollection
. FeatureCollection
определяет две геозоны в виде многоугольников на строительном объекте. Для первой геозоны какие-либо ограничения, включая временные, отсутствуют. Вторую можно запрашивать только в рабочее время (с 9:00 до 17:00 по тихоокеанскому времени), и с 1 января 2022 года она будет недействительна. См. сведения о формате данных GeoJSON.
Создайте JSON-файл геозоны с помощью следующих данных геозоны. Этот файл будет отправлен в учетную запись хранения Azure далее.
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-122.13393688201903,
47.63829579223815
],
[
-122.13389128446579,
47.63782047131512
],
[
-122.13240802288054,
47.63783312249837
],
[
-122.13238388299942,
47.63829037035086
],
[
-122.13393688201903,
47.63829579223815
]
]
]
},
"properties": {
"geometryId": "1"
}
},
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-122.13374376296996,
47.63784758098976
],
[
-122.13277012109755,
47.63784577367854
],
[
-122.13314831256866,
47.6382813338708
],
[
-122.1334782242775,
47.63827591198201
],
[
-122.13374376296996,
47.63784758098976
]
]
]
},
"properties": {
"geometryId": "2",
"validityTime": {
"expiredTime": "2022-01-01T00:00:00",
"validityPeriod": [
{
"startTime": "2020-07-15T16:00:00",
"endTime": "2020-07-15T24:00:00",
"recurrenceType": "Daily",
"recurrenceFrequency": 1,
"businessDayOnly": true
}
]
}
}
}
]
}
Выполните действия, описанные в статье "Создание реестра данных", чтобы отправить JSON-файл геозоны в учетную запись хранения Azure и зарегистрировать его в учетной записи Карты Azure.
Важно!
Обязательно запишите уникальное значение идентификатора (udid
) вам потребуется. Вот udid
как вы ссылаетесь на геозону, отправленную в учетную запись хранения Azure из исходного кода и HTTP-запросов.
Создание рабочих процессов в Azure Logic Apps
Затем создайте две конечные точки приложения логики, которые активируют уведомление по электронной почте.
Чтобы создать приложения логики, сделайте следующее.
Войдите на портал Azure.
В верхнем левом углу окна портала Azure щелкните Создать ресурс.
В поле служба и Marketplace введите приложение логики.
Из списка результатов выберите Приложение логики. Затем выберите Создать.
На странице Приложение логики укажите следующее:
- Подписка для этого приложения логики.
- Группа ресурсов для этого приложения логики. Вы можете создать новую или использовать существующую группу ресурсов.
- Имя приложения логики. В этом примере используется имя
Equipment-Enter
. - Выберите "Потребление " в качестве типа плана. Дополнительные сведения см. в разделе "Модели выставления счетов и ценообразования" в документации по приложению логики.
Для работы с этим руководством оставьте значения по умолчанию для всех остальных параметров.
По завершении нажмите кнопку "Просмотр и создание". После того, как Azure проверит сведения о ресурсе приложения логики, выберите Создать.
Когда развертывание успешно завершится, щелкните Перейти к ресурсу.
Выберите конструктор приложений логики в разделе "Средства разработки" в меню слева, прокрутите вниз до раздела "Пуск" с общим разделом триггера. Выберите При получении HTTP-запроса.
В правом верхнем углу конструктора приложений логики выберите Сохранить. Будет автоматически создан URL-адрес HTTP-запроса POST. Сохраните URL-адрес — Он понадобится для создания конечной точки события в следующем разделе.
Выберите + Создать шаг.
В поле поиска введите
outlook.com email
. Прокрутите список Действия вниз и щелкните Отправка электронной почты (V2).Войдите в учетную запись Outlook. Выберите Да, чтобы разрешить приложению логики доступ к этой учетной записи. Заполните поля для отправки сообщения электронной почты.
Совет
В уведомлениях по электронной почте можно получить данные ответов GeoJSON, например
geometryId
илиdeviceId
. В Logic Apps можно настроить чтение данных, отправляемых службой "Сетка событий". Сведения о настройке Logic Apps для использования и передачи данных событий в Уведомления по электронной почте см. в руководстве по отправке Уведомления по электронной почте о событиях Центр Интернета вещей Azure с помощью Сетки событий и Logic Apps.В левом верхнем углу конструктора приложений логики выберите Сохранить.
Чтобы создать второе приложение логики для информирования руководителя о выходе оборудования из строительной зоны, повторите приведенную выше процедуру. Присвойте этому приложению логики имя
Equipment-Exit
.
Создание подписок на события Azure Maps
Azure Maps поддерживает три типа событий. В этом руководстве показано, как создать подписки на следующие два события:
- события входа в геозону;
- события выхода из геозоны.
Создайте выход из геозоны и введите подписки на события:
В учетной записи Azure Maps выберите Подписки.
Выберите имя своей подписки.
В меню "Параметры" выберите События.
На странице "События" щелкните +Подписка на события.
На странице Создание подписки на события укажите следующее:
- Имя для этой подписки на события.
- В поле Схема события выберите Схема Сетки событий.
- Имя системного раздела для этой подписки на события (в данном случае это
Contoso-Construction
). - В фильтре по типам событий выберите тип события
Geofence Entered
. - В поле Тип конечной точки выберите
Web Hook
. - В поле Конечная точка вставьте URL-адрес созданной на предыдущем шаге конечной точки HTTP-запроса POST из приложения логики для событий входа, который вы получили ранее. Если вы забыли сохранить это значение, просто переключитесь в окно конструктора приложений логики и скопируйте адрес из шага создания триггера HTTP.
Нажмите кнопку создания.
Повторите эту процедуру для события выхода из геозоны. На шаге 3 обязательно выберите тип события
Geofence Exited
.
Использование API определения пространственной геозоны
Затем мы используем API получения пространственной геозоны для отправки Уведомления по электронной почте в Operations Manager, когда часть оборудования входит или выходит из геозоны.
Каждый элемент оборудования имеет deviceId
. В этом примере будет отслеживаться только один элемент оборудования с уникальным идентификатором device_1
.
На следующей схеме представлены пять расположений этого элемента оборудования с течением времени, начиная с позиции Начало, которая не входит в пределы наших геозон. В целях этого руководства расположение "Пуск" не определено, так как устройство не запрашивается в этом расположении.
При запросе API получения пространственной геозоны с расположением оборудования, которое указывает на начальную запись геозоны или выход, Сетка событий вызывает соответствующую конечную точку приложения логики для отправки уведомления электронной почты в Operations Manager.
Каждая из следующих секций выполняет запрос к API с разными координатами расположения оборудования.
Расположение оборудования 1 (47,638237,-122,132483)
В приложении Postman выберите New (Создать).
В окне Create New (Создание) выберите HTTP Request (HTTP-запрос).
Введите имя запроса, например Location 1.
Выберите метод HTTP GET.
Введите следующий URL-адрес: Запрос должен выглядеть следующим URL-адресом (замените
{udid}
udid
сохраненным в разделе данных Upload GeoJSON геофенсинг).https://{geography}.atlas.microsoft.com/spatial/geofence/json?subscription-key={Your-Azure-Maps-Subscription-key}&api-version=2022-08-01&deviceId=device_01&udid={udid}&lat=47.638237&lon=-122.1324831&searchBuffer=5&isAsync=True&mode=EnterAndExit
Примечание.
Замените {geography} географическим область. Дополнительные сведения см. в статье azure Карты географические область и API получения пространственной геозоны.
Выберите Отправить.
Ответ должен выглядеть как приведенный ниже фрагмент GeoJSON:
{ "geometries": [ { "deviceId": "device_1", "udId": "64f71aa5-bbee-942d-e351-651a6679a7da", "geometryId": "1", "distance": -999.0, "nearestLat": 47.638291, "nearestLon": -122.132483 }, { "deviceId": "device_1", "udId": "64f71aa5-bbee-942d-e351-651a6679a7da", "geometryId": "2", "distance": 999.0, "nearestLat": 47.638053, "nearestLon": -122.13295 } ], "expiredGeofenceGeometryId": [], "invalidPeriodGeofenceGeometryId": [], "isEventPublished": true }
В предыдущем ответе GeoJSON отрицательное значение расстояния от основной геозоны объекта означает, что оборудование находится в этой геозоне. Положительное значение расстояния от дочерней геозоны означает, что оборудование находится за пределами этой геозоны. Так как это устройство впервые оказалось внутри главного сайта геозоны, для параметра isEventPublished
задано значение true
. Operations Manager получает уведомление по электронной почте о том, что оборудование ввело геозону.
Расположение 2 (47,63800,-122,132531)
В приложении Postman выберите New (Создать).
В окне Create New (Создание) выберите HTTP Request (HTTP-запрос).
Введите имя запроса, например Location 2.
Выберите метод HTTP GET.
Введите следующий URL-адрес: Запрос должен выглядеть следующим URL-адресом (замените
{udid}
udid
сохраненным в разделе данных Upload GeoJSON геофенсинг).https://{geography}.atlas.microsoft.com/spatial/geofence/json?subscription-key={Your-Azure-Maps-Subscription-key}&api-version=2022-08-01&deviceId=device_01&udId={udId}&lat=47.63800&lon=-122.132531&searchBuffer=5&isAsync=True&mode=EnterAndExit
Выберите Отправить.
Ответ должен выглядеть как приведенный ниже фрагмент GeoJSON:
{ "geometries": [ { "deviceId": "device_01", "udId": "64f71aa5-bbee-942d-e351-651a6679a7da", "geometryId": "1", "distance": -999.0, "nearestLat": 47.637997, "nearestLon": -122.132399 }, { "deviceId": "device_01", "udId": "64f71aa5-bbee-942d-e351-651a6679a7da", "geometryId": "2", "distance": 999.0, "nearestLat": 47.63789, "nearestLon": -122.132809 } ], "expiredGeofenceGeometryId": [], "invalidPeriodGeofenceGeometryId": [], "isEventPublished": false }
В предыдущем ответе GeoJSON видно, что оборудование оставалось в основной геозоне объекта и не входило в дополнительную геозону. В результате isEventPublished
параметр имеет false
значение , и Operations Manager не получает никаких Уведомления по электронной почте.
Расположение 3 (47,63810783315048,-122,13336020708084)
В приложении Postman выберите New (Создать).
В окне Create New (Создание) выберите HTTP Request (HTTP-запрос).
Введите имя запроса, например Location 3.
Выберите метод HTTP GET.
Введите следующий URL-адрес: Запрос должен выглядеть следующим URL-адресом (замените
{udid}
udid
сохраненным в разделе данных Upload GeoJSON геофенсинг).https://{geography}.atlas.microsoft.com/spatial/geofence/json?subscription-key={Your-Azure-Maps-Subscription-key}&api-version=2022-08-01&deviceId=device_01&udid={udid}&lat=47.63810783315048&lon=-122.13336020708084&searchBuffer=5&isAsync=True&mode=EnterAndExit
Выберите Отправить.
Ответ должен выглядеть как приведенный ниже фрагмент GeoJSON:
{ "geometries": [ { "deviceId": "device_01", "udId": "64f71aa5-bbee-942d-e351-651a6679a7da", "geometryId": "1", "distance": -999.0, "nearestLat": 47.638294, "nearestLon": -122.133359 }, { "deviceId": "device_01", "udId": "64f71aa5-bbee-942d-e351-651a6679a7da", "geometryId": "2", "distance": -999.0, "nearestLat": 47.638161, "nearestLon": -122.133549 } ], "expiredGeofenceGeometryId": [], "invalidPeriodGeofenceGeometryId": [], "isEventPublished": true }
В предыдущем ответе GeoJSON видно, что оборудование оставалось в основной геозоне объекта, но вошло в дополнительную геозону. В результате для параметра isEventPublished
будет задано значение true
. Operations Manager получает уведомление по электронной почте, указывающее, что оборудование ввело геозону.
Примечание.
Если оборудование переходит в дополнительную геозону в нерабочее время, событие не публикуется и руководитель не получает уведомлений.
Расположение 4 (47,637988,-122,1338344)
В приложении Postman выберите New (Создать).
В окне Create New (Создание) выберите HTTP Request (HTTP-запрос).
Введите имя запроса, например Location 4.
Выберите метод HTTP GET.
Введите следующий URL-адрес: Запрос должен выглядеть следующим URL-адресом (замените
{udid}
udid
сохраненным в разделе данных Upload GeoJSON геофенсинг).https://{geography}.atlas.microsoft.com/spatial/geofence/json?subscription-key={Your-Azure-Maps-Subscription-key}&api-version=2022-08-01&deviceId=device_01&udid={udid}&lat=47.637988&userTime=2023-01-16&lon=-122.1338344&searchBuffer=5&isAsync=True&mode=EnterAndExit
Выберите Отправить.
Ответ должен выглядеть как приведенный ниже фрагмент GeoJSON:
{ "geometries": [ { "deviceId": "device_01", "udId": "64f71aa5-bbee-942d-e351-651a6679a7da", "geometryId": "1", "distance": -999.0, "nearestLat": 47.637985, "nearestLon": -122.133907 } ], "expiredGeofenceGeometryId": [ "2" ], "invalidPeriodGeofenceGeometryId": [], "isEventPublished": false }
В предыдущем ответе GeoJSON видно, что оборудование оставалось в основной геозоне объекта, но вышло из дополнительной геозоны. Однако обратите внимание, что значение userTime
превышает значение expiredTime
, определенное в данных о геозоне. В результате isEventPublished
для параметра задано false
значение , и Operations Manager не получает уведомление по электронной почте.
Расположение 5(47,63799,-122,134505)
В приложении Postman выберите New (Создать).
В окне Create New (Создание) выберите HTTP Request (HTTP-запрос).
Введите имя запроса, например Location 5.
Выберите метод HTTP GET.
Введите следующий URL-адрес: Запрос должен выглядеть следующим URL-адресом (замените
{udid}
udid
сохраненным в разделе данных Upload GeoJSON геофенсинг).https://{geography}.atlas.microsoft.com/spatial/geofence/json?subscription-key={Your-Azure-Maps-Subscription-key}&api-version=2022-08-01&deviceId=device_01&udid={udid}&lat=47.63799&lon=-122.134505&searchBuffer=5&isAsync=True&mode=EnterAndExit
Выберите Отправить.
Ответ должен выглядеть как приведенный ниже фрагмент GeoJSON:
{ "geometries": [ { "deviceId": "device_01", "udId": "64f71aa5-bbee-942d-e351-651a6679a7da", "geometryId": "1", "distance": -999.0, "nearestLat": 47.637985, "nearestLon": -122.133907 }, { "deviceId": "device_01", "udId": "64f71aa5-bbee-942d-e351-651a6679a7da", "geometryId": "2", "distance": 999.0, "nearestLat": 47.637945, "nearestLon": -122.133683 } ], "expiredGeofenceGeometryId": [], "invalidPeriodGeofenceGeometryId": [], "isEventPublished": true }
В предыдущем ответе GeoJSON видно, что оборудование покинуло основную геозону объекта. В результате параметр имеет true
значение , и Operations Manager получает уведомление по электронной почте, isEventPublished
указывающее, что оборудование завершило геозону.
Вы также можете отправлять Уведомления по электронной почте с помощью сетки событий и Logic Apps. Дополнительные сведения см. в Сетка событий Azure обработчиков событий.
Очистка ресурсов
Нет ресурсов, требующих очистки.