Tutoriel : Configurer une limite géographique à l’aide d’Azure Maps
Ce tutoriel présente les principes de base de la création et de l’utilisation des services de limite géographique Azure Maps.
Examinez le cas suivant :
Un responsable de chantier doit suivre les équipements lorsqu’ils entrent et sortent des périmètres d’une zone de construction. Chaque fois qu’un équipement entre dans ces périmètres ou en sort, une notification par e-mail est envoyée à l’Operations Manager.
Azure Maps offre un certain nombre de services permettant de prendre en charge le suivi des équipements qui entrent dans la zone de construction et en sortent. Ce didacticiel présente les procédures suivantes :
- Charger des données GeoJSON de geofencing qui définissent les zones de site de construction que vous souhaitez superviser. Vous allez charger les limites géographiques en tant que coordonnées de polygones dans votre compte de stockage Azure, puis utiliser le service de registre de données pour inscrire ces données auprès de votre compte Azure Maps.
- Configurer deux applications logiques qui, quand elles sont déclenchées (quand un équipement entre dans la limite géographique ou en sort), envoient des notifications par e-mail au chef d’exploitation du site de construction.
- Utiliser Azure Event Grid afin de vous abonner aux événements d’entrée et de sortie pour votre limite géographique Azure Maps. Vous configurez deux abonnements aux événements webhook, qui appellent les points de terminaison HTTP définis dans vos deux applications logiques. Celles-ci envoient ensuite les notifications par e-mail appropriées, relatives à l’équipement qui entre dans la limite géographique ou en sort.
- Utiliser l’API Get Search Geofence pour recevoir des notifications quand un équipement entre dans les zones de limite géographique ou en sort.
Prérequis
Ce tutoriel utilise l’application Postman, mais vous pouvez utiliser un autre environnement de développement d’API.
Important
Dans les exemples d’URL, remplacez {Your-Azure-Maps-Subscription-key}
par votre clé d’abonnement Azure Maps.
Charger des données de geofencing GeoJSON
Ce tutoriel montre comment charger des données GeoJSON de geofencing qui contiennent un FeatureCollection
. La FeatureCollection
contient deux limites géographiques qui définissent des zones polygonales dans le site de construction. Aucune expiration ni restriction ne sont associées à la première limite géographique. La deuxième ne peut être interrogée que pendant les heures de bureau (de 9h00 à 17h00 dans le fuseau horaire Pacifique) et n’est plus valide après le 1er janvier 2022. Pour plus d’informations sur le format GeoJSON, consultez Données Geofencing GeoJSON.
Créez le fichier JSON de limite géographique à l’aide des données de limite géographique suivantes. Vous allez ensuite charger ce fichier dans votre compte de stockage 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
}
]
}
}
}
]
}
Suivez les étapes décrites dans l’article Comment créer un registre de données pour charger le fichier JSON de limite géographique dans votre compte de stockage Azure et l’inscrire dans votre compte Azure Cartes.
Important
Assurez-vous de noter la valeur de l'identifiant unique (udid
), vous en aurez besoin. udid
est le moyen de référencer la barrière géographique que vous avez chargée dans votre compte de stockage Azure à partir de votre code source et requête HTTP.
Créer des workflows dans Azure Logic Apps
Ensuite, créez deux points de terminaison d’application logique qui déclenchent une notification par e-mail.
Pour créer les applications logiques :
Connectez-vous au portail Azure.
En haut à gauche du portail Azure, sélectionnez Créer une ressource.
Dans la zone service Search et place de marché, tapez Logic App.
Sous Résultats, sélectionnez Application logique. Sélectionnez ensuite Create (Créer).
Dans la page Application logique, entrez les valeurs suivantes :
- Sous Abonnement, l’abonnement à utiliser pour cette application logique.
- Sous Groupe de ressources, le nom du groupe de ressources pour cette application logique. Vous pouvez choisir de Créer ou d’utiliser un groupe de ressources Existant.
- Sous Nom de l’application logique, le nom de votre application logique. En l’occurrence, utilisez le nom
Equipment-Enter
. - Sélectionnez Consommation comme type de plan. Pour plus d’informations, consultez les modèles de facturation et de tarification dans la documentation de l’application logique.
Pour les besoins de ce tutoriel, conservez toutes les autres valeurs par défaut.
Lorsque vous avez terminé, sélectionnez Vérifier + Créer. Une fois qu’Azure a validé les informations relatives à votre ressource d’application logique, sélectionnez Créer.
Une fois le déploiement terminé, sélectionnez Accéder à la ressource.
Sélectionnez le concepteur d’applications logiques dans la section Outils de développement dans le menu de gauche, faites défiler jusqu’à la section Démarrer avec une section déclencheur commune. Sélectionnez Lors de la réception d’une demande HTTP.
Dans l’angle supérieur droit du concepteur d’application logique, sélectionnez Enregistrer. L’URL HTTP POST est générée automatiquement. Enregistrez l’URL. Vous en aurez besoin dans la section suivante pour créer un point de terminaison d’événement.
Sélectionnez + Nouvelle étape.
Dans la zone de recherche, tapez
outlook.com email
. Faites défiler la liste Actions vers le bas et sélectionnez Envoyer un e-mail (V2) .Connectez-vous à votre compte Outlook. Veillez à sélectionner Oui pour autoriser l’application logique à accéder au compte. Renseignez les champs pour l’envoi d’un e-mail.
Conseil
Vous pouvez récupérer des données de réponse GeoJSON, telles que
geometryId
oudeviceId
, dans vos notifications par e-mail. Vous pouvez configurer Logic Apps pour lire les données envoyées par Event Grid. Pour plus d’informations sur la configuration de Logic Apps pour consommer et transmettre des données d’événement dans des notifications par e-mail, consultez Tutoriel : Envoyer des notifications par e-mail concernant des événements Azure IoT Hub à l’aide d’Event Grid et de Logic Apps.Dans l’angle supérieur gauche du Concepteur d’application logique, sélectionnez Enregistrer.
Pour créer une deuxième application logique afin de notifier le chef d’exploitation quand un équipement sort du site de construction, répétez la même procédure. Nommez l’application logique
Equipment-Exit
.
Créer des abonnements aux événements Azure Maps
Azure Maps prend en charge trois types d’événements. Ce tutoriel montre comment créer des abonnements aux deux événements suivants :
- Événements d’entrée de limite géographique
- Événements de sortie de limite géographique
Créez une sortie de limite géographique et entrez des abonnements aux événements :
Dans votre compte Azure Maps, sélectionnez Abonnements.
Sélectionnez le nom de votre abonnement.
Dans le menu des paramètres, sélectionnez Événements.
Dans la page des événements, sélectionnez + Abonnement à un événement.
Dans la page Créer un abonnement aux événements, entrez les valeurs suivantes :
- Nom de l’abonnement.
- Schéma d’événement : Schéma Event Grid.
- Nom de la rubrique système pour cet abonnement aux événements, en l’occurrence
Contoso-Construction
. - Pour Filtrer sur les types d’événements, choisissez le type d’événement
Geofence Entered
. - Pour Type de point de terminaison, choisissez
Web Hook
. - Pour Point de terminaison, copiez l’URL HTTP POST du point de terminaison d’entrée de l’application logique que vous avez créé dans la section précédente. Si vous avez oublié de l’enregistrer, vous pouvez simplement revenir au concepteur d’application logique et le copier (à partir de l’étape relative au déclencheur HTTP).
Cliquez sur Créer.
Répétez le même processus pour l’événement de sortie de la limite géographique. Veillez à choisir le type d’événement
Geofence Exited
.
Utiliser l’API Get Spatial Geofence
Ensuite, nous allons utiliser l’API Get Spatial Geofence pour envoyer des notifications par e-mail à l’Operations Manager quand un équipement entre dans les limites géographiques ou en sort.
Chaque équipement a un deviceId
. Dans ce tutoriel, vous suivez un seul équipement dont l’ID unique est device_1
.
Le schéma ci-dessous montre les cinq localisations de l’équipement au fil du temps en commençant par la localisation Start, située en dehors des limites géographiques. Pour les besoins de ce tutoriel, la localisation Start n’est pas définie, car vous n’interrogez pas l’appareil à cet emplacement.
Quand vous interrogez l’API Get Spatial Geofence avec une localisation d’équipement indiquant l’entrée ou la sortie initiale dans la limite géographique, Event Grid appelle le point de terminaison d’application logique approprié pour envoyer une notification par e-mail à l’Operations Manager.
Chacune des sections suivantes effectue des requêtes d’API avec chacune des cinq coordonnées de localisation de l’équipement.
Localisation de l’équipement 1 (47.638237,-122.132483)
Dans l’application Postman, sélectionnez New (Nouveau).
Dans la fenêtre Créer, sélectionnez Requête HTTP.
Entrez un Nom de requête pour la requête, par exemple Emplacement 1.
Sélectionnez la méthode HTTP GET.
Entrez l’URL suivante. La requête doit ressembler à l’URL suivante (remplacer
{udid}
par l’udid
que vous avez sauvegardé dans la sectionCharger les) données de geofencing 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
Remarque
Remplacez {geography} par votre étendue géographique. Pour plus d’informations, consultez l’étendue géographique du service Azure Maps et l’API Spatial Geofence Get.
Sélectionnez Envoyer.
La réponse doit ressembler au fragment GeoJSON suivant :
{ "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 }
Dans la réponse GeoJSON précédente, la distance négative par rapport à la limite géographique du site principal signifie que l’équipement se trouve à l’intérieur de la limite géographique. La distance positive par rapport à la limite géographique de site secondaire signifie que le matériel se trouve en dehors de la limite géographique du site secondaire. Étant donné qu’il s’agit de la première fois que cet appareil a été localisé dans la limite géographique du site principal, le paramètre isEventPublished
est défini sur true
. L’Operations Manager reçoit une notification par e-mail indiquant que l’équipement est entré dans la limite géographique.
Localisation 2 (47.63800,-122.132531)
Dans l’application Postman, sélectionnez New (Nouveau).
Dans la fenêtre Créer, sélectionnez Requête HTTP.
Entrez un Nom de requête pour la requête, par exemple Emplacement 2.
Sélectionnez la méthode HTTP GET.
Entrez l’URL suivante. La requête doit ressembler à l’URL suivante (remplacer
{udid}
par l’udid
que vous avez sauvegardé dans la sectionCharger les) données de geofencing 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
Sélectionnez Envoyer.
La réponse doit ressembler au fragment GeoJSON suivant :
{ "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 }
Dans la réponse GeoJSON précédente, l’équipement est resté dans la limite géographique du site principal et n’est pas entré dans la limite géographique du site secondaire. Par conséquent, le paramètre isEventPublished
est donc défini sur false
, et l’Operations Manager ne reçoit aucune notification par e-mail.
Localisation 3 (47.63810783315048,-122.13336020708084)
Dans l’application Postman, sélectionnez New (Nouveau).
Dans la fenêtre Créer, sélectionnez Requête HTTP.
Entrez un Nom de requête pour la requête, par exemple Emplacement 3.
Sélectionnez la méthode HTTP GET.
Entrez l’URL suivante. La requête doit ressembler à l’URL suivante (remplacer
{udid}
par l’udid
que vous avez sauvegardé dans la sectionCharger les) données de geofencing 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
Sélectionnez Envoyer.
La réponse doit ressembler au fragment GeoJSON suivant :
{ "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 }
Dans la réponse GeoJSON précédente, l’équipement est resté dans la limite géographique du site principal, mais il est entré dans la limite géographique du site secondaire. Par conséquent, le paramètre isEventPublished
est défini sur true
. L’Operations Manager reçoit une notification par e-mail indiquant que l’équipement est entré dans une limite géographique.
Notes
Si l’équipement est entré dans le site secondaire après les heures d’ouverture, aucun événement n’est publié et le chef d’exploitation ne reçoit aucune notification.
Localisation 4 (47.637988,-122.1338344)
Dans l’application Postman, sélectionnez New (Nouveau).
Dans la fenêtre Créer, sélectionnez Requête HTTP.
Entrez un Nom de requête pour la requête, par exemple Emplacement 4.
Sélectionnez la méthode HTTP GET.
Entrez l’URL suivante. La requête doit ressembler à l’URL suivante (remplacer
{udid}
par l’udid
que vous avez sauvegardé dans la sectionCharger les) données de geofencing 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
Sélectionnez Envoyer.
La réponse doit ressembler au fragment GeoJSON suivant :
{ "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 }
Dans la réponse GeoJSON précédente, l’équipement est resté dans la limite géographique du site principal, mais il est sorti de la limite géographique du site secondaire. Notez toutefois que la valeur userTime
est postérieure à la valeur expiredTime
définie dans les données de limite géographique. Par conséquent, le paramètre isEventPublished
est donc défini sur false
, et l’Operations Manager ne reçoit aucune notification par e-mail.
Localisation 5 (47.63799, -122.134505)
Dans l’application Postman, sélectionnez New (Nouveau).
Dans la fenêtre Créer, sélectionnez Requête HTTP.
Entrez un Nom de requête pour la requête, par exemple Emplacement 5.
Sélectionnez la méthode HTTP GET.
Entrez l’URL suivante. La requête doit ressembler à l’URL suivante (remplacer
{udid}
par l’udid
que vous avez sauvegardé dans la sectionCharger les) données de geofencing 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
Sélectionnez Envoyer.
La réponse doit ressembler au fragment GeoJSON suivant :
{ "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 }
Dans la réponse GeoJSON précédente, l’équipement est sorti de la limite géographique du site principal. Par conséquent, le paramètre isEventPublished
est donc défini sur true
, et l’Operations Manager reçoit une notification par e-mail indiquant que l’équipement est sorti d’une limite géographique.
Vous pouvez également envoyer des Notifications par e-mail à l’aide d’Event Grid et de Logic Apps. Pour plus d’informations, consultez Gestionnaires d’événements dans Azure Event Grid.
Nettoyer les ressources
Aucune ressource ne nécessite un nettoyage.