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として返される点も覚えておくと便利です。
参考資料
以上が、Redisに保存された地理空間値から1つまたは複数のメンバーの経度・緯度を取得する方法の解説でした。この記事が役に立った場合は、コメント欄で感想をお聞かせいただいたり、他の方にもシェアしていただけると嬉しいです。
-
Redis GEOHASHコマンドの使い方 – 地理空間データのメンバーからジオハッシュ文字列を取得する方法
このチュートリアルでは、Redisに保存された地理空間値(ジオスペーシャル値)に含まれる1つまたは複数のメンバー(要素)のGeohash文字列を取得する方法を解説します。この目的には、RedisのGEOHASHコマンドを使用します。 GEOHASHコマンドとは GEOHASHコマンドは、キーに保存された地理空間値の中から指定された1つ以上のメンバーに対して、有効なGeohash文字列を返すためのコマンドです。地理空間値はソート済みセット(sorted set)として表現され、GEOADDコマンドを使って登録されます。 Redisは地理空間要素の位置情報(経度・緯度)を、Geohash技術の変種
-
Redis GEODISTコマンド徹底解説 – 地理空間データの2つのメンバー間の距離を取得する方法
このチュートリアルでは、キーに保存された地理空間値(ジオスペーシャルデータ)の2つのメンバー間の距離を取得する方法について学びます。この目的のために、RedisのGEODISTコマンドを使用します。 GEODISTコマンドとは GEODISTコマンドは、キーに保存された地理空間値(ソート済みセット)のうち、指定した2つのメンバー間の距離を、指定した単位で返すために使用されます。指定されたメンバーの一方または両方が地理空間値に存在しない場合は、nullが返されます。 指定できる単位は以下の4種類です。 m:メートル(デフォルト) km:キロメートル mi:マイル ft:フィート キーが存在し