您可以通過Tair(企業版)的TairGIS結構,輕松實現基于點、線、面的用戶軌跡監測。
背景信息
基于位置的服務LBS(Location Based Services)使用各種類型的定位技術來獲取設備當前的所在位置,通過移動互聯網向設備提供信息資源和基礎服務。近年來,LBS技術已成為諸多行業應用與研究的熱點,在很多應用中起到了舉足輕重的作用。
Redis提供了Redis Geo功能,僅能查詢點與點之間的關系,或者查詢某半徑范圍內的點,整體精度較粗,可實現的功能也比較少。
相比較Redis Geo,Tair自研的GIS不僅支持點與點之間的查詢,還支持點、線和多邊形三者之間的相互查詢,大大降低了LBS應用的開發成本。例如,當前常見的兒童和老人的電子圍欄安全防護,是TairGIS的典型應用。
兒童電子圍欄方案示例
方案概述:添加學校位置為電子圍欄,若兒童在指定時間點離開學校區域時,則進行預警操作(通知監護人等)。
可通過GIS.ADD命令,將學校區域通過WKT(Well-known text)格式,存入GIS中,示例如下。
GIS.ADD test_app school_location 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'
獲取目標位置,并判斷是否在電子圍欄內。
使用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.WITHIN、GIS.INTERSECTS命令判斷目標位置與電子圍欄的關系,更多命令說明請參見GIS。
總結
使用Tair自研的GIS結構,可以方便地實現LBS應用的地理信息存儲和計算,同時也能滿足高并發場景對高性能的需求。