Självstudie: Konfigurera ett geofence med hjälp av Azure Maps
I den här självstudien går vi igenom grunderna för att skapa och använda Azure Kartor geofence-tjänster.
Föreställ dig följande scenario:
En byggarbetsplatschef måste spåra utrustning när den kommer in och lämnar perimetern för ett byggområde. När en utrustning avslutas eller går in i dessa perimeterer skickas ett e-postmeddelande till driftchefen.
Azure Kartor tillhandahåller ett antal tjänster för att stödja spårning av utrustning som kommer till och lämnar byggområdet. I de här självstudierna får du:
- Upload Geofencing GeoJSON-data som definierar de byggarbetsplatser som du vill övervaka. Du använder Data Upload-API:et för att ladda upp geofences som polygonkoordinater till ditt Azure Kartor konto.
- Konfigurera två logikappar som, när de utlöses, skickar e-postmeddelanden till driftchefen för byggarbetsplatsen när utrustningen kommer in i och lämnar geofence-området.
- Använd Azure Event Grid för att prenumerera på enter- och exit-händelser för din Azure Kartor geofence. Du ställer in två webhook-händelseprenumerationer som anropar HTTP-slutpunkterna som definierats i dina två logikappar. Logikapparna skickar sedan lämpliga e-postaviseringar om utrustning som rör sig utanför eller anger geofence.
- Använd Search Geofence Get API för att ta emot meddelanden när en del av utrustningen avslutas och går in i geofence-områdena.
Förutsättningar
- Skapa ett Azure Kartor konto.
- Skaffa en primär prenumerationsnyckel, som även kallas primärnyckel eller prenumerationsnyckel.
I den här självstudien används Postman-programmet, men du kan använda en annan API-utvecklingsmiljö.
Upload geofencing geoJSON-data
I den här självstudien laddar du upp geofencing av GeoJSON-data som innehåller en FeatureCollection . FeatureCollectioninnehåller två geofences som definierar polygonala områden inom byggarbetsplatsen. Den första geofence har ingen tidsförfallotid eller begränsningar. Den andra kan bara efterfrågas under arbetstid (9:00-17:00 i tidszonen Stillahavsområdet) och är inte längre giltig efter 1 januari 2022. Mer information om GeoJSON-formatet finns i Geofencing GeoJSON-data.
Tips
Du kan uppdatera dina geofencingdata när som helst. Mer information finns i Data Upload API.
Så här laddar du upp geofencing-GeoJSON-data:
I Postman-appen väljer du Nytt.
I fönstret Skapa ny väljer du HTTP-begäran.
Ange ett begärandenamn för begäran, till exempel POST GeoJSON Data Upload.
Välj POST HTTP-metoden.
Ange följande URL. Begäran bör se ut som följande URL (ersätt
{Azure-Maps-Primary-Subscription-key}med din primära prenumerationsnyckel):https://us.atlas.microsoft.com/mapData?subscription-key={Your-Azure-Maps-Primary-Subscription-key}&api-version=2.0&dataFormat=geojsonParametern
geojsoni URL-sökvägen representerar dataformatet för de data som laddas upp.Välj fliken brödtext.
I listrutan väljer du raw och JSON.
Kopiera följande GeoJSON-data och klistra sedan in dem i fönstret Brödtext:
{ "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 } ] } } } ] }Välj Skicka.
I svarsfönstret väljer du fliken Rubriker.
Kopiera värdet för nyckeln Operation-Location, som är
status URL. Vi använder för attstatus URLkontrollera status för GeoJSON-datauppladdningen.https://us.atlas.microsoft.com/mapData/operations/{operationId}?api-version=2.0
Kontrollera status för Uppladdning av GeoJSON-data
Kontrollera status för GeoJSON-data och hämta dess unika ID ( udid ):
Välj Nytt.
I fönstret Skapa ny väljer du HTTP-begäran.
Ange ett begärandenamn för begäran, till exempel GET Data Upload Status.
Välj METODEN GET HTTP.
Ange den
status URLsom du kopierade Upload Geofencing GeoJSON-data. Begäran bör se ut som följande URL (ersätt{Azure-Maps-Primary-Subscription-key}med din primära prenumerationsnyckel):https://us.atlas.microsoft.com/mapData/{operationId}?api-version=2.0&subscription-key={Your-Azure-Maps-Primary-Subscription-key}Välj Skicka.
I svarsfönstret väljer du fliken Rubriker.
Kopiera värdet för nyckeln Resource-Location, som är
resource location URL.resource location URLinnehåller den unika identifieraren ( ) förudiduppladdade data. Spara förudidatt fråga Get Geofence API i det sista avsnittet av den här självstudien.
(Valfritt) Hämta GeoJSON-datametadata
Du kan hämta metadata från uppladdade data. Metadata innehåller information som resursplatsens URL, skapandedatum, uppdaterat datum, storlek och uppladdningsstatus.
Så här hämtar du innehållsmetadata:
Välj Nytt.
I fönstret Skapa ny väljer du HTTP-begäran.
Ange ett begärandenamn för begäran, till exempel GET Data Upload Metadata.
Välj METODEN GET HTTP.
Ange den
resource Location URLsom du kopierade i Kontrollera Uppladdningsstatus för GeoJSON-data. Begäran bör se ut som följande URL (ersätt{Azure-Maps-Primary-Subscription-key}med din primära prenumerationsnyckel):https://us.atlas.microsoft.com/mapData/metadata/{udid}?api-version=2.0&subscription-key={Your-Azure-Maps-Primary-Subscription-key}I svarsfönstret väljer du fliken Brödtext. Metadata bör se ut som följande JSON-fragment:
{ "udid": "{udid}", "location": "https://us.atlas.microsoft.com/mapData/6ebf1ae1-2a66-760b-e28c-b9381fcff335?api-version=2.0", "created": "5/18/2021 8:10:32 PM +00:00", "updated": "5/18/2021 8:10:37 PM +00:00", "sizeInBytes": 946901, "uploadStatus": "Completed" }
Skapa arbetsflöden i Azure Logic Apps
Nu ska vi skapa två logikappslutpunkter som utlöser en e-postavisering.
Så här skapar du logikapparna:
Logga in på Azure-portalen.
I det övre vänstra hörnet i Azure Portal väljer du Skapa en resurs.
I rutan Sök på Marketplace skriver du Logic App.
I resultatet väljer du Logikapp. Välj sedan Skapa.
Ange följande värden på sidan Logikapp:
- Den prenumeration som du vill använda för den här logikappen.
- Resursgruppens namn för den här logikappen. Du kan välja att Skapa ny eller Använd befintlig resursgrupp.
- Logikappens namn på din logikapp. I det här fallet använder
Equipment-Enterdu som namn.
I den här självstudien behåller du alla andra värden på standardinställningarna.
Välj Granska + skapa. Granska inställningarna och välj Skapa.
När distributionen är klar väljer du Gå till resurs.
I Logikappdesignern rullar du ned till avsnittet Börja med en gemensam utlösare. Välj När en HTTP-begäran tas emot.
I det övre högra hörnet i Logic App Designer väljer du Spara. HTTP POST-URL:en genereras automatiskt. Spara URL:en. Du behöver den i nästa avsnitt för att skapa en händelseslutpunkt.
Välj + Nytt steg.
Skriv
outlook.com emaili sökrutan. I listan Åtgärder rullar du ned och väljer Skicka ett e-postmeddelande (V2).
Logga in på ditt Outlook konto. Se till att välja Ja för att tillåta att logikappen får åtkomst till kontot. Fyll i fälten för att skicka ett e-postmeddelande.
Tips
Du kan hämta GeoJSON-svarsdata, till exempel
geometryIdeller , i dinadeviceIde-postmeddelanden. Du kan konfigurera Logic Apps att läsa data som skickas av Event Grid. Information om hur du konfigurerar Logic Apps att använda och skicka händelsedata till e-postaviseringar finns i Självstudie: Skicka e-postaviseringar om Azure IoT Hub-händelser med hjälp av Event Grid och Logic Apps.I det övre vänstra hörnet i Logic App Designer väljer du Spara.
Upprepa samma process om du vill skapa en andra logikapp som meddelar chefen när utrustningen lämnar byggarbetsplatsen. Ge logikappen namnet
Equipment-Exit.
Skapa prenumerationer Kartor Azure-händelser
Azure Kartor stöder tre händelsetyper. I den här självstudien skapar vi prenumerationer på följande två händelser:
- Geofence enter-händelser
- Geofence-avslutshändelser
Så här skapar du en geofence-avslut och anger händelseprenumeration:
I ditt Azure Kartor-konto väljer du Prenumerationer.
Välj ditt prenumerationsnamn.
I inställningsmenyn väljer du händelser.
På sidan händelser väljer du + Händelseprenumeration.
På sidan Skapa händelseprenumeration anger du följande värden:
- Namnet på händelseprenumerationen.
- Händelseschemat ska vara Event Grid schema.
- Systemämnesnamnet för den här händelseprenumerationen, som i det här fallet är
Contoso-Construction. - För Filtrera till händelsetyper väljer
Geofence Entereddu som händelsetyp. - För Slutpunktstyp väljer du
Web Hook. - För Slutpunkt kopierar du HTTP POST-URL:en för logikappen och anger den slutpunkt som du skapade i föregående avsnitt. Om du har glömt att spara den kan du gå tillbaka till Logikappdesignern och kopiera den från HTTP-utlösarsteget.
Välj Skapa.
Upprepa samma process för geofence-avslutshändelsen. Se till att välja
Geofence Exitedsom händelsetyp.
Använda Spatial Geofence Get API
Nu ska vi använda API:et Spatial Geofence Get för att skicka e-postmeddelanden till driftchefen när en del av utrustningen kommer in i eller lämnar geofences.
Varje utrustning har deviceId en . I den här självstudien spårar du en enskild utrustning med ett unikt ID för device_1 .
Följande diagram visar de fem platserna för utrustningen över tid, med början vid startplatsen, som ligger någonstans utanför geofence-platserna. I den här självstudien är startplatsen odefinierad eftersom du inte kommer att fråga enheten på den platsen.
När du frågar Api:et Spatial Geofence Get med en utrustningsplats som anger inledande geofence-inmatning eller -avslut anropar Event Grid lämplig logikappslutpunkt för att skicka ett e-postmeddelande till operationshanteraren.
Vart och ett av följande avsnitt gör API-begäranden med hjälp av de fem olika platskoordinaterna för utrustningen.

Utrustningsplats 1 (47.638237,-122.132483)
I Postman-appen väljer du Nytt.
I fönstret Skapa ny väljer du HTTP-begäran.
Ange ett begärandenamn för begäran, till exempel plats 1.
Välj METODEN GET HTTP.
Ange följande URL. Begäran bör se ut som följande URL (ersätt med din primära prenumerationsnyckel och med den som du sparade i
{Azure-Maps-Primary-Subscription-key}{udid}UploadudidGeofencing GeoJSON-dataavsnittet).https://atlas.microsoft.com/spatial/geofence/json?subscription-key={Your-Azure-Maps-Primary-Subscription-key}&api-version=1.0&deviceId=device_01&udid={udid}&lat=47.638237&lon=-122.1324831&searchBuffer=5&isAsync=True&mode=EnterAndExitVälj Skicka.
Svaret bör se ut som följande GeoJSON-fragment:
{ "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 }
I föregående GeoJSON-svar innebär det negativa avståndet från huvudplatsens geofence att utrustningen är innanför geofence-området. Det positiva avståndet från delplatsens geofence innebär att utrustningen ligger utanför delplatsens geofence. Eftersom det här är första gången enheten finns i huvudplatsens geofence är isEventPublished parametern inställd på true . Driftchefen får ett e-postmeddelande om att utrustningen har gått in i geofence-et.
Plats 2 (47.63800,-122.132531)
I Postman-appen väljer du Nytt.
I fönstret Skapa ny väljer du HTTP-begäran.
Ange ett begärandenamn för begäran, till exempel plats 2.
Välj METODEN GET HTTP.
Ange följande URL. Begäran bör se ut som följande URL (ersätt med din primära prenumerationsnyckel och med den som du sparade i
{Azure-Maps-Primary-Subscription-key}{udid}UploadudidGeofencing GeoJSON-dataavsnittet).https://atlas.microsoft.com/spatial/geofence/json?subscription-key={Your-Azure-Maps-Primary-Subscription-key}&api-version=1.0&deviceId=device_01&udId={udId}&lat=47.63800&lon=-122.132531&searchBuffer=5&isAsync=True&mode=EnterAndExitVälj Skicka.
Svaret bör se ut som följande GeoJSON-fragment:
{ "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 }
I föregående GeoJSON-svar har utrustningen varit kvar i huvudplatsens geofence och har inte kommit in i delplatsens geofence. Därför är parametern isEventPublished inställd på , och Operations Manager tar inte emot några false e-postaviseringar.
Plats 3 (47.63810783315048,-122.13336020708084)
I Postman-appen väljer du Nytt.
I fönstret Skapa ny väljer du HTTP-begäran.
Ange ett begärandenamn för begäran, till exempel plats 3.
Välj METODEN GET HTTP.
Ange följande URL. Begäran bör se ut som följande URL (ersätt med din primära prenumerationsnyckel och med den som du sparade i
{Azure-Maps-Primary-Subscription-key}{udid}UploadudidGeofencing GeoJSON-dataavsnittet).https://atlas.microsoft.com/spatial/geofence/json?subscription-key={Your-Azure-Maps-Primary-Subscription-key}&api-version=1.0&deviceId=device_01&udid={udid}&lat=47.63810783315048&lon=-122.13336020708084&searchBuffer=5&isAsync=True&mode=EnterAndExitVälj Skicka.
Svaret bör se ut som följande GeoJSON-fragment:
{ "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 }
I föregående GeoJSON-svar har utrustningen varit kvar i huvudplatsens geofence, men den har kommit in i underplatsens geofence. Därför är isEventPublished parametern inställd på true . Driftchefen får ett e-postmeddelande som anger att utrustningen har blivit geofence.
Anteckning
Om utrustningen hade flyttats till underplatsen efter kontorstid skulle ingen händelse publiceras och driftchefen skulle inte få några meddelanden.
Plats 4 (47.637988,-122.1338344)
I Postman-appen väljer du Nytt.
I fönstret Skapa ny väljer du HTTP-begäran.
Ange ett begärandenamn för begäran, till exempel plats 4.
Välj METODEN GET HTTP.
Ange följande URL. Begäran bör se ut som följande URL (ersätt med din primära prenumerationsnyckel och med den som du sparade i
{Azure-Maps-Primary-Subscription-key}{udid}UploadudidGeofencing GeoJSON-dataavsnittet).https://atlas.microsoft.com/spatial/geofence/json?subscription-key={Your-Azure-Maps-Primary-Subscription-key}&api-version=1.0&deviceId=device_01&udid={udid}&lat=47.637988&userTime=2023-01-16&lon=-122.1338344&searchBuffer=5&isAsync=True&mode=EnterAndExitVälj Skicka.
Svaret bör se ut som följande GeoJSON-fragment:
{ "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 }
I föregående GeoJSON-svar har utrustningen varit kvar i huvudplatsens geofence, men har avslutat delplatsens geofence. Observera dock att värdet är userTime efter enligt definitionen i expiredTime geofence-data. Därför är parametern isEventPublished inställd på , och Operations Manager får inget false e-postmeddelande.
Plats 5 (47.63799, -122.134505)
I Postman-appen väljer du Nytt.
I fönstret Skapa ny väljer du HTTP-begäran.
Ange ett begärandenamn för begäran, till exempel plats 5.
Välj METODEN GET HTTP.
Ange följande URL. Begäran bör se ut som följande URL (ersätt med din primära prenumerationsnyckel och med den som du sparade i
{Azure-Maps-Primary-Subscription-key}{udid}UploadudidGeofencing GeoJSON-dataavsnittet).https://atlas.microsoft.com/spatial/geofence/json?subscription-key={Your-Azure-Maps-Primary-Subscription-key}&api-version=1.0&deviceId=device_01&udid={udid}&lat=47.63799&lon=-122.134505&searchBuffer=5&isAsync=True&mode=EnterAndExitVälj Skicka.
Svaret bör se ut som följande GeoJSON-fragment:
{ "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 }
I föregående GeoJSON-svar har utrustningen avslutat huvudplatsens geofence. Därför är parametern inställd på , och driftchefen får ett e-postmeddelande som anger att utrustningen isEventPublished true har avslutat en geofence.
Du kan också Skicka e-postaviseringar med hjälp Event Grid och Logic Apps och markera Händelsehanterare som stöds i Event Grid använder Azure Kartor.
Rensa resurser
Det finns inga resurser som kräver rensning.