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:
Meld u aan bij de Azure-portal.
Selecteer in de linkerbovenhoek van Azure Portal Een resource maken.
Typ logische app in het vak Search-service s en Marketplace.
Selecteer logische app in de resultaten. Ten slotte selecteert u Maken.
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.
Wanneer u klaar bent, selecteert u Controleren en maken. Nadat Azure de informatie over uw logische app-resource heeft gevalideerd, selecteert u Maken.
Wanneer de implementatie is voltooid, selecteert u Ga naar de resource.
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.
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 email
in 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
geometryId
ofdeviceId
, 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.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 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:
Selecteer Abonnementen in uw Azure Kaarten-account.
Selecteer de naam van uw abonnement.
Selecteer gebeurtenissen in het instellingenmenu.
Selecteer + Gebeurtenisabonnement op de pagina gebeurtenissen.
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.
Selecteer Maken.
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.
Apparaatlocatie 1 (47.638237,-122.132483)
Selecteer Nieuw in de Postman-app.
Selecteer HTTP-aanvraag in het venster Nieuw maken.
Voer een aanvraagnaam in voor de aanvraag, zoals Locatie 1.
Selecteer de GET HTTP-methode.
Voer de volgende URL in. De aanvraag moet eruitzien als de volgende URL (vervang deze door
{udid}
deudid
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.
Selecteer Verzenden.
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)
Selecteer Nieuw in de Postman-app.
Selecteer HTTP-aanvraag in het venster Nieuw maken.
Voer een aanvraagnaam in voor de aanvraag, zoals Locatie 2.
Selecteer de GET HTTP-methode.
Voer de volgende URL in. De aanvraag moet eruitzien als de volgende URL (vervang deze door
{udid}
deudid
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
Selecteer Verzenden.
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 false
en ontvangt Operations Manager geen e-mailmeldingen.
Locatie 3 (47.63810783315048,-122.13336020708084)
Selecteer Nieuw in de Postman-app.
Selecteer HTTP-aanvraag in het venster Nieuw maken.
Voer een aanvraagnaam in voor de aanvraag, zoals Locatie 3.
Selecteer de GET HTTP-methode.
Voer de volgende URL in. De aanvraag moet eruitzien als de volgende URL (vervang deze door
{udid}
deudid
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
Selecteer Verzenden.
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)
Selecteer Nieuw in de Postman-app.
Selecteer HTTP-aanvraag in het venster Nieuw maken.
Voer een aanvraagnaam in voor de aanvraag, zoals Locatie 4.
Selecteer de GET HTTP-methode.
Voer de volgende URL in. De aanvraag moet eruitzien als de volgende URL (vervang deze door
{udid}
deudid
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
Selecteer Verzenden.
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 false
en ontvangt Operations Manager geen e-mailmelding.
Locatie 5 (47.63799, -122.134505)
Selecteer Nieuw in de Postman-app.
Selecteer HTTP-aanvraag in het venster Nieuw maken.
Voer een aanvraagnaam in voor de aanvraag, zoals Locatie 5.
Selecteer de GET HTTP-methode.
Voer de volgende URL in. De aanvraag moet eruitzien als de volgende URL (vervang deze door
{udid}
deudid
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
Selecteer Verzenden.
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 true
en 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.