全部產品
Search
文件中心

ApsaraDB for Redis:基於TairGIS實現電子圍欄

更新時間:Jul 27, 2024

您可以通過雲原生記憶體資料庫Tair的TairGIS結構,輕鬆實現基於點、線、面的使用者軌跡監測。

背景資訊

基於位置的服務LBS(Location Based Services)使用各種類型的定位技術來擷取裝置當前的所在位置,通過移動互連網向裝置提供資訊資源和基礎服務。近年來,LBS技術已成為諸多行業應用與研究的熱點,在很多應用中起到了舉足輕重的作用。

Redis社區版提供了Redis Geo功能,僅能查詢點與點之間的關係,或者查詢某半徑範圍內的點,整體精度較粗,可實現的功能也比較少。

相比較Redis Geo,Tair自研的GIS不僅支援點與點之間的查詢,還支援點、線和多邊形三者之間的相互查詢,大大降低了LBS應用的開發成本。例如,當前常見的兒童和老人的電子圍欄安全防護,是TairGIS的典型應用。

兒童電子圍欄方案樣本

方案概述:添加學校位置為電子圍欄,若兒童在指定時間點離開學校地區時,則進行預警操作(通知監護人等)。

  1. 可通過GIS.ADD命令,將學校地區通過WKT(Well-known text)格式,存入GIS中,樣本如下。

    GIS.ADD test_app school_location 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'
  2. 擷取目標位置,並判斷是否在電子圍欄內。

    • 使用GPS定位目標位置

      擷取目標的當前GPS資訊後,可以使用GIS.CONTAINS命令判斷該座標是否在電子圍欄內,樣本如下。

      GIS.CONTAINS test_app 'POINT (40.086631 30.138141)'
    • 通過電訊廠商擷取目標位置

      由於電訊廠商部署的基站密度不一定相同,您擷取到的位置資訊可能是該基站訊號覆蓋的整個地區,也可能是基站某方向的扇形地區,您可以將擷取到的地區資訊通過WKT描述為POLYGON(多邊形),例如POLYGON ((10 22, 30 45, 16 53, 10 22))

      擷取後就可以使用GIS.CONTAINS命令該當前目標位置所在的基站地區是否與電子圍欄有重疊,重疊表示目標仍在電子圍欄內或電子圍欄附近,不重疊則表示目標已離開電子圍欄。

      GIS.CONTAINS test_app 'POLYGON ((10 22, 30 45, 16 53, 10 22))'
說明

您也可以通過GIS.WITHINGIS.INTERSECTS命令判斷目標位置與電子圍欄的關係,更多命令說明請參見GIS

總結

使用Tair自研的GIS結構,可以方便地實現LBS應用的地理資訊儲存和計算,同時也能滿足高並發情境對高效能的需求。