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

Tair (Redis® OSS-Compatible):GIS

最終更新日:Nov 09, 2025

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

特徴

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

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

  • ネイティブ Redis の GEORADIUS コマンドに相当する GIS.SEARCH コマンドを提供します。

このモジュールはオープンソースです。詳細については、「TairGIS」をご参照ください。

ベストプラクティス

前提条件

Tair DRAM ベースのインスタンスが作成されていること。

説明

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

使用上の注意

管理したい TairGIS データは Tair インスタンスに保存されます。

サポートされているコマンド

表 1. TairGIS コマンド

コマンド

構文

説明

GIS.ADD

GIS.ADD area polygonName polygonWkt [polygonName polygonWkt ...]

1 つ以上のポリゴンをエリアに追加します。ポリゴンは Well-Known Text (WKT) で記述されます。

説明

WKT は、マップ上のベクタージオメトリオブジェクト、空間オブジェクトの空間参照系、および空間参照系間の変換を表現するためのテキストマークアップ言語です。

GIS.GET

GIS.GET area polygonName

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

GIS.GETALL

GIS.GETALL area [WITHOUTWKT]

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

GIS.CONTAINS

GIS.CONTAINS area polygonWkt [WITHOUTWKT]

ポイント、ラインストリング、またはポリゴンが特定のエリア内のポリゴンに位置しているかどうかを確認します。該当する場合、このコマンドは、エリア内でそのポイント、ラインストリング、またはポリゴンを含むポリゴンの数と WKT 表現を返します。

GIS.WITHIN

GIS.WITHIN area polygonWkt [WITHOUTWKT]

エリアがポイント、ラインストリング、またはポリゴン内に位置しているかどうかを確認します。該当する場合、このコマンドは、そのポイント、ラインストリング、またはポリゴン内に位置するエリア内のポリゴンの数と WKT 表現を返します。

GIS.INTERSECTS

GIS.INTERSECTS area polygonWkt

ポイント、ラインストリング、またはポリゴンが特定のエリア内のポリゴンと交差するかどうかを確認します。該当する場合、このコマンドは、そのポイント、ラインストリング、またはポリゴンと交差するエリア内のポリゴンの数と WKT 表現を返します。

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]

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

GIS.DEL

GIS.DEL area polygonName

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

DEL

DEL key [key ...]

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

説明

次のリストは、この Topic で使用されるコマンド構文の規則について説明しています。

  • 大文字のキーワード: コマンドのキーワードを示します。

  • 斜体のテキスト: 変数を示します。

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

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

  • ...: この記号の前のパラメーターを繰り返し指定できることを示します。

GIS.ADD

項目

説明

構文

GIS.ADD area polygonName polygonWkt [polygonName polygonWkt ...]

時間計算量

O(log n)

コマンドの説明

1 つ以上のポリゴンをエリアに追加します。ポリゴンは Well-Known Text (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 31))'

    説明
    • 経度の有効値は -180 から 180、緯度の有効値は -90 から 90 です。

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

出力

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

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

コマンドの例:

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)

コマンドの説明

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

パラメーター

  • area: 幾何学的な概念。

  • PolygonName: 管理したいポリゴンの名前。

出力

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

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

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

事前に 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)

コマンドの説明

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

パラメーター

  • area: 幾何学的な概念。

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

出力

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

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

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

事前に 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))"

1) "campus"
2) "POLYGON((30 10,40 40,20 40,10 20,30 10))"

GIS.CONTAINS

項目

説明

構文

GIS.CONTAINS area polygonWkt [WITHOUTWKT]

時間計算量

  • 最適時間計算量: log公式

  • 最悪時間計算量: O(log n)

コマンドの説明

ポイント、ラインストリング、またはポリゴンが特定のエリア内のポリゴンに位置しているかどうかを確認します。該当する場合、このコマンドは、エリア内でそのポイント、ラインストリング、またはポリゴンを含むポリゴンの数と WKT 表現を返します。

パラメーター

  • area: 幾何学的な概念。

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

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

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

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

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

出力

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

  • エリアが存在しない場合、「empty list or set」メッセージが返されます。

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

事前に 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]

時間計算量

  • 最適時間計算量: log公式

  • 最悪時間計算量: O(log n)

コマンドの説明

エリアがポイント、ラインストリング、またはポリゴン内に位置しているかどうかを確認します。該当する場合、このコマンドは、そのポイント、ラインストリング、またはポリゴン内に位置するエリア内のポリゴンの数と WKT 表現を返します。

パラメーター

  • area: 幾何学的な概念。

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

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

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

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

    説明

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

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

出力

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

  • エリアが存在しない場合、「empty list or set」メッセージが返されます。

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

事前に 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

時間計算量

  • 最適時間計算量: log公式

  • 最悪時間計算量: O(log n)

コマンドの説明

ポイント、ラインストリング、またはポリゴンが特定のエリア内のポリゴンと交差するかどうかを確認します。該当する場合、このコマンドは、そのポイント、ラインストリング、またはポリゴンと交差するエリア内のポリゴンの数と WKT 表現を返します。

パラメーター

  • area: 幾何学的な概念。

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

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

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

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

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

出力

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

  • エリアが存在しない場合、「empty list or set」メッセージが返されます。

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

事前に 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]

時間計算量

  • 最適時間計算量: log公式

  • 最悪時間計算量: O(log n)

コマンドの説明

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

オプション

  • area: 幾何学的な概念。

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

  • MEMBER: 基準点として使用されるエリア内のポイントと、そのポイントの半径。値は、ポリゴンの名前 (フィールド)、検索半径 (距離)、半径の単位の順に指定する必要があります。半径の単位の有効値: M (メートル)、KM (キロメートル)、FT (フィート)、および MI (マイル)。例: MEMBER Agrigento 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 表現は返されません。

説明

[RADIUS][MEMBER]、および [GEOM] パラメーターのうち 1 つだけを指定できます。

出力

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

  • エリアが存在しない場合、「empty list or set」メッセージが返されます。

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

事前に 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"

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: 幾何学的な概念。

  • PolygonName: 管理したいポリゴンの名前。

出力

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

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

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

事前に GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))' コマンドを実行します。

コマンドの例:

GIS.DEL hangzhou campus

出力の例:OK

OK