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 :

  1. Connectez-vous au portail Azure.

  2. En haut à gauche du portail Azure, sélectionnez Créer une ressource.

  3. Dans la zone service Search et place de marché, tapez Logic App.

  4. Sous Résultats, sélectionnez Application logique. Sélectionnez ensuite Create (Créer).

  5. 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.

    Screenshot of create a logic app.

  6. 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.

  7. Une fois le déploiement terminé, sélectionnez Accéder à la ressource.

  8. 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.

    Screenshot of create a logic app HTTP trigger.

  9. 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.

    Screenshot of Logic App HTTP Request URL and JSON.

  10. Sélectionnez + Nouvelle étape.

  11. 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) .

    Screenshot of create a logic app designer.

  12. 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.

    Screenshot of create a logic app send email step.

    Conseil

    Vous pouvez récupérer des données de réponse GeoJSON, telles que geometryId ou deviceId, 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.

  13. Dans l’angle supérieur gauche du Concepteur d’application logique, sélectionnez Enregistrer.

  14. 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 :

  1. Dans votre compte Azure Maps, sélectionnez Abonnements.

  2. Sélectionnez le nom de votre abonnement.

  3. Dans le menu des paramètres, sélectionnez Événements.

    Screenshot of go to Azure Maps account events.

  4. Dans la page des événements, sélectionnez + Abonnement à un événement.

    Screenshot of create an Azure Maps events subscription.

  5. 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).

    Screenshot of Azure Maps events subscription details.

  6. Cliquez sur Créer.

  7. 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.

Diagram of geofence map in Azure Maps

Localisation de l’équipement 1 (47.638237,-122.132483)

  1. Dans l’application Postman, sélectionnez New (Nouveau).

  2. Dans la fenêtre Créer, sélectionnez Requête HTTP.

  3. Entrez un Nom de requête pour la requête, par exemple Emplacement 1.

  4. Sélectionnez la méthode HTTP GET.

  5. 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.

  6. Sélectionnez Envoyer.

  7. 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)

  1. Dans l’application Postman, sélectionnez New (Nouveau).

  2. Dans la fenêtre Créer, sélectionnez Requête HTTP.

  3. Entrez un Nom de requête pour la requête, par exemple Emplacement 2.

  4. Sélectionnez la méthode HTTP GET.

  5. 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
    
  6. Sélectionnez Envoyer.

  7. 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)

  1. Dans l’application Postman, sélectionnez New (Nouveau).

  2. Dans la fenêtre Créer, sélectionnez Requête HTTP.

  3. Entrez un Nom de requête pour la requête, par exemple Emplacement 3.

  4. Sélectionnez la méthode HTTP GET.

  5. 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
    
  6. Sélectionnez Envoyer.

  7. 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)

  1. Dans l’application Postman, sélectionnez New (Nouveau).

  2. Dans la fenêtre Créer, sélectionnez Requête HTTP.

  3. Entrez un Nom de requête pour la requête, par exemple Emplacement 4.

  4. Sélectionnez la méthode HTTP GET.

  5. 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
    
  6. Sélectionnez Envoyer.

  7. 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)

  1. Dans l’application Postman, sélectionnez New (Nouveau).

  2. Dans la fenêtre Créer, sélectionnez Requête HTTP.

  3. Entrez un Nom de requête pour la requête, par exemple Emplacement 5.

  4. Sélectionnez la méthode HTTP GET.

  5. 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
    
  6. Sélectionnez Envoyer.

  7. 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.

Étapes suivantes