すべてのプロダクト
Search
ドキュメントセンター

Tair (Redis® OSS-Compatible):GIS

最終更新日:Sep 12, 2024

TairGISは、Rツリーインデックスを使用し、地理情報システム (GIS) に関連するAPIをサポートするデータ構造です。 GeohashおよびRedis Sorted Setを使用してポイントをクエリできるネイティブのRedis GEOコマンドと比較して、TairGISはポイント、ラインストリング、およびポリゴンをクエリできるため、より多くの機能を提供します。

特徴

  • クエリとストレージにR-treeインデックスを使用します。

  • セットの共通部分のクエリを含む、ラインストリングおよびポリゴンのクエリをサポートします。

  • ネイティブRedisのGEORADIUSコマンドと同じ目的を果たすGIS.SEARCHコマンドを提供します。

モジュールはオープンソースです。 詳細については、『GitHub』をご参照ください。

ベストプラクティス

前提条件

Tair DRAMベースのインスタンスが作成されます。

説明

最新のマイナーバージョンは、より多くの機能とより高い安定性を提供します。 インスタンスを最新のマイナーバージョンに更新することを推奨します。 詳細については、「インスタンスのマイナーバージョンの更新」をご参照ください。 インスタンスがクラスターまたは読み書き分離インスタンスの場合、インスタンスのプロキシノードを最新のマイナーバージョンに更新することを推奨します。 これにより、すべてのコマンドを期待どおりに実行できます。

使用上の注意

管理するTairGISデータは、Tairインスタンスに保存されます。

サポートされるコマンド

表 1. TairGISコマンド

コマンド

構文

説明

GIS.ADD

GIS.ADDエリアpolygonName polygonWkt [polygonName polygonWkt ...]

1つ以上のポリゴンをエリアに追加します。 ポリゴンは、周知のテキスト (WKT) で記述される。

説明

WKTは、マップ上のベクトル幾何オブジェクト、空間オブジェクトの空間参照システム、および空間参照システム間の変換を表すためのテキストマークアップ言語です。

GIS.GET

GIS.GETエリアpolygonName

領域内のポリゴンのWKT表現を取得します。

GIS.GETALL

GIS.GETALLエリア [WITHOUTWKT]

領域内のすべてのポリゴンの名前とWKT表現を取得します。 WITHOUTWKTパラメーターを指定した場合、ポリゴンの名前のみが返されます。

GIS.CONTAINS

GIS. containins area polygonWkt [WITHOUTWKT]

ポイント、ラインストリング、またはポリゴンが特定の領域内のポリゴンにあるかどうかを確認します。 はいの場合、このコマンドは、領域内の点、線列、またはポリゴンを含むポリゴンの数とWKT表現を返します。

GIS.WITHIN

GIS.WITHINエリアpolygonWkt [WITHOUTWKT]

領域が点、線列、またはポリゴン内にあるかどうかをチェックします。 はいの場合、このコマンドは、ポイント、ラインストリング、またはポリゴン内にある領域内のポリゴンの番号とWKT表現を返します。

GIS.INTERSECTS

GIS.INTERSECTSエリアpolygonWkt

ポイント、ラインストリング、またはポリゴンが特定の領域内のポリゴンと交差するかどうかを確認します。 はいの場合、このコマンドは、点、線列、またはポリゴンと交差する領域内のポリゴンの数とWKT表現を返します。

GIS.SEARCH

GIS.SEARCH area [RADIUS経度緯度距離M | KM | FT | MI] [MEMBER field distance M | KM | FT | MI] [GEOM geom] [COUNT count] [ASC | DESC] [WITHDIST] [WITHOUTWKT]

特定の経度と緯度の位置の半径内にあるエリア内のポイントを照会します。

GIS.DEL

GIS.DELエリアpolygonName

特定のポリゴンを領域から削除します。

DEL

DELキー [キー...]

1つ以上のTairGISキーを削除します。 これはネイティブのRedisコマンドです。

説明

このトピックで使用されるコマンド構文の規則を次に示します。

  • Uppercase keyword: commandキーワードを示します。

  • イタリックテキスト: 変数を示します。

  • [options]: 囲まれたパラメータがオプションであることを示します。 括弧で囲まれていないパラメータを指定する必要があります。

  • A | B: 縦棒 (|) で区切られたパラメータが相互に排他的であることを示します。 指定できるパラメーターは1つだけです。

  • ...: このシンボルの前にあるパラメーターを繰り返し指定できることを示します。

GIS.ADD

パラメーター

説明

構文

GIS.ADDエリアpolygonName polygonWkt [polygonName polygonWkt ...]

時間の複雑さ

O (ログn)

コマンド説明

1つ以上のポリゴンをエリアに追加します。 ポリゴンは、周知のテキスト (WKT) で記述される。

説明

WKTは、マップ上のベクトル幾何オブジェクト、空間オブジェクトの空間参照システム、および空間参照システム間の変換を表すためのテキストマークアップ言語です。

パラメーター

  • area: 幾何学的な概念。

  • PolygonName: 管理するポリゴンの名前。

  • polygonWkt: WKTで記述されたポリゴンの説明。 説明は経度と緯度を含みます。 WKTでは、次のポリゴンタイプを記述できます。

    • POINT: ポイントを記述するWKT。 例: 'POINT (120.086631 30.138141)' この値は、点が経度120.086631および緯度30.138141に位置することを示す。

    • LINESTRING: ラインストリングを記述するWKT。 ラインストリングは2つの点からなる。 例: 'LINESTRING (30 10, 40 40) '

    • POLYGON: ポリゴンを記述するWKT。 多角形は複数の点からなる。 例: 'POLYGON ((31 20,29 20,29 21,31))'

    説明
    • 経度の有効値は − 180〜180であり、緯度の有効値は − 90〜90である。

    • MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRY、またはCOLLECTIONコレクションタイプはサポートされていません。

Output

  • 操作が成功すると、追加および更新されたポリゴンの数が返されます。

  • それ以外の場合、エラーメッセージが返されます。

例:

サンプルコマンド:

GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'

サンプル出力:

(integer) 1

GIS.GET

パラメーター

説明

構文

GIS.GETエリアpolygonName

時間の複雑さ

O(1)

コマンド説明

領域内のポリゴンのWKT表現を取得します。

パラメーター

  • area: 幾何学的な概念。

  • PolygonName: 管理するポリゴンの名前。

Output

  • 操作が成功した場合、ポリゴンのWKT表現が返されます。

  • 領域またはポリゴンが存在しない場合は、nilが返されます。

  • それ以外の場合、エラーメッセージが返されます。

例:

GIS.ADD hangzhou campus 'POLYGON ((30 10、40、20 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エリア [WITHOUTWKT]

時間の複雑さ

O(n)

コマンド説明

領域内のすべてのポリゴンの名前とWKT表現を取得します。 WITHOUTWKTパラメーターを指定した場合、ポリゴンの名前のみが返されます。

パラメーター

  • area: 幾何学的な概念。

  • WITHOUTWKT: ポリゴンのWKT表現を返すかどうかを指定します。 このパラメーターを指定すると、ポリゴンのWKT表現は返されません。

Output

  • 操作が成功すると、ポリゴンの名前とWKT表現が返されます。 WITHOUTWKTパラメーターを指定した場合、ポリゴンの名前のみが返されます。

  • エリアが存在しない場合は、nilが返されます。

  • それ以外の場合、エラーメッセージが返されます。

例:

GIS.ADD hangzhou campus 'POLYGON ((30 10、40、20 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. containins area polygonWkt [WITHOUTWKT]

時間の複雑さ

  • 最適な時間の複雑さ: log公式

  • 最も望ましい時間の複雑さ: O(log n)

コマンド説明

ポイント、ラインストリング、またはポリゴンが特定の領域内のポリゴンにあるかどうかを確認します。 はいの場合、このコマンドは、領域内の点、線列、またはポリゴンを含むポリゴンの数とWKT表現を返します。

パラメーター

  • area: 幾何学的な概念。

  • polygonWkt: WKTで記述されたポリゴンの説明。 WKTでは、次のポリゴンタイプを記述できます。

    • POINT: ポイントを記述するWKT。

    • LINESTRING: ラインストリングを記述するWKT。

    • POLYGON: ポリゴンを記述するWKT。

  • WITHOUTWKT: ポリゴンのWKT表現を返すかどうかを指定します。 このパラメーターを指定すると、ポリゴンのWKT表現は返されません。

Output

  • 操作が成功した場合、ポリゴンの番号とWKT表現が返されます。

  • 領域が存在しない場合、「空のリストまたはセット」メッセージが返されます。

  • それ以外の場合、エラーメッセージが返されます。

例:

GIS.ADD hangzhou campus 'POLYGON ((30 10、40、20 40、20 40、10 20、30 10))' コマンドは事前に実行されます。

サンプルコマンド:

GIS.CONTAINS hangzhou 'POINT (30 11)'

サンプル出力:

G1) "1"
2) 1) "campus"
   2) "POLYGON((30 10,40 40,20 40,10 20,30 10))"IS.CONTAINS hangzhou 'POINT (30 11)'

GIS.WITHIN

パラメーター

説明

構文

GIS.WITHINエリアpolygonWkt [WITHOUTWKT]

時間の複雑さ

  • 最適な時間の複雑さ: log公式

  • 最も望ましい時間の複雑さ: O(log n)

コマンド説明

領域が点、線列、またはポリゴン内にあるかどうかをチェックします。 はいの場合、このコマンドは、ポイント、ラインストリング、またはポリゴン内にある領域内のポリゴンの番号とWKT表現を返します。

パラメーター

  • area: 幾何学的な概念。

  • polygonWkt: WKTで記述されたポリゴンの説明。 WKTでは、次のポリゴンタイプを記述できます。

    • POINT: ポイントを記述するWKT。

    • LINESTRING: ラインストリングを記述するWKT。

    • POLYGON: ポリゴンを記述するWKT。

    説明

    MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRY、またはCOLLECTIONはサポートされていません。

  • WITHOUTWKT: ポリゴンのWKT表現を返すかどうかを指定します。 このパラメーターを指定すると、ポリゴンのWKT表現は返されません。

Output

  • 操作が成功した場合、ポリゴンの番号とWKT表現が返されます。

  • 領域が存在しない場合、「空のリストまたはセット」メッセージが返されます。

  • それ以外の場合、エラーメッセージが返されます。

例:

GIS.ADD hangzhou campus 'POLYGON ((30 10、40、20 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エリアpolygonWkt

時間の複雑さ

  • 最適な時間の複雑さ: log公式

  • 最も望ましい時間の複雑さ: O(log n)

コマンド説明

ポイント、ラインストリング、またはポリゴンが特定の領域内のポリゴンと交差するかどうかを確認します。 はいの場合、このコマンドは、点、線列、またはポリゴンと交差する領域内のポリゴンの数とWKT表現を返します。

パラメーター

  • area: 幾何学的な概念。

  • polygonWkt: WKTで記述されたポリゴンの説明。 WKTでは、次のポリゴンタイプを記述できます。

    • POINT: ポイントを記述するWKT。

    • LINESTRING: ラインストリングを記述するWKT。

    • POLYGON: ポリゴンを記述するWKT。

  • WITHOUTWKT: ポリゴンのWKT表現を返すかどうかを指定します。 このパラメーターを指定すると、ポリゴンのWKT表現は返されません。

Output

  • 操作が成功した場合、ポリゴンの番号とWKT表現が返されます。

  • 領域が存在しない場合、「空のリストまたはセット」メッセージが返されます。

  • それ以外の場合、エラーメッセージが返されます。

例:

GIS.ADD hangzhou campus 'POLYGON ((30 10、40、20 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]

時間の複雑さ

  • 最適な時間の複雑さ: log公式

  • 最も望ましい時間の複雑さ: O(log n)

コマンド説明

特定の経度と緯度の位置の半径内にあるエリア内のポイントを照会します。

パラメーター

  • area: 幾何学的な概念。

  • RADIUS: 経度、緯度、半径、半径の単位。 単位の有効な値: M (メートル) 、KM (キロメートル) 、FT (フィート) 、およびMI (マイル) 。 例: RADIUS 15 37 200 KM

  • MEMBER: 基点として使用される領域内の点とその点の半径。 値は、ポリゴン (フィールド) の名前、検索半径 (距離) 、および半径単位の順序で指定する必要があります。 半径単位の有効な値: M (メートル) 、KM (キロメートル) 、FT (フィート) 、およびMI (マイル) 。 例: MEMBERアグリジェント100 KM

  • GEOM: 検索範囲を指定するWKTで記述されたポリゴン。 例: GEOM「POLYGON((10 30,20 30,20 40,10 40)) 」

  • COUNT: 返すことができるエントリの最大数。 例: COUNT 3

  • ASC | DESC: 返されたエントリがランク付けされる順序。 ASCは、返されたエントリが、中心までの距離に基づいてショートからロングにランク付けされることを示します。 DESCは、返されたエントリが、中心までの距離に基づいてロングからショートにランク付けされることを示します。

  • WITHDIST: 特定のポイントとMEMBERパラメーターで指定されたポイント間の距離を返すかどうかを指定します。

  • WITHOUTWKT: 点のWKT表現を返すかどうかを指定します。 このパラメーターを指定すると、ポイントのWKT表現は返されません。

説明

RADIUSMEMBER、およびGEOMパラメーターのいずれかのみを指定できます。

Output

  • 操作が成功した場合、ポイントの数とWKT表現が返されます。

  • 領域が存在しない場合、「空のリストまたはセット」メッセージが返されます。

  • それ以外の場合、エラーメッセージが返されます。

例:

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エリアpolygonName

時間の複雑さ

O (ログn)

コマンド説明

特定のポリゴンを領域から削除します。

パラメーター

  • area: 幾何学的な概念。

  • PolygonName: 管理するポリゴンの名前。

Output

  • 操作が成功した場合、OKが返されます。

  • 領域またはポリゴンが存在しない場合は、nilが返されます。

  • それ以外の場合、エラーメッセージが返されます。

例:

GIS.ADD hangzhou campus 'POLYGON ((30 10、40、20 40、20 40、10 20、30 10))' コマンドは事前に実行されます。

サンプルコマンド:

GIS.DEL hangzhou campus

サンプル出力:

OK