TairGis是一種使用R-Tree做索引,支持地理信息系統(tǒng)GIS(Geographic Information System)相關接口的數(shù)據(jù)結構。Redis的原生GEO命令是使用GeoHash和Redis Sorted Set結構完成的,主要用于點的查詢,TairGIS在此基礎上還支持線、面的查詢,功能更加強大。
前提條件 實例為Tair 內(nèi)存型 。
說明 最新小版本將提供更豐富的功能與穩(wěn)定的服務,建議將實例的小版本升級到最新,具體操作請參見升級小版本 。如果您的實例為集群架構或讀寫分離架構,請將代理節(jié)點的小版本也升級到最新,否則可能出現(xiàn)命令無法識別的情況。
注意事項 操作對象為Tair 實例中的TairGIS數(shù)據(jù)。
命令列表 表 1. TairGIS命令
命令
語法
說明
GIS.ADD
GIS.ADD area polygonName polygonWkt [polygonName polygonWkt ...]
在area中添加指定名稱的多邊形(可添加多個),使用WKT(Well-known text)描述。
說明 WKT是一種文本標記語言,用于描述矢量幾何對象、空間參照系統(tǒng)及空間參照系統(tǒng)之間的轉換。
GIS.GET
GIS.GET area polygonName
獲取目標area中指定多邊形的WKT信息。
GIS.GETALL
GIS.GETALL area [WITHOUTWKT]
獲取目標area中所有多邊形的名稱和WKT信息。如果設置了WITHOUTWKT 選項,僅返回多邊形的名稱。
GIS.CONTAINS
GIS.CONTAINS area polygonWkt [WITHOUTWKT]
判斷指定的點、線或面是否包含在目標area的多邊形中,若包含,則返回目標area中命中的多邊形數(shù)量與多邊形信息。
GIS.WITHIN
GIS.WITHIN area polygonWkt [WITHOUTWKT]
判斷目標area是否包含在指定的點、線或面中,若包含,則返回目標area中命中的多邊形數(shù)量與多邊形信息。
GIS.INTERSECTS
GIS.INTERSECTS area polygonWkt
判斷指定的點、線或面與目標area的多邊形是否相交,若相交,則返回目標area中與其相交的多邊形數(shù)量與多邊形信息。
GIS.SEARCH
GIS.SEARCH area [RADIUS longitude latitude distance M|KM|FT|MI] [MEMBER field distance M|KM|FT|MI] [GEOM geom] [COUNT count] [ASC|DESC] [WITHDIST] [WITHOUTWKT]
在指定經(jīng)、緯度及半徑距離范圍內(nèi),查找目標area中的點。
GIS.DEL
GIS.DEL area polygonName
刪除目標area中指定的多邊形。
DEL
DEL key [key ...]
原生Redis命令,可以刪除一條或多條TairGIS數(shù)據(jù)。
GIS.ADD 類別
說明
語法
GIS.ADD area polygonName polygonWkt [polygonName polygonWkt ...]
時間復雜度
O(log n)
命令描述
在area中添加指定名稱的多邊形(可添加多個),使用WKT(Well-known text)描述。
說明 WKT是一種文本標記語言,用于描述矢量幾何對象、空間參照系統(tǒng)及空間參照系統(tǒng)之間的轉換。
選項
返回值
示例
命令示例:
GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'
返回示例:
(integer) 1
GIS.GET 類別
說明
語法
GIS.GET area polygonName
時間復雜度
O(1)
命令描述
獲取目標area中指定多邊形的WKT信息。
選項
area :一個幾何概念。
PolygonName :多邊形的名稱。
返回值
執(zhí)行成功:WKT信息。
area或polygonName不存在:nil。
其它情況返回相應的異常信息。
示例
提前執(zhí)行GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'
命令。
命令示例:
GIS.GET hangzhou campus
返回示例:
'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'
GIS.GETALL 類別
說明
語法
GIS.GETALL area [WITHOUTWKT]
時間復雜度
O(n)
命令描述
獲取目標area中所有多邊形的名稱和WKT信息。如果設置了WITHOUTWKT 選項,僅返回多邊形的名稱。
選項
返回值
示例
提前執(zhí)行GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'
命令。
命令示例:
GIS.GETALL hangzhou
返回示例:
1) "campus"
2) "POLYGON((30 10,40 40,20 40,10 20,30 10))"
GIS.CONTAINS 類別
說明
語法
GIS.CONTAINS area polygonWkt [WITHOUTWKT]
時間復雜度
最理想情況:
最差情況:O(log n)
命令描述
判斷指定的點、線或面是否包含在目標area的多邊形中,若包含,則返回目標area中命中的多邊形數(shù)量與多邊形信息。
選項
返回值
示例
提前執(zhí)行GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'
命令。
命令示例:
GIS.CONTAINS hangzhou 'POINT (30 11)'
返回示例:
1) "1"
2) 1) "campus"
2) "POLYGON((30 10,40 40,20 40,10 20,30 10))"
GIS.WITHIN 類別
說明
語法
GIS.WITHIN area polygonWkt [WITHOUTWKT]
時間復雜度
最理想情況:
最差情況:O(log n)
命令描述
判斷目標area是否包含在指定的點、線或面中,若包含,則返回目標area中命中的多邊形數(shù)量與多邊形信息。
選項
返回值
示例
提前執(zhí)行GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'
命令。
命令示例:
GIS.WITHIN hangzhou 'POLYGON ((30 5, 50 50, 20 50, 5 20, 30 5))'
返回示例:
1) "1"
2) 1) "campus"
2) "POLYGON((30 10,40 40,20 40,10 20,30 10))"
GIS.INTERSECTS 類別
說明
語法
GIS.INTERSECTS area polygonWkt
時間復雜度
最理想情況:
最差情況:O(log n)
命令描述
判斷指定的點、線或面與目標area的多邊形是否相交,若相交,則返回目標area中與其相交的多邊形數(shù)量與多邊形信息。
選項
返回值
示例
提前執(zhí)行GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'
命令。
命令示例:
GIS.INTERSECTS hangzhou 'LINESTRING (30 10, 40 40)'
返回示例:
1) "1"
2) 1) "campus"
2) "POLYGON((30 10,40 40,20 40,10 20,30 10))"
GIS.SEARCH 類別
說明
語法
GIS.SEARCH area [RADIUS longitude latitude distance M|KM|FT|MI]
[MEMBER field distance M|KM|FT|MI]
[GEOM geom]
[COUNT count]
[ASC|DESC]
[WITHDIST]
[WITHOUTWKT]
時間復雜度
最理想情況:
最差情況:O(log n)
命令描述
在指定經(jīng)、緯度及半徑距離范圍內(nèi),查找目標area中的點。
選項
area :一個幾何概念。
RADIUS :傳入經(jīng)度(longitude)、緯度(latitude)、半徑距離(distance)和半徑單位(M表示米、KM表示千米、FT表示英尺、MI表示英里)進行搜索,例如RADIUS 15 37 200 KM
。
MEMBER :選擇當前area中已存在的POINT作為搜索原點,并指定半徑進行搜索,取值順序為多邊形名稱(field)、半徑(distance)、半徑單位(M表示米、KM表示千米、FT表示英尺、MI表示英里),例如MEMBER Agrigento 100 KM
。
GEOM :按照WKT的格式設置搜索范圍,可以是任意多邊形,例如GEOM 'POLYGON((10 30,20 30,20 40,10 40))'
。
COUNT :用于限定返回的個數(shù),例如COUNT 3
。
ASC |DESC :用于控制返回信息按照距離排序,ASC 表示根據(jù)中心位置,由近到遠排序;DESC 表示由遠到近排序。
WITHDIST :用于控制是否返回目標點與搜索原點的距離。
WITHOUTWKT :用于控制是否返回目標點的WKT信息,如果加上該參數(shù),則不返回WKT信息。
說明 只能同時使用RADIUS 、MEMBER 和GEOM 中的一種方式。
返回值
示例
提前執(zhí)行GIS.ADD Sicily "Palermo" "POINT (13.361389 38.115556)" "Catania" "POINT(15.087269 37.502669)"
命令。
命令示例:
GIS.SEARCH Sicily RADIUS 15 37 200 km WITHDIST ASC
返回示例:
1) (integer) 2
2) 1) "Catania"
2) "POINT(15.087269 37.502669)"
3) "56.4413"
4) "Palermo"
5) "POINT(13.361389 38.115556)"
6) "190.4424"
GIS.DEL 類別
說明
語法
GIS.DEL area polygonName
時間復雜度
O(log n)
命令描述
刪除目標area中指定的多邊形。
選項
area :一個幾何概念。
PolygonName :多邊形的名稱。
返回值
執(zhí)行成功:OK。
area或polygonName不存在:nil。
其它情況返回相應的異常信息。
示例
提前執(zhí)行GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'
命令。
命令示例:
GIS.DEL hangzhou campus
返回示例:
OK