Redis
 Computer >> コンピューター >  >> プログラミング >> Redis

Redis GEORADIUSコマンド徹底解説 – 特定エリア内の位置情報データを取得する方法

このチュートリアルでは、Redisに保存された位置情報(ジオスペーシャル)データの中から、特定のエリア内に存在する要素を取得する方法を解説します。そのために使用するのが GEORADIUS コマンドです。

GEORADIUSコマンドとは

GEORADIUSコマンドは、キーに保存されたソート済みセット(Sorted Set)形式の位置情報データのうち、経度・緯度・半径の各引数から算出される円形エリアの境界内に含まれるメンバーを1つ以上返すコマンドです。

エリアは、指定した経度と緯度を円の中心とし、指定した単位での半径を円の半径として計算されます。

半径には以下のいずれかの単位を指定します。

  1. m:メートル(デフォルト)
  2. km:キロメートル
  3. mi:マイル
  4. ft:フィート

オプション引数

RedisのGEORADIUSコマンドでは、以下のオプション引数を使用できます。

  1. WITHDIST: 返却された各要素の中心点からの距離を返します。距離の単位は半径引数で指定した単位と同じになります。
  2. WITHCOORD: 返却された全要素の経度・緯度の座標を返します。
  3. WITHHASH: 返却された全要素の生のGeohash文字列(52ビット符号なし整数)を返します。このGeohash値は、ソート済みセットにおける当該要素のスコアに相当します。
  4. ASC: 中心点から近い順(近→遠)に要素をソートして返します。デフォルトではソートされていない順序で返されます。
  5. DESC: 中心点から遠い順(遠→近)に要素をソートして返します。
  6. COUNT <count>: マッチした要素のうち、先頭の count 件に結果を限定して返します。デフォルトではマッチしたすべての要素が返されます。

戻り値

このコマンドは、以下の種類の値を含む配列(アレイ)を返します。

  1. [WITH] 系のオプション引数が指定されていない場合、要素名のみを含む配列を返します。
  2. WITHCOORDWITHDISTWITHHASH のいずれかが指定された場合、配列の配列(ネストされた配列)を返します。各サブ配列が1つの要素に対応し、サブ配列の最初の項目は必ず要素名となり、その他の情報は以下の順序で返されます。
    1. 中心点からの距離(浮動小数点数)。単位は半径に指定したものと同じ。
    2. Geohash整数。
    3. 座標(経度・緯度)を表す2要素の x, y 配列。

キーが存在しない場合は nil が返され、キーは存在するもののその値が GEOADD コマンドで登録されたソート済みセットではない場合は、エラーが返されます。

構文

redis host:post> GEORADIUS <keyname> <longitude> <latitude> <radius> [UNIT] [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]

出力

- (array) reply:位置情報データの要素を表す配列。
- Nil:キーが存在しない場合。
- Error:キーは存在するが、GEOADDコマンドで登録されたソート済みセットではない場合。

実行例

Redis GEORADIUSコマンド徹底解説 – 特定エリア内の位置情報データを取得する方法

参考資料

  1. Redis GEORADIUS コマンド公式ドキュメント

以上が、Redisデータストアに保存された位置情報データから特定エリア内の要素を取得する方法の解説でした。この記事が役に立った場合は、ぜひコメント欄でご意見をお聞かせください。また、他の方へのシェアも歓迎します。

<- Geoコマンド一覧へ

  1. Redis GEOHASHコマンドの使い方 – 地理空間データのメンバーからジオハッシュ文字列を取得する方法

    このチュートリアルでは、Redisに保存された地理空間値(ジオスペーシャル値)に含まれる1つまたは複数のメンバー(要素)のGeohash文字列を取得する方法を解説します。この目的には、RedisのGEOHASHコマンドを使用します。 GEOHASHコマンドとは GEOHASHコマンドは、キーに保存された地理空間値の中から指定された1つ以上のメンバーに対して、有効なGeohash文字列を返すためのコマンドです。地理空間値はソート済みセット(sorted set)として表現され、GEOADDコマンドを使って登録されます。 Redisは地理空間要素の位置情報(経度・緯度)を、Geohash技術の変種

  2. Redis GEOADDコマンド徹底解説 – 地理空間データに要素を作成・追加する方法

    このチュートリアルでは、Redisのキーに保存された地理空間値(geospatial value)に要素を作成・追加する方法について解説します。ここではGEOADDコマンドを使用します。 GEOADDコマンドとは GEOADDコマンドは、キーに格納された地理空間値に対して、1つ以上の地理空間メンバーを追加するためのコマンドです。地理空間値とは、このコマンドによって生成されるソート済みセット(sorted set)のことであり、メンバーは後からGEORADIUSやGEORADIUSBYMEMBERコマンドによる半径検索で取得できる形式で格納されます。 ソート済みセットへの登録には「Geohash