Tutorial: Menyiapkan geofence menggunakan Azure Maps

Tutorial ini memandu Anda melalui dasar-dasar pembuatan dan penggunaan layanan geofence Azure Maps.

Pertimbangkan skenario berikut:

Manajer situs konstruksi harus melacak peralatan saat memasuki dan meninggalkan perimeter area konstruksi. Setiap kali sepotong peralatan keluar atau memasuki perimeter ini, pemberitahuan email dikirim ke Manajer Operasi.

Azure Peta menyediakan layanan untuk mendukung pelacakan peralatan yang memasuki dan keluar dari area konstruksi. Dalam tutorial ini, Anda akan:

  • Mengunggah data GeoJSON Geofencing yang menentukan area lokasi konstruksi yang ingin Anda pantau. Anda akan mengunggah geofence sebagai koordinat poligon ke akun penyimpanan Azure Anda, lalu menggunakan layanan registri data untuk mendaftarkan data tersebut dengan akun Azure Peta Anda.
  • Siapkan dua aplikasi logika yang, ketika dipicu, mengirim pemberitahuan surel ke manajer operasi lokasi konstruksi saat peralatan masuk dan keluar dari area geofence.
  • Gunakan Azure Event Grid untuk berlangganan kejadian masuk dan keluar untuk geofence Azure Maps Anda. Anda menyiapkan dua langganan kejadian webhook yang memanggil titik akhir HTTP yang ditentukan di dua aplikasi logika Anda. Aplikasi logika selanjutnya mengirim pemberitahuan surel yang sesuai tentang peralatan yang bergerak menjauhi atau memasuki geofence.
  • Gunakan Search Geofence Get API untuk menerima pemberitahuan saat satu bagian peralatan keluar dan masuk area geofence.

Prasyarat

Tutorial ini menggunakan aplikasi Postman, tetapi Anda dapat menggunakan lingkungan pengembangan API berbeda.

Penting

Dalam contoh URL, ganti {Your-Azure-Maps-Subscription-key} dengan kunci langganan Azure Peta Anda.

Mengunggah data GeoJSON geofencing

Tutorial ini menunjukkan cara mengunggah data GeoJSON geofencing yang berisi FeatureCollection. FeatureCollection berisi dua geofence yang menentukan area poligonal di dalam lokasi konstruksi. Geofence pertama tidak memiliki waktu kedaluwarsa atau pembatasan. Geofence kedua hanya dapat dikuerikan terhadap jam kerja (09:00-17:00 di Zona Waktu Pasifik) dan tidak akan berlaku lagi setelah 1 Januari 2022. Untuk informasi selengkapnya tentang format GeoJSON, lihat Data GeoJSON Geofencing.

Buat file JSON geofence menggunakan data geofence berikut. Anda akan mengunggah file ini ke akun penyimpanan Azure Anda berikutnya.

{
   "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
             }
           ]
         }
       }
     }
   ]
}

Ikuti langkah-langkah yang diuraikan dalam artikel Cara membuat registri data untuk mengunggah file JSON geofence ke akun penyimpanan Azure Anda dan mendaftarkannya di akun Azure Peta Anda.

Penting

Pastikan untuk membuat catatan nilai pengidentifikasi unik (udid), Anda akan membutuhkannya. Adalah udid cara Anda mereferensikan geofence yang Anda unggah ke akun penyimpanan Azure Anda dari kode sumber dan permintaan HTTP Anda.

Membuat alur kerja di Azure Logic Apps

Selanjutnya, buat dua titik akhir aplikasi logika yang memicu pemberitahuan email.

Untuk membuat aplikasi logika:

  1. Masuk ke portal Azure.

  2. Di pojok kiri atas portal Microsoft Azure, pilih Buat sumber daya.

  3. Di kotak layanan Pencarian dan marketplace, ketik Aplikasi Logika.

  4. Pilih Aplikasi Logika dari hasil. Lalu, pilih Buat.

  5. Di halaman Logic App, masukkan nilai berikut:

    • Langganan yang ingin Anda gunakan untuk aplikasi logika ini.
    • Nama grup sumber daya untuk aplikasi logika ini. Anda dapat memilih untuk Buat baru atau Gunakan grup sumber daya yang ada.
    • Nama Logic App dari aplikasi logika Anda. Dalam hal ini, gunakan Equipment-Enter sebagai nama.
    • Pilih Konsumsi sebagai Jenis paket. Untuk informasi selengkapnya, lihat Model penagihan dan harga dalam dokumentasi Aplikasi Logika.

    Untuk tujuan tutorial ini, simpan semua nilai lain pada pengaturan defaultnya.

    Screenshot of create a logic app.

  6. Setelah selesai, pilih Tinjau + Buat. Setelah Azure memvalidasi informasi mengenai sumber daya aplikasi logika Anda, pilih Buat.

  7. Setelah penyebaran berhasil diselesaikan, pilih Buka sumber daya.

  8. Pilih Perancang aplikasi logika di bagian Alat Pengembangan di menu sebelah kiri, gulir ke bawah ke bagian Mulai dengan pemicu umum. Pilih Saat permintaan HTTP diterima.

    Screenshot of create a logic app HTTP trigger.

  9. Di pojok kanan atas Logic App Designer, pilih Simpan. URL POST HTTP dibuat secara otomatis. Simpan URL-nya. Anda memerlukannya di bagian berikutnya untuk membuat titik akhir kejadian.

    Screenshot of Logic App HTTP Request URL and JSON.

  10. Pilih + Langkah Baru.

  11. Pada kotak pencarian, ketik outlook.com email. Dalam daftar Tindakan, gulir ke bawah dan pilih Kirim surel (V2).

    Screenshot of create a logic app designer.

  12. Masuk ke akun Outlook Anda. Pastikan memilih Ya untuk mengizinkan aplikasi logika mengakses akun. Isi bidang untuk mengirim surel.

    Screenshot of create a logic app send email step.

    Tip

    Anda dapat mengambil data respons GeoJSON, seperti geometryId atau deviceId, di pemberitahuan surel. Anda dapat mengonfigurasi Logic Apps untuk membaca data yang dikirim oleh Event Grid. Untuk informasi tentang cara mengonfigurasi Logic Apps untuk menggunakan dan meneruskan data kejadian ke pemberitahuan surel, lihat Tutorial: Mengirim pemberitahuan surel tentang kejadian Azure IoT Hub menggunakan Event Grid dan Logic Apps.

  13. Di bagian kiri atas Logic App Designer, pilih Simpan.

  14. Untuk membuat aplikasi logika kedua untuk memberi tahu manajer saat peralatan keluar dari lokasi konstruksi, ulangi proses yang sama. Beri nama Equipment-Exit aplikasi logika.

Membuat langganan kejadian Azure Maps

Azure Maps mendukung tiga jenis kejadian. Tutorial ini menunjukkan cara membuat langganan ke dua peristiwa berikut:

  • Kejadian geofence masuk
  • Kejadian geofence keluar

Buat geofence exit dan masukkan langganan peristiwa:

  1. Dalam akun Azure Maps Anda, pilih Langganan.

  2. Pilih nama langganan Anda.

  3. Dalam menu pengaturan, pilih kejadian.

    Screenshot of go to Azure Maps account events.

  4. Dalam halaman kejadian, Pilih + Langganan Kejadian.

    Screenshot of create an Azure Maps events subscription.

  5. Di halaman Buat Langganan Kejadian, masukkan nilai berikut:

    • Nama langganan kejadian.
    • Skema Kejadian harus berupa Skema Event Grid.
    • Nama Topik Sistem untuk langganan kejadian ini, yang dalam hal ini adalah Contoso-Construction.
    • Untuk Filter ke Jenis Kejadian, pilih Geofence Entered sebagai jenis kejadian.
    • Untuk Jenis Titik Akhir, pilih Web Hook.
    • Untuk Titik Akhir, salin URL POST HTTP untuk titik akhir aplikasi logika yang Anda buat di bagian sebelumnya. Jika lupa menyimpannya, Anda bisa kembali ke Logic App Designer dan menyalinnya dari langkah pemicu HTTP.

    Screenshot of Azure Maps events subscription details.

  6. Pilih Buat.

  7. Ulangi proses yang sama untuk kejadian geofence keluar. Pastikan memilih Geofence Exited sebagai jenis kejadian.

Menggunakan Spatial Geofence Get API

Selanjutnya, kami menggunakan Spatial Geofence Get API untuk mengirim pemberitahuan email ke Operations Manager saat sepotong peralatan masuk atau keluar dari geofence.

Setiap peralatan memiliki deviceId. Dalam tutorial ini, Anda melacak satu bagian peralatan, dengan ID yang unik device_1.

Diagram berikut memperlihatkan lima lokasi peralatan dari waktu ke waktu, dimulai di lokasi Mulai, yang berada di suatu tempat di luar geofence. Untuk tujuan tutorial ini, lokasi Mulai tidak terdefinisi, karena Anda tidak mengkueri perangkat di lokasi tersebut.

Saat Anda mengkueri Spatial Geofence Get API dengan lokasi peralatan yang menunjukkan entri atau keluar geofence awal, Event Grid memanggil titik akhir aplikasi logika yang sesuai untuk mengirim pemberitahuan email ke Operations Manager.

Masing-masing bagian berikut membuat permintaan API menggunakan lima koordinat lokasi peralatan yang berbeda.

Diagram of geofence map in Azure Maps

Lokasi peralatan 1 (47.638237,-122.132483)

  1. Di aplikasi Postman, pilih Baru.

  2. Di jendela Buat Baru, pilih Permintaan HTTP.

  3. Masukkan Nama permintaan untuk permintaan tersebut, seperti Lokasi 1.

  4. Pilih metode HTTP GET.

  5. Masukkan URL berikut. Permintaan akan terlihat seperti URL berikut (ganti {udid} dengan yang udid Anda simpan di bagian Unggah data GeoJSON Geofencing).

    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
    

    Catatan

    Ganti {geography} dengan cakupan geografis Anda. Untuk informasi selengkapnya, lihat Cakupan geografis layanan Azure Peta dan Spatial Geofence Get API.

  6. Pilih Kirim.

  7. Respons tersebut harus seperti fragmen GeoJSON berikut:

    {
      "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
    }
    

Dalam respons GeoJSON sebelumnya, jarak negatif dari geofence lokasi utama berarti peralatan berada di dalam geofence. Jarak positif dari geofensi sublokasi berarti peralatan berada di luar geofence sublokasi. Karena ini adalah pertama kalinya perangkat ini diletakkan di dalam geofence lokasi utama, parameter isEventPublished diatur ke true. Manajer Operasi menerima pemberitahuan email bahwa peralatan telah memasuki geofence.

Lokasi 2 (47.63800,-122.132531)

  1. Di aplikasi Postman, pilih Baru.

  2. Di jendela Buat Baru, pilih Permintaan HTTP.

  3. Masukkan Nama permintaan untuk permintaan tersebut, seperti Lokasi 2.

  4. Pilih metode HTTP GET.

  5. Masukkan URL berikut. Permintaan akan terlihat seperti URL berikut (ganti {udid} dengan yang udid Anda simpan di bagian Unggah data GeoJSON Geofencing).

    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. Pilih Kirim.

  7. Respons tersebut harus seperti fragmen GeoJSON berikut:

    {
      "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
    }
    

Dalam respons GeoJSON sebelumnya, peralatan tetap berada di geofence lokasi utama dan belum memasuki geofence sublokasi. Akibatnya, isEventPublished parameter diatur ke false, dan Manajer Operasi tidak menerima pemberitahuan email apa pun.

Lokasi 3 (47.63810783315048,-122.13336020708084)

  1. Di aplikasi Postman, pilih Baru.

  2. Di jendela Buat Baru, pilih Permintaan HTTP.

  3. Masukkan Nama permintaan untuk permintaan tersebut, seperti Lokasi 3.

  4. Pilih metode HTTP GET.

  5. Masukkan URL berikut. Permintaan akan terlihat seperti URL berikut (ganti {udid} dengan yang udid Anda simpan di bagian Unggah data GeoJSON Geofencing).

      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. Pilih Kirim.

  7. Respons tersebut harus seperti fragmen GeoJSON berikut:

    {
      "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
    }
    

Dalam respons GeoJSON sebelumnya, peralatan tetap berada di geofence lokasi utama, tetapi memasuki geofence sublokasi. Akibatnya, parameter isEventPublished diatur ke true. Manajer Operasi menerima pemberitahuan email yang menunjukkan bahwa peralatan telah memasuki geofence.

Catatan

Jika peralatan sudah pindah ke sublokasi setelah jam kerja, tidak ada kejadian yang akan dipublikasikan dan manajer operasi tidak akan menerima pemberitahuan apa pun.

Lokasi 4 (47.637988,-122.1338344)

  1. Di aplikasi Postman, pilih Baru.

  2. Di jendela Buat Baru, pilih Permintaan HTTP.

  3. Masukkan Nama permintaan untuk permintaan tersebut, seperti Lokasi 4.

  4. Pilih metode HTTP GET.

  5. Masukkan URL berikut. Permintaan akan terlihat seperti URL berikut (ganti {udid} dengan yang udid Anda simpan di bagian Unggah data GeoJSON Geofencing).

    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. Pilih Kirim.

  7. Respons tersebut harus seperti fragmen GeoJSON berikut:

    {
      "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
    }
    

Dalam respons GeoJSON sebelumnya, peralatan tetap berada di geofence lokasi utama, tetapi keluar dari geofence sublokasi. Namun, perhatikan bahwa nilai userTime adalah setelah expiredTime seperti yang didefinisikan dalam data geofence. Akibatnya, isEventPublished parameter diatur ke false, dan Manajer Operasi tidak menerima pemberitahuan email.

Lokasi 5 (47.63799, -122.134505)

  1. Di aplikasi Postman, pilih Baru.

  2. Di jendela Buat Baru, pilih Permintaan HTTP.

  3. Masukkan Nama permintaan untuk permintaan tersebut, seperti Lokasi 5.

  4. Pilih metode HTTP GET.

  5. Masukkan URL berikut. Permintaan akan terlihat seperti URL berikut (ganti {udid} dengan yang udid Anda simpan di bagian Unggah data GeoJSON Geofencing).

    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. Pilih Kirim.

  7. Respons tersebut harus seperti fragmen GeoJSON berikut:

    {
      "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
    }
    

Dalam respons GeoJSON sebelumnya, peralatan sudah keluar dari geofence lokasi utama. Akibatnya, isEventPublished parameter diatur ke true, dan Manajer Operasi menerima pemberitahuan email yang menunjukkan bahwa peralatan telah keluar dari geofence.

Anda juga dapat Mengirim pemberitahuan email menggunakan Event Grid dan Logic Apps. Untuk informasi selengkapnya, lihat Penanganan aktivitas di Azure Event Grid.

Membersihkan sumber daya

Tidak ada sumber daya yang memerlukan pembersihan.

Langkah berikutnya