TairGIS adalah struktur data geospasial dalam Tair (Enterprise Edition) yang menyimpan dan mengkueri bentuk geografis—titik, garis, dan poligon. TairGIS menawarkan kinerja tinggi dalam skenario konkurensi tinggi, sehingga cocok untuk aplikasi layanan berbasis lokasi (LBS) real-time seperti geofencing. Topik ini menjelaskan cara menggunakan TairGIS untuk membangun geofence.
Cara kerja
Geofence adalah batas virtual di sekitar area geografis. TairGIS menggunakan WKT (Well-Known Text), standar terbuka untuk merepresentasikan bentuk geometris sebagai string teks, guna mendefinisikan dan mengkueri batas tersebut.
TairGIS mendukung tiga tipe geometri WKT yang relevan dengan geofencing:
| Geometry | WKT format | Kapan digunakan |
|---|---|---|
| Point | POINT (longitude latitude) | Lokasi perangkat dari GPS |
| Polygon | POLYGON ((x1 y1, x2 y2, ...)) | Batas geofence atau area cakupan stasiun base |
| Line | LINESTRING (x1 y1, x2 y2) | Rute atau jalur |
Alur kerja inti geofencing:
Definisikan batas geofence dengan GIS.ADD menggunakan poligon WKT.
Ambil lokasi perangkat saat ini sebagai titik atau poligon WKT.
Jalankan GIS.CONTAINS untuk memeriksa apakah lokasi tersebut berada di dalam geofence.
Bandingkan hasil pemeriksaan berturut-turut untuk mendeteksi event masuk dan keluar, lalu picu notifikasi.
Siapkan geofence
Langkah 1: Tambahkan batas geofence
Gunakan GIS.ADD untuk menyimpan area geografis di bawah kunci bernama. Contoh berikut menambahkan batas sekolah sebagai poligon:
GIS.ADD test_app school_location 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'Langkah 2: Periksa apakah perangkat berada di dalam geofence
Bergantung pada cara Anda memperoleh lokasi perangkat, gunakan salah satu metode berikut.
Lokasi berbasis GPS (titik)
GPS mengembalikan koordinat yang presisi. Masukkan koordinat tersebut sebagai POINT WKT ke GIS.CONTAINS:
GIS.CONTAINS test_app 'POINT (40.086631 30.138141)'GIS.CONTAINS mengembalikan nama semua geometri yang tersimpan yang memuat bentuk yang diberikan. Jika titik tersebut berada di luar semua geometri yang tersimpan, responsnya berupa array kosong.
Lokasi berbasis penyedia layanan (poligon)
Saat menggunakan data operator telekomunikasi, lokasi yang dilaporkan mungkin berupa sektor atau seluruh area cakupan stasiun base, bukan titik presisi. Representasikan area cakupan ini sebagai POLYGON WKT:
GIS.CONTAINS test_app 'POLYGON ((10 22, 30 45, 16 53, 10 22))'Jika poligon cakupan tersebut beririsan dengan school_location, responsnya mencakup school_location, yang menunjukkan bahwa perangkat berada di dalam atau dekat geofence.
Langkah 3: Deteksi event masuk dan keluar
GIS.CONTAINS mengembalikan snapshot status saat ini. Panggil secara berulang dengan interval tetap dan bandingkan hasil berturut-turut untuk mendeteksi perubahan status:
| Hasil sebelumnya | Hasil saat ini | Event | Tindakan |
|---|---|---|---|
school_location | array kosong | Perangkat keluar dari geofence | Picu notifikasi keluar |
| array kosong | school_location | Perangkat masuk ke geofence | Picu notifikasi masuk |
Sebagai contoh, dalam aplikasi keamanan sekolah, polling lokasi siswa dengan interval tetap. Ketika GIS.CONTAINS berubah dari mengembalikan school_location menjadi array kosong selama jam pemantauan, picu notifikasi keluar.
Anda juga dapat menjalankan perintah GIS.WITHIN dan GIS.INTERSECTS untuk memeriksa apakah perangkat berada di dalam pagar digital. Untuk referensi lengkap perintah, lihat TairGIS commands.
Langkah berikutnya
Jelajahi referensi perintah TairGIS lengkap untuk operasi geometri tambahan.