Zelfstudie: Een geofence instellen met behulp van Azure Maps
In deze zelfstudie leert u de basisbeginselen van het maken en gebruiken van geofence-services van Azure Maps.
Denkt u zich het volgende scenario eens in:
Een bouwsitebeheerder moet de apparatuur bijhouden die een bouwterrein binnenkomt en verlaat. Telkens wanneer een apparaat de grenzen van het terrein binnengaat of verlaat, wordt er een e-mailbericht verzonden naar de Operations Manager.
Azure Maps biedt een aantal services ter ondersteuning van het bijhouden van apparatuur die het bouwterrein binnengaat en verlaat. In deze zelfstudie leert u het volgende:
- Upload Geofencing GeoJSON-gegevens waarmee de bouwterreinen worden gedefinieerd die u wilt bewaken. U gebruikt de Data Upload API om geofences als veelhoekcoördinaten te uploaden naar uw Azure Maps-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
- Maak een Azure Maps-account.
- Een primaire sleutel voor een abonnement verkrijgen, ook wel bekend als de primaire sleutel of de abonnementssleutel.
In deze zelfstudie wordt gebruikgemaakt van de Postman-toepassing, maar u kunt een andere API-ontwikkelomgeving gebruiken.
Geofencing GeoJSON-gegevens uploaden
In deze zelfstudie uploadt u geofencing GeoJSON-gegevens die een FeatureCollection bevatten. 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 werkuren (9:00 uur-17:00 uur in de Pacific Time-zone) en is niet langer geldig na 1 januari 2022. Zie Geofencing GeoJSON data (Geofencing GeoJSON-gegevens) voor meer informatie over de GeoJSON-indeling.
Tip
U kunt uw geofence-gegevens op elk gewenst moment bijwerken. Zie Data Upload-API voor meer informatie.
Geofencing GeoJSON-gegevens uploaden:
Selecteer in de Postman-app De optie Nieuw.
Selecteer in het venster Nieuwe maken de optie HTTP-aanvraag.
Voer een aanvraagnaam in voor de aanvraag, zoals POST GeoJSON Data Upload.
Selecteer de HTTP-methode POST.
Voer de volgende URL in. De aanvraag moet er uitzien als de volgende URL (vervang
{Azure-Maps-Primary-Subscription-key}door uw primaire abonnementssleutel):https://us.atlas.microsoft.com/mapData?subscription-key={Your-Azure-Maps-Primary-Subscription-key}&api-version=2.0&dataFormat=geojsonDe parameter
geojsonin het URL-pad geeft de gegevensindeling aan van de gegevens die worden geüpload.Selecteer het tabblad Hoofdtekst.
Selecteer raw en JSON in de vervolgkeuzelijsten.
Kopieer de volgende GeoJSON-gegevens en plak deze in het venster Body:
{ "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 } ] } } } ] }Selecteer Verzenden.
Selecteer in het antwoordvenster het tabblad Kopteksten.
Kopieer de waarde van de sleutel Operation-Location. Dit is de
status URL. We gebruiken de omstatus URLde status van de GeoJSON-gegevensupload te controleren.https://us.atlas.microsoft.com/mapData/operations/{operationId}?api-version=2.0
De uploadstatus van GeoJSON-gegevens controleren
De status van de GeoJSON-gegevens controleren en de unieke id ophalen ( udid ):
Selecteer Nieuw.
Selecteer in het venster Nieuwe maken de optie HTTP-aanvraag.
Voer een aanvraagnaam in voor de aanvraag, zoals GET Data Upload Status.
Selecteer de HTTP-methode GET.
Voer de
status URLin die u hebt gekopieerd in Upload Geofencing GeoJSON-gegevens. De aanvraag moet er uitzien als de volgende URL (vervang{Azure-Maps-Primary-Subscription-key}door uw primaire abonnementssleutel):https://us.atlas.microsoft.com/mapData/{operationId}?api-version=2.0&subscription-key={Your-Azure-Maps-Primary-Subscription-key}Selecteer Verzenden.
Selecteer in het antwoordvenster het tabblad Kopteksten.
Kopieer de waarde van de sleutel Resourcelocatie. Dit is de
resource location URL. Deresource location URLbevat de unieke id ( ) van deudidgeüploade gegevens. Sla deudidop om een query uit te voeren op de Get Geofence-API in de laatste sectie van deze zelfstudie.
(Optioneel) GeoJSON-gegevensmetagegevens ophalen
U kunt metagegevens ophalen uit de geüploade gegevens. De metagegevens bevatten informatie zoals de URL van de resourcelocatie, de aanmaakdatum, de bijgewerkte datum, de grootte en de uploadstatus.
Metagegevens van inhoud ophalen:
Selecteer Nieuw.
Selecteer in het venster Nieuwe maken de optie HTTP-aanvraag.
Voer een aanvraagnaam in voor de aanvraag, zoals GET Data Upload Metadata.
Selecteer de HTTP-methode GET.
Voer de
resource Location URLin die u hebt gekopieerd in De uploadstatus van GeoJSON-gegevens controleren. De aanvraag moet er uitzien als de volgende URL (vervang{Azure-Maps-Primary-Subscription-key}door uw primaire abonnementssleutel):https://us.atlas.microsoft.com/mapData/metadata/{udid}?api-version=2.0&subscription-key={Your-Azure-Maps-Primary-Subscription-key}Selecteer in het antwoordvenster het tabblad Hoofd. De metagegevens moeten er als volgt uit zien:
{ "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" }
Werkstromen maken in Azure Logic Apps
Vervolgens maken we twee logische app-eindpunten die een e-mailmelding activeren.
De logische apps maken:
Meld u aan bij de Azure-portal.
Selecteer in de linkerbovenhoek van Azure Portal Een resource maken.
Typ logische app in het vak Marketplace doorzoeken.
Selecteer Logische app in de resultaten. Ten slotte selecteert u Create.
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-Enterals naam.
Laat in deze zelfstudie alle andere waarden op de standaardinstellingen staan.
Selecteer Controleren + maken. Controleer uw instellingen en selecteer Maken.
Wanneer de implementatie is voltooid, selecteert u Ga naar resource.
Schuif in de ontwerpfunctie voor logische apps omlaag naar de sectie Beginnen met een algemene trigger. Selecteer Wanneer een HTTP-aanvraag wordt ontvangen.
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.
Selecteer + Nieuwe stap.
Typ
outlook.com emailin het zoekvak. Schuif in de lijst Acties omlaag en selecteer Een e-mailbericht verzenden (V2) .
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.
Tip
U kunt de gegevens van een GeoJSON-reactie, zoals
geometryIdofdeviceId, ophalen in uw e-mailmeldingen. U kunt Logic Apps zo configureren dat de gegevens die door Event Grid worden verzonden, worden gelezen. Zie voor informatie over het configureren van Logic Apps voor het consumeren en doorgeven van gebeurtenisgegevens naar e-mailmeldingen Zelfstudie: E-mailmeldingen over gebeurtenissen van Azure IoT Hub verzenden met Event Grid en Logic Apps.Selecteer Opslaan in de linkerbovenhoek van Logic App Designer.
Als u een tweede logische app wilt maken om de manager op de hoogte te stellen wanneer apparatuur het bouwterrein 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 maken we abonnementen op de volgende twee gebeurtenissen:
- Enter-gebeurtenissen voor Geofence
- Geofence exit-gebeurtenissen
Een geofence exit maken en een gebeurtenisabonnement invoeren:
Selecteer abonnementen in Kaarten Azure-account.
Selecteer de naam van uw abonnement.
Selecteer gebeurtenissen in het instellingenmenu.
Selecteer op de pagina Gebeurtenissen + Gebeurtenisabonnement.
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-Constructionis. - Kies voor Filteren op gebeurtenistypen het gebeurtenistype
Geofence Entered. - Kies
Web Hookvoor 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.
Selecteer Maken.
Herhaal hetzelfde proces voor de afsluitende geofence-gebeurtenis. Zorg ervoor dat u kiest
Geofence Exitedals het gebeurtenistype.
Spatial Geofence Get API gebruiken
Vervolgens gebruiken we de Spatial Geofence Get API om e-mailmeldingen naar de 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 wordt de Start-locatie niet gedefinieerd, omdat u geen query uitvoert op het apparaat op die locatie.
Wanneer u een query uitvoert op Spatial Geofence Get API met een apparaatlocatie die aangeeft dat de geofence voor het eerst wordt binnengegaan of verlaten, roept de Event Grid het juiste Logic App-eindpunt aan om een e-mailbericht naar de Operations Manager te sturen.
Elk van de volgende secties verzendt API-aanvragen met behulp van de vijf verschillende locatiecoördinaten van de apparatuur.

Apparaatlocatie 1 (47.638237,-122.132483)
Selecteer In de Postman-app de optie Nieuw.
Selecteer in het venster Nieuwe maken de optie HTTP-aanvraag.
Voer een aanvraagnaam in voor de aanvraag, zoals Locatie 1.
Selecteer de HTTP-methode GET.
Voer de volgende URL in. De aanvraag moet er uitzien als de volgende URL (vervang door uw primaire abonnementssleutel en door de die u hebt opgeslagen
{Azure-Maps-Primary-Subscription-key}in de sectie Upload{udid}udidGeofencing GeoJSON-gegevens).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=EnterAndExitSelecteer Verzenden.
Het antwoord moet er als volgt uit zien: 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 }
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. De Operations Manager krijgt een e-mailmelding waarmee wordt aangegeven dat apparatuur een geofence is binnengegaan.
Locatie 2 (47.63800,-122.132531)
Selecteer In de Postman-app de optie Nieuw.
Selecteer in het venster Nieuwe maken de optie HTTP-aanvraag.
Voer een aanvraagnaam in voor de aanvraag, zoals Locatie 2.
Selecteer de HTTP-methode GET.
Voer de volgende URL in. De aanvraag moet er uitzien als de volgende URL (vervang door uw primaire abonnementssleutel en door de die u hebt opgeslagen
{Azure-Maps-Primary-Subscription-key}in de sectie Upload{udid}udidGeofencing GeoJSON-gegevens).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=EnterAndExitSelecteer Verzenden.
Het antwoord moet er als volgt uit zien: 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 }
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 parameter isEventPublished ingesteld op false en ontvangt de Operations Manager geen e-mailmeldingen.
Locatie 3 (47.63810783315048,-122.13336020708084)
Selecteer In de Postman-app de optie Nieuw.
Selecteer in het venster Nieuwe maken de optie HTTP-aanvraag.
Voer een aanvraagnaam in voor de aanvraag, zoals Locatie 3.
Selecteer de HTTP-methode GET.
Voer de volgende URL in. De aanvraag moet er uitzien als de volgende URL (vervang door uw primaire abonnementssleutel en door de die u hebt opgeslagen
{Azure-Maps-Primary-Subscription-key}in de sectie Upload{udid}udidGeofencing GeoJSON-gegevens).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=EnterAndExitSelecteer Verzenden.
Het antwoord moet er als volgt uit zien: 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 }
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. De Operations Manager krijgt een e-mailmelding die aangeeft dat het apparatuur een geofence is binnengegaan.
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)
Selecteer In de Postman-app de optie Nieuw.
Selecteer in het venster Nieuwe maken de optie HTTP-aanvraag.
Voer een aanvraagnaam in voor de aanvraag, zoals Locatie 4.
Selecteer de HTTP-methode GET.
Voer de volgende URL in. De aanvraag moet er uitzien als de volgende URL (vervang door uw primaire abonnementssleutel en door de die u hebt opgeslagen
{Azure-Maps-Primary-Subscription-key}in de sectie Upload{udid}udidGeofencing GeoJSON-gegevens).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=EnterAndExitSelecteer Verzenden.
Het antwoord moet er als volgt uit zien: 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 }
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 parameter isEventPublished ingesteld op false en ontvangt de Operations Manager geen e-mailmelding.
Locatie 5 (47.63799, -122.134505)
Selecteer In de Postman-app de optie Nieuw.
Selecteer in het venster Nieuwe maken de optie HTTP-aanvraag.
Voer een aanvraagnaam in voor de aanvraag, zoals Locatie 5.
Selecteer de HTTP-methode GET.
Voer de volgende URL in. De aanvraag moet er uitzien als de volgende URL (vervang door uw primaire abonnementssleutel en door de die u hebt opgeslagen
{Azure-Maps-Primary-Subscription-key}in de sectie Upload{udid}udidGeofencing GeoJSON-gegevens).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=EnterAndExitSelecteer Verzenden.
Het antwoord moet er als volgt uit zien: 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 }
In het voorgaande GeoJSON-antwoord heeft het apparaat de geofence van de hoofdsite verlaten. Als gevolg hiervan wordt de parameter isEventPublished ingesteld op true en krijgt de Operations Manager een e-mailmelding die aangeeft dat het apparatuur een geofence heeft verlaten.
U kunt ook e-mail meldingen verzenden met behulp van Event Grid en logische apps en ondersteunde gebeurtenis-handlers in Event Grid controleren met behulp van Azure Maps.
Resources opschonen
Er zijn geen resources die moeten worden opgeruimd.