TairGIS は、R 木インデックスを使用し、地理情報システム (GIS) 関連の API をサポートするデータ構造です。GeoHash と Redis Sorted Set を使用してポイントをクエリできるネイティブの Redis GEO コマンドと比較して、TairGIS はポイント、ラインストリング、ポリゴンをクエリできるため、より多くの機能を提供します。
特徴
クエリとストレージに R 木インデックスを使用します。
セットの共通部分のクエリを含む、ラインストリングとポリゴンのクエリをサポートします。
ネイティブ Redis の
GEORADIUSコマンドに相当する GIS.SEARCH コマンドを提供します。
このモジュールはオープンソースです。詳細については、「TairGIS」をご参照ください。
ベストプラクティス
前提条件
Tair DRAM ベースのインスタンスが作成されていること。
最新のマイナーバージョンでは、より多くの機能と高い安定性が提供されます。インスタンスを最新のマイナーバージョンに更新することをお勧めします。詳細については、「インスタンスのマイナーバージョンを更新する」をご参照ください。インスタンスが クラスターまたは 読み書き分離インスタンスである場合は、インスタンス内のプロキシノードを最新のマイナーバージョンに更新することをお勧めします。これにより、すべてのコマンドが期待どおりに実行されるようになります。
使用上の注意
管理したい TairGIS データは Tair インスタンスに保存されます。
サポートされているコマンド
表 1. TairGIS コマンド
コマンド | 構文 | 説明 |
| 1 つ以上のポリゴンをエリアに追加します。ポリゴンは Well-Known Text (WKT) で記述されます。 説明 WKT は、マップ上のベクタージオメトリオブジェクト、空間オブジェクトの空間参照系、および空間参照系間の変換を表現するためのテキストマークアップ言語です。 | |
| エリア内のポリゴンの WKT 表現を取得します。 | |
| エリア内のすべてのポリゴンの名前と WKT 表現を取得します。[WITHOUTWKT] パラメーターを指定した場合、ポリゴンの名前のみが返されます。 | |
| ポイント、ラインストリング、またはポリゴンが特定のエリア内のポリゴンに位置しているかどうかを確認します。該当する場合、このコマンドは、エリア内でそのポイント、ラインストリング、またはポリゴンを含むポリゴンの数と WKT 表現を返します。 | |
| エリアがポイント、ラインストリング、またはポリゴン内に位置しているかどうかを確認します。該当する場合、このコマンドは、そのポイント、ラインストリング、またはポリゴン内に位置するエリア内のポリゴンの数と WKT 表現を返します。 | |
| ポイント、ラインストリング、またはポリゴンが特定のエリア内のポリゴンと交差するかどうかを確認します。該当する場合、このコマンドは、そのポイント、ラインストリング、またはポリゴンと交差するエリア内のポリゴンの数と WKT 表現を返します。 | |
| 特定の経度と緯度の位置から半径内にあるエリア内のポイントをクエリします。 | |
| エリアから特定のポリゴンを削除します。 | |
| 1 つ以上の TairGIS キーを削除します。これはネイティブの Redis コマンドです。 |
次のリストは、この Topic で使用されるコマンド構文の規則について説明しています。
大文字のキーワード: コマンドのキーワードを示します。斜体のテキスト: 変数を示します。[options]: 角括弧で囲まれたパラメーターがオプションであることを示します。角括弧で囲まれていないパラメーターは指定する必要があります。A|B: 縦棒 (|) で区切られたパラメーターが相互排他的であることを示します。パラメーターのいずれか 1 つのみを指定できます。...: この記号の前のパラメーターを繰り返し指定できることを示します。
GIS.ADD
項目 | 説明 |
構文 |
|
時間計算量 | O(log n) |
コマンドの説明 | 1 つ以上のポリゴンをエリアに追加します。ポリゴンは Well-Known Text (WKT) で記述されます。 説明 WKT は、マップ上のベクタージオメトリオブジェクト、空間オブジェクトの空間参照系、および空間参照系間の変換を表現するためのテキストマークアップ言語です。 |
パラメーター |
|
出力 |
|
例 | コマンドの例: 出力の例: |
GIS.GET
項目 | 説明 |
構文 |
|
時間計算量 | O(1) |
コマンドの説明 | エリア内のポリゴンの WKT 表現を取得します。 |
パラメーター |
|
出力 |
|
例 | 事前に コマンドの例: 出力の例: |
GIS.GETALL
項目 | 説明 |
構文 |
|
時間計算量 | O(n) |
コマンドの説明 | エリア内のすべてのポリゴンの名前と WKT 表現を取得します。[WITHOUTWKT] パラメーターを指定した場合、ポリゴンの名前のみが返されます。 |
パラメーター |
|
出力 |
|
例 | 事前に コマンドの例: 出力の例:1) "campus" 2) "POLYGON((30 10,40 40,20 40,10 20,30 10))" |
GIS.CONTAINS
項目 | 説明 |
構文 |
|
時間計算量 |
|
コマンドの説明 | ポイント、ラインストリング、またはポリゴンが特定のエリア内のポリゴンに位置しているかどうかを確認します。該当する場合、このコマンドは、エリア内でそのポイント、ラインストリング、またはポリゴンを含むポリゴンの数と WKT 表現を返します。 |
パラメーター |
|
出力 |
|
例 | 事前に コマンドの例: 出力例: |
GIS.WITHIN
項目 | 説明 |
構文 |
|
時間計算量 |
|
コマンドの説明 | エリアがポイント、ラインストリング、またはポリゴン内に位置しているかどうかを確認します。該当する場合、このコマンドは、そのポイント、ラインストリング、またはポリゴン内に位置するエリア内のポリゴンの数と WKT 表現を返します。 |
パラメーター |
|
出力 |
|
例 | 事前に コマンドの例: 出力例: |
GIS.INTERSECTS
項目 | 説明 |
構文 |
|
時間計算量 |
|
コマンドの説明 | ポイント、ラインストリング、またはポリゴンが特定のエリア内のポリゴンと交差するかどうかを確認します。該当する場合、このコマンドは、そのポイント、ラインストリング、またはポリゴンと交差するエリア内のポリゴンの数と WKT 表現を返します。 |
パラメーター |
|
出力 |
|
例 | 事前に コマンドの例: 出力例: |
GIS.SEARCH
項目 | 説明 |
構文 | |
時間計算量 |
|
コマンドの説明 | 特定の経度と緯度の位置から半径内にあるエリア内のポイントをクエリします。 |
オプション |
説明 [RADIUS]、[MEMBER]、および [GEOM] パラメーターのうち 1 つだけを指定できます。 |
出力 |
|
例 | 事前に コマンドの例: 出力の例: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
項目 | 説明 |
構文 |
|
時間計算量 | O(log n) |
コマンドの説明 | エリアから特定のポリゴンを削除します。 |
パラメーター |
|
出力 |
|
例 | 事前に コマンドの例: 出力の例:OK |