Zelfstudie: Een geofence instellen met behulp van Azure Kaarten

In deze zelfstudie leert u de basisbeginselen van het maken en gebruiken van geofence-services van Azure Maps.

Bekijk het volgende scenario:

Een bouwsitebeheerder moet de apparatuur bijhouden die een bouwterrein binnenkomt en verlaat. Wanneer een apparaat deze perimeters verlaat of binnenkomt, wordt er een e-mailmelding naar Operations Manager verzonden.

Azure Kaarten biedt services voor het bijhouden van apparatuur die het bouwgebied binnenkomt en verlaat. In deze zelfstudie leert u het volgende:

  • Upload Geofencing GeoJSON-gegevens waarmee de bouwterreinen worden gedefinieerd die u wilt bewaken. U uploadt geofences als veelhoekcoördinaten naar uw Azure-opslagaccount en gebruikt vervolgens de gegevensregisterservice om die gegevens te registreren bij uw Azure Kaarten-account.
  • Het instellen van twee logische apps die, wanneer ze worden geactiveerd, e-mailmeldingen sturen naar de Operations Manager van het bouwterrein wanneer er apparatuur het geofence-gebied binnenkomt of verlaat.
  • Gebruik Azure Event Grid om een abonnement te nemen op Enter- en Exit-gebeurtenissen voor uw Azure Maps-geofence. U stelt twee webhook-gebeurtenisabonnementen in die de HTTP-eindpunten aanroepen die in uw twee logische apps zijn gedefinieerd. De logische apps sturen vervolgens de juiste e-mailmeldingen over apparatuur die de geofence verlaat of binnenkomt.
  • Gebruik Search Geofence Get API om meldingen te krijgen wanneer een apparaat de geofence-gebieden binnenkomt of verlaat.

Vereisten

In deze zelfstudie wordt de Postman-toepassing gebruikt, maar u kunt een andere API-ontwikkelomgeving gebruiken.

Belangrijk

Vervang in de URL-voorbeelden door {Your-Azure-Maps-Subscription-key} uw Azure Kaarten-abonnementssleutel.

Geofencing GeoJSON-gegevens uploaden

In deze zelfstudie ziet u hoe u geofencing GeoJSON-gegevens uploadt die een FeatureCollection. De FeatureCollection bevat twee geofences waarmee u veelhoekgebieden binnen het bouwterrein definieert. De eerste geofence heeft geen tijdverloop of beperkingen. De tweede kan alleen worden opgevraagd tijdens kantooruren (9:00-17:00 uur in de Pacific Time-zone) en is na 1 januari 2022 niet meer geldig. Zie Geofencing GeoJSON data (Geofencing GeoJSON-gegevens) voor meer informatie over de GeoJSON-indeling.

Maak het geofence JSON-bestand met behulp van de volgende geofence-gegevens. Vervolgens uploadt u dit bestand naar uw Azure-opslagaccount.

{
   "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
             }
           ]
         }
       }
     }
   ]
}

Volg de stappen die worden beschreven in het artikel Gegevensregister maken om het geofence JSON-bestand te uploaden naar uw Azure-opslagaccount en het te registreren in uw Azure Kaarten-account.

Belangrijk

Noteer de unieke id (udid)-waarde die u nodig hebt. U udid verwijst naar de geofence die u hebt geüpload naar uw Azure-opslagaccount vanuit uw broncode en HTTP-aanvragen.

Werkstromen maken in Azure Logic Apps

Maak vervolgens twee logische app-eindpunten die een e-mailmelding activeren.

De logische apps maken:

  1. Meld u aan bij de Azure-portal.

  2. Selecteer in de linkerbovenhoek van Azure Portal Een resource maken.

  3. Typ logische app in het vak Search-service s en Marketplace.

  4. Selecteer logische app in de resultaten. Ten slotte selecteert u Maken.

  5. Voer op de pagina Logische app de volgende waarden in:

    • Het Abonnement dat u wilt gebruiken voor deze logische app.
    • De naam van de Resourcegroep voor deze logische app. U kunt kiezen om een nieuwe of bestaande resourcegroep te gebruiken.
    • De Logische-app-naam van uw logische app. In dit geval gebruiken we Equipment-Enter als naam.
    • Selecteer Verbruik als het type Abonnement. Zie facturerings- en prijsmodellen in de documentatie van de logische app voor meer informatie.

    Laat in deze zelfstudie alle andere waarden op de standaardinstellingen staan.

    Screenshot of create a logic app.

  6. Wanneer u klaar bent, selecteert u Controleren en maken. Nadat Azure de informatie over uw logische app-resource heeft gevalideerd, selecteert u Maken.

  7. Wanneer de implementatie is voltooid, selecteert u Ga naar de resource.

  8. Selecteer de ontwerper van logische apps in de sectie Ontwikkelhulpprogramma's in het menu van de linkerkant en schuif omlaag naar de sectie Beginnen met een algemene triggersectie. Selecteer Wanneer een HTTP-aanvraag wordt ontvangen.

    Screenshot of create a logic app HTTP trigger.

  9. Selecteer Opslaan in de rechterbovenhoek van Logic App Designer. De HTTP POST-URL wordt automatisch gegenereerd. Sla de URL op. U hebt deze in de volgende sectie nodig om een gebeurteniseindpunt te maken.

    Screenshot of Logic App HTTP Request URL and JSON.

  10. Selecteer + Nieuwe stap.

  11. Typ outlook.com email in het zoekvak. Schuif in de lijst Acties omlaag en selecteer Een e-mailbericht verzenden (V2).

    Screenshot of create a logic app designer.

  12. Meld u aan bij uw Outlook-account. Zorg ervoor dat u Ja selecteert om de logische app toegang te geven tot het account. Vul de velden in voor het verzenden van een e-mail.

    Screenshot of create a logic app send email step.

    Tip

    U kunt de gegevens van een GeoJSON-reactie, zoals geometryId of deviceId, ophalen in uw e-mailmeldingen. U kunt Logic Apps zo configureren dat de gegevens die door Event Grid worden verzonden, worden gelezen. Zie Zelfstudie: E-mailmeldingen verzenden over Azure IoT Hub-gebeurtenissen met behulp van Event Grid en Logic Apps voor informatie over het configureren van Logic Apps om gebeurtenisgegevens te gebruiken en door te geven aan e-mailmeldingen.

  13. Selecteer Opslaan in de linkerbovenhoek van Logic App Designer.

  14. Als u een tweede logische app wilt maken om de manager op de hoogte te stellen wanneer apparatuur de bouwplaats verlaat, herhaalt u hetzelfde proces. Noem de logische app Equipment-Exit.

Abonnementen op Azure Maps-gebeurtenissen maken

Azure Maps ondersteunt drie typen gebeurtenissen. In deze zelfstudie ziet u hoe u abonnementen maakt voor de volgende twee gebeurtenissen:

  • Geofence voert gebeurtenissen in
  • Geofence-afsluitgebeurtenissen

Maak geofence exit en voer gebeurtenisabonnementen in:

  1. Selecteer Abonnementen in uw Azure Kaarten-account.

  2. Selecteer de naam van uw abonnement.

  3. Selecteer gebeurtenissen in het instellingenmenu.

    Screenshot of go to Azure Maps account events.

  4. Selecteer + Gebeurtenisabonnement op de pagina gebeurtenissen.

    Screenshot of create an Azure Maps events subscription.

  5. Voer op de pagina Gebeurtenisabonnement maken de volgende waarden in:

    • De Naam van het gebeurtenisabonnement.
    • Het Gebeurtenisschema moet Gebeurtenisrasterschema zijn.
    • De Naam van het systeemonderwerp voor dit gebeurtenisabonnement, die in dit geval Contoso-Construction is.
    • Kies voor Filteren op gebeurtenistypen het gebeurtenistype Geofence Entered.
    • Kies Web Hook voor Eindpunttype.
    • Voor Eindpunt kopieert u de HTTP POST-URL voor het Logic App Enter-eindpunt dat u in de vorige sectie hebt gemaakt. Als u bent vergeten deze op te slaan, kunt u teruggaan naar Logic App Designer en de URL kopiëren uit de HTTP-triggerstap.

    Screenshot of Azure Maps events subscription details.

  6. Selecteer Maken.

  7. Herhaal hetzelfde proces voor de geofence-afsluitgebeurtenis. Zorg ervoor dat u het gebeurtenistype kiest Geofence Exited .

Spatial Geofence Get API gebruiken

Vervolgens gebruiken we de Spatial Geofence Get-API om e-mailmeldingen naar Operations Manager te verzenden wanneer een apparaat de geofences binnenkomt of verlaat.

Elk apparaat heeft een deviceId. In deze zelfstudie volgt u één apparaat, waarvan de unieke ID device_1 is.

Het volgende diagram laat de vijf locaties van het apparaat in de loop der tijd zien, te beginnen bij de Start-locatie, ergens buiten de geofences. Voor deze zelfstudie is de beginlocatie niet gedefinieerd, omdat u geen query's uitvoert op het apparaat op die locatie.

Wanneer u een query uitvoert op de Spatial Geofence Get-API met een locatie van apparatuur die aangeeft dat de initiële geofence-vermelding of -uitgang aangeeft, roept Event Grid het juiste eindpunt van de logische app aan om een e-mailmelding naar Operations Manager te verzenden.

Elk van de volgende secties verzendt API-aanvragen met behulp van de vijf verschillende locatiecoördinaten van de apparatuur.

Diagram of geofence map in Azure Maps

Apparaatlocatie 1 (47.638237,-122.132483)

  1. Selecteer Nieuw in de Postman-app.

  2. Selecteer HTTP-aanvraag in het venster Nieuw maken.

  3. Voer een aanvraagnaam in voor de aanvraag, zoals Locatie 1.

  4. Selecteer de GET HTTP-methode.

  5. Voer de volgende URL in. De aanvraag moet eruitzien als de volgende URL (vervang deze door {udid} de udid url die u hebt opgeslagen in de sectie Geofencing GeoJSON-gegevens uploaden).

    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
    

    Notitie

    Vervang {geography} door uw geografische bereik. Zie azure Kaarten service geografisch bereik en de Spatial Geofence Get-API voor meer informatie.

  6. Selecteer Verzenden.

  7. Het antwoord moet het volgende GeoJSON-fragment leuk vinden:

    {
      "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
    }
    

In het voorgaande GeoJSON-antwoord betekent de negatieve afstand van de geofence van de hoofdsite dat het apparaat zich in de geofence bevindt. De positieve afstand van de subsite-geofence betekent dat de apparatuur zich buiten de subsite-geofence bevindt. Omdat dit de eerste keer is dat dit apparaat zich in de geofence van de hoofdsite bevindt, wordt de parameter isEventPublished ingesteld op true. Operations Manager ontvangt een e-mailmelding dat apparatuur de geofence heeft ingevoerd.

Locatie 2 (47.63800,-122.132531)

  1. Selecteer Nieuw in de Postman-app.

  2. Selecteer HTTP-aanvraag in het venster Nieuw maken.

  3. Voer een aanvraagnaam in voor de aanvraag, zoals Locatie 2.

  4. Selecteer de GET HTTP-methode.

  5. Voer de volgende URL in. De aanvraag moet eruitzien als de volgende URL (vervang deze door {udid} de udid url die u hebt opgeslagen in de sectie Geofencing GeoJSON-gegevens uploaden).

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

  7. Het antwoord moet het volgende GeoJSON-fragment leuk vinden:

    {
      "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
    }
    

In het voorgaande GeoJSON-antwoord is het apparaat in de geofence van de hoofdsite gebleven en is niet de subsite-geofence binnengegaan. Als gevolg hiervan wordt de isEventPublished parameter ingesteld op falseen ontvangt Operations Manager geen e-mailmeldingen.

Locatie 3 (47.63810783315048,-122.13336020708084)

  1. Selecteer Nieuw in de Postman-app.

  2. Selecteer HTTP-aanvraag in het venster Nieuw maken.

  3. Voer een aanvraagnaam in voor de aanvraag, zoals Locatie 3.

  4. Selecteer de GET HTTP-methode.

  5. Voer de volgende URL in. De aanvraag moet eruitzien als de volgende URL (vervang deze door {udid} de udid url die u hebt opgeslagen in de sectie Geofencing GeoJSON-gegevens uploaden).

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

  7. Het antwoord moet het volgende GeoJSON-fragment leuk vinden:

    {
      "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
    }
    

In het voorgaande GeoJSON-antwoord is het apparaat in de geofence van de hoofdsite gebleven, maar is de subsite-geofence binnengegaan. Als gevolg hiervan wordt de parameter isEventPublished ingesteld op true. Operations Manager ontvangt een e-mailmelding die aangeeft dat de apparatuur een geofence heeft ingevoerd.

Notitie

Als het apparaat na kantooruren naar de subsite zou zijn gegaan, zou er geen gebeurtenis worden gepubliceerd en zou de Operations Manager geen meldingen ontvangen.

Locatie 4 (47.637988,-122.1338344)

  1. Selecteer Nieuw in de Postman-app.

  2. Selecteer HTTP-aanvraag in het venster Nieuw maken.

  3. Voer een aanvraagnaam in voor de aanvraag, zoals Locatie 4.

  4. Selecteer de GET HTTP-methode.

  5. Voer de volgende URL in. De aanvraag moet eruitzien als de volgende URL (vervang deze door {udid} de udid url die u hebt opgeslagen in de sectie Geofencing GeoJSON-gegevens uploaden).

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

  7. Het antwoord moet het volgende GeoJSON-fragment leuk vinden:

    {
      "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
    }
    

In het voorgaande GeoJSON-antwoord is het apparaat in de geofence van de hoofdsite gebleven, maar is de subsite-geofence uitgegaan. U ziet echter dat de waarde userTime na de expiredTime komt, zoals gedefinieerd in de geofence-gegevens. Als gevolg hiervan wordt de isEventPublished parameter ingesteld op falseen ontvangt Operations Manager geen e-mailmelding.

Locatie 5 (47.63799, -122.134505)

  1. Selecteer Nieuw in de Postman-app.

  2. Selecteer HTTP-aanvraag in het venster Nieuw maken.

  3. Voer een aanvraagnaam in voor de aanvraag, zoals Locatie 5.

  4. Selecteer de GET HTTP-methode.

  5. Voer de volgende URL in. De aanvraag moet eruitzien als de volgende URL (vervang deze door {udid} de udid url die u hebt opgeslagen in de sectie Geofencing GeoJSON-gegevens uploaden).

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

  7. Het antwoord moet het volgende GeoJSON-fragment leuk vinden:

    {
      "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
    }
    

In het voorgaande GeoJSON-antwoord heeft het apparaat de geofence van de hoofdsite verlaten. Als gevolg hiervan wordt de isEventPublished parameter ingesteld op trueen ontvangt Operations Manager een e-mailmelding die aangeeft dat de apparatuur een geofence heeft verlaten.

U kunt ook e-mailmeldingen verzenden met Event Grid en Logic Apps. Zie Gebeurtenis-handlers in Azure Event Grid voor meer informatie.

Resources opschonen

Er zijn geen resources die moeten worden opgeruimd.

Volgende stappen