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

Redis GEOPOSコマンドの使い方 – 地理空間データからメンバーの経度・緯度を取得する方法

このチュートリアルでは、Redisに保存された地理空間値(ジオ空間データ)から、1つまたは複数のメンバーの経度・緯度を取得する方法を解説します。この操作には、RedisのGEOPOSコマンドを使用します。

GEOPOSコマンドとは

GEOPOSコマンドは、キーに保存された地理空間値(ソート済みセット)の中から、指定した1つ以上のメンバーの経度・緯度を返すためのコマンドです。

GEOADDコマンドで座標(経度・緯度)を地理空間値に挿入する際、それらの値は52ビットのGeohashに変換されます。そのため、GEOPOSで取得される座標は、挿入時に入力した値と完全に一致するとは限らず、わずかな誤差が含まれる場合がある点に注意してください。

コマンドの戻り値は配列形式で、各要素がさらに2つの要素(経度と緯度)を持つ配列となり、指定された各メンバーの位置情報を表します。

また、以下のような挙動になります。

  • キーが存在しない場合は空の配列が返されます。
  • キーは存在するものの、GEOADDコマンドで作成されたソート済みセット以外のデータ型が格納されている場合はエラーが返されます。

構文

GEOPOSコマンドの基本構文は以下の通りです。

redis host:port> GEOPOS key member [member ...]

出力結果

- 指定したメンバーの経度・緯度を表す配列
- キーが存在しない場合は空の配列
- キーにGEOADDで作成されたソート済みセット以外が格納されている場合はエラー

実行例

以下は、GEOADDで登録した都市の位置情報をGEOPOSで取得する例です。

# 座標を登録
redis> GEOADD cities 139.6917 35.6895 "Tokyo"
redis> GEOADD cities 135.5023 34.6937 "Osaka"

# メンバーの経度・緯度を取得
redis> GEOPOS cities Tokyo Osaka
1) 1) "139.69170600175858"
   2) "35.689487059386044"
2) 1) "135.50230115652084"
   2) "34.693724849064006"

# 存在しないメンバーを指定した場合は nil が返る
redis> GEOPOS cities Nagoya
1) (nil)

このように、GEOPOSコマンドを使えば、GEOADDで登録した位置情報を簡単に取り出すことができます。存在しないメンバーを指定した場合、その要素はnilとして返される点も覚えておくと便利です。

参考資料

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

以上が、Redisに保存された地理空間値から1つまたは複数のメンバーの経度・緯度を取得する方法の解説でした。この記事が役に立った場合は、コメント欄で感想をお聞かせいただいたり、他の方にもシェアしていただけると嬉しいです。

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

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

  2. Redis GEODISTコマンド徹底解説 – 地理空間データの2つのメンバー間の距離を取得する方法

    このチュートリアルでは、キーに保存された地理空間値(ジオスペーシャルデータ)の2つのメンバー間の距離を取得する方法について学びます。この目的のために、RedisのGEODISTコマンドを使用します。 GEODISTコマンドとは GEODISTコマンドは、キーに保存された地理空間値(ソート済みセット)のうち、指定した2つのメンバー間の距離を、指定した単位で返すために使用されます。指定されたメンバーの一方または両方が地理空間値に存在しない場合は、nullが返されます。 指定できる単位は以下の4種類です。 m:メートル(デフォルト) km:キロメートル mi:マイル ft:フィート キーが存在し