Öğ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

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:

  1. Azure Portal oturum açın.

  2. Azure portalının sol üst köşesinde Kaynak oluştur'u seçin.

  3. Arama hizmeti ve market kutusuna Mantıksal Uygulama yazın.

  4. Sonuçlardan Mantıksal Uygulama'yı seçin. Ardından Oluştur’u seçin.

  5. 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.

    Screenshot of create a logic app.

  6. İş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.

  7. Dağıtım başarıyla tamamlandığında Kaynağa git'i seçin.

  8. 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.

    Screenshot of create a logic app HTTP trigger.

  9. 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.

    Screenshot of Logic App HTTP Request URL and JSON.

  10. +Yeni adım'ı seçin.

  11. Arama kutusuna outlook.com email yazın. Eylemler listesinde aşağı kaydırın ve E-posta gönder (V2)'yi seçin.

    Screenshot of create a logic app designer.

  12. 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.

    Screenshot of create a logic app send email step.

    Bahşiş

    E-posta bildirimlerinizde veya deviceIdgibi geometryId 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.

  13. Mantıksal Uygulama Tasarım Aracı'nin sol üst köşesinde Kaydet'i seçin.

  14. 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:

  1. Azure Haritalar hesabınızda Abonelikler'i seçin.

  2. Abonelik adınızı seçin.

  3. Ayarlar menüsünde olaylar'ı seçin.

    Screenshot of go to Azure Maps account events.

  4. Olaylar sayfasında + Olay Aboneliği'ni seçin.

    Screenshot of create an Azure Maps events subscription.

  5. 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 şeklindedirContoso-Construction).
    • Olay Türlerine Filtre Uygula için olay türü olarak seçin Geofence Entered .
    • Uç Nokta Türü için öğesini seçinWeb 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.

    Screenshot of Azure Maps events subscription details.

  6. Oluştur’u seçin.

  7. 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 deviceIdvardır. Bu öğreticide, benzersiz kimliğine device_1sahip 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.

Diagram of geofence map in Azure Maps

Ekipman konumu 1 (47.638237,-122.132483)

  1. Postman uygulamasında Yeni'yi seçin.

  2. Yeni Oluştur penceresinde HTTP İsteği'ni seçin.

  3. İstek için Konum 1 gibi bir İstek adı girin.

  4. GET HTTP yöntemini seçin.

  5. 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.

  6. Gönder'i seçin.

  7. 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 trueayarlanı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)

  1. Postman uygulamasında Yeni'yi seçin.

  2. Yeni Oluştur penceresinde HTTP İsteği'ni seçin.

  3. İstek için Konum 2 gibi bir İstek adı girin.

  4. GET HTTP yöntemini seçin.

  5. 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
    
  6. Gönder'i seçin.

  7. 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 falseayarlanır ve Operations Manager herhangi bir e-posta bildirimi almaz.

Konum 3 (47.63810783315048,-122.13336020708084)

  1. Postman uygulamasında Yeni'yi seçin.

  2. Yeni Oluştur penceresinde HTTP İsteği'ni seçin.

  3. İstek için Konum 3 gibi bir İstek adı girin.

  4. GET HTTP yöntemini seçin.

  5. 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
    
  6. Gönder'i seçin.

  7. 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 trueayarlanı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)

  1. Postman uygulamasında Yeni'yi seçin.

  2. Yeni Oluştur penceresinde HTTP İsteği'ni seçin.

  3. İstek için Konum 4 gibi bir İstek adı girin.

  4. GET HTTP yöntemini seçin.

  5. 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
    
  6. Gönder'i seçin.

  7. 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 falseayarlanır ve Operations Manager bir e-posta bildirimi almaz.

Konum 5 (47.63799, -122.134505)

  1. Postman uygulamasında Yeni'yi seçin.

  2. Yeni Oluştur penceresinde HTTP İsteği'ni seçin.

  3. İstek için Konum 5 gibi bir İstek adı girin.

  4. GET HTTP yöntemini seçin.

  5. 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
    
  6. Gönder'i seçin.

  7. 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 trueve 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.

Sonraki adımlar