Öğretici: Azure Haritalar kullanarak bölge sınırı ayarlama
Bu öğreticide, Azure Haritalar coğrafi bölge hizmetlerini oluşturma ve kullanma ile ilgili temel bilgiler yer alır.
Aşağıdaki senaryoyu değerlendirin:
Bir şantiye yöneticisi, bir inşaat alanının çevresine girerken ve ayrılırken ekipmanı izlemelidir. Bir ekipman parçası bu çevrelerden çıktığı veya girdiği her durumda Operations Manager'a bir e-posta bildirimi gönderilir.
Azure Haritalar, inşaat alanına giren ve çıkan ekipmanların izlenmesini desteklemek için hizmet vermektedir. Bu öğreticide şunları yapacaksınız:
- İzlemek istediğiniz şantiye alanlarını tanımlayan Geofencing GeoJSON verilerini karşıya yükleyin. Coğrafi konumları Azure depolama hesabınıza çokgen koordinatlar olarak yükleyecek, ardından bu verileri Azure Haritalar hesabınıza kaydetmek için veri kayıt defteri hizmetini kullanacaksınız.
- Ekipman bölge sınırı alanına girdiğinde ve bölgeden çıktığında tetiklendiğinde şantiye operasyon yöneticisine e-posta bildirimleri gönderen iki mantıksal uygulama ayarlayın.
- Azure Event Grid'i kullanarak Azure Haritalar bölgenizin olaylarını girmek ve olaylardan çıkmak için abone olun. İki mantıksal uygulamanızda tanımlanan HTTP uç noktalarını çağıran iki web kancası olay aboneliği ayarlarsınız. Ardından mantıksal uygulamalar, bölge dışına veya bölge sınırına giren ekipmanın uygun e-posta bildirimlerini gönderir.
- Bir ekipman parçası çıkış yapıp bölge bölgelerine girdiğinde bildirim almak için Arama Coğrafi Alanı Alma API'sini kullanın.
Önkoşullar
- Azure Haritalar hesabı
- Abonelik anahtarı
- Bir Azure Storage hesabı
Bu öğreticide Postman uygulaması kullanılır, ancak farklı bir API geliştirme ortamı kullanabilirsiniz.
Önemli
URL örneklerinde değerini Azure Haritalar abonelik anahtarınızla değiştirin{Your-Azure-Maps-Subscription-key}
.
Coğrafi sınırlama GeoJSON verilerini karşıya yükleme
Bu öğreticide, içeren geofencing GeoJSON verilerinin nasıl karşıya yüklendiği gösterilmektedir FeatureCollection
. , FeatureCollection
şantiye içindeki çokgen alanları tanımlayan iki coğrafi bölge içerir. İlk coğrafi konumun süre sonu veya kısıtlaması yoktur. İkincisi yalnızca çalışma saatleri içinde sorgulanabilir (Pasifik Saat diliminde 09:00-17:00) ve artık 1 Ocak 2022'den sonra geçerli olmayacaktır. GeoJSON biçimi hakkında daha fazla bilgi için bkz . GeoJSON verilerini coğrafi sınırlama.
Aşağıdaki coğrafi konum verilerini kullanarak coğrafi bölge JSON dosyasını oluşturun. Bu dosyayı bir sonraki adımda Azure depolama hesabınıza yükleyeceksiniz.
{
"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
}
]
}
}
}
]
}
Coğrafi bölge JSON dosyasını Azure depolama hesabınıza yüklemek ve Azure Haritalar hesabınıza kaydetmek için Veri kayıt defteri oluşturma makalesinde açıklanan adımları izleyin.
Önemli
Benzersiz tanımlayıcı (udid
) değerini not edin, buna ihtiyacınız olacaktır. udid
Kaynak kodunuz ve HTTP isteklerinizden Azure depolama hesabınıza yüklediğiniz coğrafi kaynağa başvurma yönteminizdir.
Azure Logic Apps'te iş akışları oluşturma
Ardından, e-posta bildirimini tetikleyen iki mantıksal uygulama uç noktası oluşturun.
Mantıksal uygulamaları oluşturmak için:
Azure Portal oturum açın.
Azure portalının sol üst köşesinde Kaynak oluştur'u seçin.
Arama hizmeti ve market kutusuna Mantıksal Uygulama yazın.
Sonuçlardan Mantıksal Uygulama'yı seçin. Ardından Oluştur’u seçin.
Mantıksal Uygulama sayfasında aşağıdaki değerleri girin:
- Bu mantıksal uygulama için kullanmak istediğiniz Abonelik.
- Bu mantıksal uygulamanın Kaynak grubu adı. Yeni oluştur'u veya Mevcut kaynak grubunu kullan'ı seçebilirsiniz.
- Mantıksal uygulamanızın Mantıksal Uygulama adı. Bu durumda, ad olarak kullanın
Equipment-Enter
. - Plan türü olarak Tüketim'i seçin. Daha fazla bilgi için Logic App belgelerindeki Faturalama ve fiyatlandırma modelleri bölümüne bakın.
Bu öğreticinin amaçları doğrultusunda diğer tüm değerleri varsayılan ayarlarında tutun.
İşiniz bittiğinde Gözden Geçir + Oluştur'u seçin. Azure mantıksal uygulama kaynağınızla ilgili bilgileri doğruladıktan sonra Oluştur'u seçin.
Dağıtım başarıyla tamamlandığında Kaynağa git'i seçin.
Soldaki menünün Geliştirme Araçları bölümünde Mantıksal uygulama tasarımcısı'nı seçin, ekranı aşağı kaydırarak Ortak bir tetikleyiciyle başla bölümüne gelin. HTTP isteği alındığında'ı seçin.
Mantıksal Uygulama Tasarım Aracı sağ üst köşesinde Kaydet'i seçin. HTTP POST URL'si otomatik olarak oluşturulur. URL'yi kaydedin. Bir olay uç noktası oluşturmak için sonraki bölümde gereklidir.
+Yeni adım'ı seçin.
Arama kutusuna
outlook.com email
yazın. Eylemler listesinde aşağı kaydırın ve E-posta gönder (V2)'yi seçin.Outlook hesabınızda oturum açın. Mantıksal uygulamanın hesaba erişmesine izin vermek için Evet'i seçtiğinizden emin olun. E-posta göndermek için alanları doldurun.
Bahşiş
E-posta bildirimlerinizde veya
deviceId
gibigeometryId
GeoJSON yanıt verilerini alabilirsiniz. Logic Apps'i Event Grid tarafından gönderilen verileri okuyacak şekilde yapılandırabilirsiniz. Logic Apps'i olay verilerini kullanacak ve e-posta bildirimlerine geçirecek şekilde yapılandırma hakkında bilgi için bkz . Öğretici: Event Grid ve Logic Apps kullanarak Azure IoT Hub olayları hakkında e-posta bildirimleri gönderme.Mantıksal Uygulama Tasarım Aracı'nin sol üst köşesinde Kaydet'i seçin.
Ekipman şantiyeden çıktığında yöneticiye bildirmek üzere ikinci bir mantıksal uygulama oluşturmak için aynı işlemi tekrarlayın. Mantıksal uygulamayı olarak adlandırın
Equipment-Exit
.
Azure Haritalar olay abonelikleri oluşturma
Azure Haritalar üç olay türünü destekler. Bu öğreticide, aşağıdaki iki olaya nasıl abonelik oluşturulacağı gösterilmektedir:
- Geofence enter olayları
- Geofence çıkış olayları
Bölge sınırı çıkışı oluşturun ve olay aboneliklerini girin:
Azure Haritalar hesabınızda Abonelikler'i seçin.
Abonelik adınızı seçin.
Ayarlar menüsünde olaylar'ı seçin.
Olaylar sayfasında + Olay Aboneliği'ni seçin.
Olay Aboneliği Oluştur sayfasında aşağıdaki değerleri girin:
- Olay aboneliğinin adı.
- Olay Şeması Event Grid Şeması olmalıdır.
- Bu olay aboneliğinin Sistem Konu Adı (bu örnekte şeklindedir
Contoso-Construction
). - Olay Türlerine Filtre Uygula için olay türü olarak seçin
Geofence Entered
. - Uç Nokta Türü için öğesini seçin
Web Hook
. - Uç Nokta için, önceki bölümde oluşturduğunuz uç noktayı girin mantıksal uygulamanın HTTP POST URL'sini kopyalayın. Kaydetmeyi unuttuysanız, mantıksal uygulama Tasarım Aracı geri dönüp HTTP tetikleyici adımından kopyalayabilirsiniz.
Oluştur’u seçin.
Coğrafi çıkış olayı için aynı işlemi yineleyin. Olay türü olarak seçtiğinizden
Geofence Exited
emin olun.
Spatial Geofence Get API'lerini kullanma
Ardından, bir ekipman parçası bölge bölgelerine girdiğinde veya bölgeden çıktığında Operations Manager'a e-posta bildirimleri göndermek için Spatial Geofence Get API'sini kullanacağız.
Her ekipman parçasının bir deviceId
vardır. Bu öğreticide, benzersiz kimliğine device_1
sahip tek bir ekipman parçasını izliyorsunuz.
Aşağıdaki diyagramda, başlangıç konumundan başlayarak zaman içinde ekipmanın beş konumu gösterilmektedir ve bu konum bölge dışındadır. Bu öğreticinin amaçları doğrultusunda, cihazı bu konumda sorgulamadığınız için Başlangıç konumu tanımlanmamıştır.
Spatial Geofence Get API'sini ilk coğrafi konum girişini veya çıkışını gösteren bir donanım konumuyla sorguladığınızda, Event Grid Operations Manager'a e-posta bildirimi göndermek için uygun mantıksal uygulama uç noktasını çağırır.
Aşağıdaki bölümlerin her biri, donanımın beş farklı konum koordinatını kullanarak API isteklerinde bulunur.
Ekipman konumu 1 (47.638237,-122.132483)
Postman uygulamasında Yeni'yi seçin.
Yeni Oluştur penceresinde HTTP İsteği'ni seçin.
İstek için Konum 1 gibi bir İstek adı girin.
GET HTTP yöntemini seçin.
Aşağıdaki URL'yi girin. İstek aşağıdaki URL'ye benzemelidir (değerini Geofencing GeoJSON verilerini karşıya yükleme bölümünde kaydettiğiniz URL ile
udid
değiştirin{udid}
).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
Dekont
{geography} öğesini coğrafi kapsamınızla değiştirin. Daha fazla bilgi için bkz. Azure Haritalar hizmet coğrafi kapsamı ve Spatial Geofence Get API'si.
Gönder'i seçin.
Yanıt aşağıdaki GeoJSON parçasına benzer olmalıdır:
{ "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 }
Yukarıdaki GeoJSON yanıtında, ana site coğrafi alanından negatif uzaklık, ekipmanın coğrafi bölge içinde olduğu anlamına gelir. Alt site coğrafi alanından pozitif uzaklık, ekipmanın alt site coğrafi alanının dışında olduğu anlamına gelir. Bu cihaz ilk kez ana site coğrafi bölgesinde bulunduğundan isEventPublished
parametresi olarak true
ayarlanır. Operations Manager, ekipmanın bölge sınırına girdiğini belirten bir e-posta bildirimi alır.
Konum 2 (47.63800,-122.132531)
Postman uygulamasında Yeni'yi seçin.
Yeni Oluştur penceresinde HTTP İsteği'ni seçin.
İstek için Konum 2 gibi bir İstek adı girin.
GET HTTP yöntemini seçin.
Aşağıdaki URL'yi girin. İstek aşağıdaki URL'ye benzemelidir (değerini Geofencing GeoJSON verilerini karşıya yükleme bölümünde kaydettiğiniz URL ile
udid
değiştirin{udid}
).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
Gönder'i seçin.
Yanıt aşağıdaki GeoJSON parçasına benzer olmalıdır:
{ "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 }
Yukarıdaki GeoJSON yanıtında, ekipman ana site coğrafi alanında kalmıştır ve alt site coğrafi konumuna girmemiştir. Sonuç olarak, isEventPublished
parametresi olarak false
ayarlanır ve Operations Manager herhangi bir e-posta bildirimi almaz.
Konum 3 (47.63810783315048,-122.13336020708084)
Postman uygulamasında Yeni'yi seçin.
Yeni Oluştur penceresinde HTTP İsteği'ni seçin.
İstek için Konum 3 gibi bir İstek adı girin.
GET HTTP yöntemini seçin.
Aşağıdaki URL'yi girin. İstek aşağıdaki URL'ye benzemelidir (değerini Geofencing GeoJSON verilerini karşıya yükleme bölümünde kaydettiğiniz URL ile
udid
değiştirin{udid}
).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
Gönder'i seçin.
Yanıt aşağıdaki GeoJSON parçasına benzer olmalıdır:
{ "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 }
Yukarıdaki GeoJSON yanıtında, ekipman ana site coğrafi alanında kalmıştır, ancak alt site coğrafi konumuna girmiştir. Sonuç olarak parametresi isEventPublished
olarak true
ayarlanır. Operations Manager, ekipmanın bölge sınırına girdiğini belirten bir e-posta bildirimi alır.
Dekont
Ekipman çalışma saatlerinden sonra alt siteye taşınsaydı hiçbir etkinlik yayımlanmaz ve operasyon yöneticisi herhangi bir bildirim almazdı.
Konum 4 (47.637988,-122.1338344)
Postman uygulamasında Yeni'yi seçin.
Yeni Oluştur penceresinde HTTP İsteği'ni seçin.
İstek için Konum 4 gibi bir İstek adı girin.
GET HTTP yöntemini seçin.
Aşağıdaki URL'yi girin. İstek aşağıdaki URL'ye benzemelidir (değerini Geofencing GeoJSON verilerini karşıya yükleme bölümünde kaydettiğiniz URL ile
udid
değiştirin{udid}
).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
Gönder'i seçin.
Yanıt aşağıdaki GeoJSON parçasına benzer olmalıdır:
{ "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 }
Önceki GeoJSON yanıtında, ekipman ana site coğrafi alanında kalmıştır, ancak alt site coğrafi konumundan çıkmıştır. Ancak, değerin userTime
bölge verilerinde tanımlandığı gibi değerinden sonra expiredTime
olduğuna dikkat edin. Sonuç olarak, isEventPublished
parametresi olarak false
ayarlanır ve Operations Manager bir e-posta bildirimi almaz.
Konum 5 (47.63799, -122.134505)
Postman uygulamasında Yeni'yi seçin.
Yeni Oluştur penceresinde HTTP İsteği'ni seçin.
İstek için Konum 5 gibi bir İstek adı girin.
GET HTTP yöntemini seçin.
Aşağıdaki URL'yi girin. İstek aşağıdaki URL'ye benzemelidir (değerini Geofencing GeoJSON verilerini karşıya yükleme bölümünde kaydettiğiniz URL ile
udid
değiştirin{udid}
).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
Gönder'i seçin.
Yanıt aşağıdaki GeoJSON parçasına benzer olmalıdır:
{ "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 }
Yukarıdaki GeoJSON yanıtında, ekipman ana site coğrafi konumundan çıktı. Sonuç olarak parametresi isEventPublished
olarak ayarlanır true
ve Operations Manager, ekipmanın bölge sınırından çıktığını belirten bir e-posta bildirimi alır.
Event Grid ve Logic Apps kullanarak e-posta bildirimleri de gönderebilirsiniz. Daha fazla bilgi için bkz . Azure Event Grid'de olay işleyicileri.
Kaynakları temizleme
Temizleme gerektiren kaynak yok.