Redis地理位置シリーズGEO
4695 ワード
GEO機能はRedis 3にある.2のバージョンでは、地理的位置情報を記憶することにより、近隣の位置や揺れなどの地理的位置情報に依存する機能を実現することができる.geoのデータ型はzset.
目次
geoadd
geopos
geodist
georadius
georadiusbymember
geohash
zrem
1.構文geoadd key longitude latitude member[longitude latitude member...]2.解析指定した空間要素(緯度、経度、名前)を指定したキーに追加します.これらのデータは、キーに秩序セットheとして格納され、georadiusおよびgeoradiusbymemerのようなコマンドが後で位置クエリによってこれらの要素を取得できるようにします.geoaddコマンドは標準のx,y形式でパラメータを受け入れるので、ユーザーはまず経度を入力してから緯度を入力する必要があります.geoaddが記録できる座標は限られている:両極に非常に近い領域がインデックスされない正確な座標制限は、EPSG:900913/EPSG:3785/OSGEO:41001などの座標系によって定義され、具体的には、−180−180度の間の有効な緯度が−8505012878度から85.05112878度の間である.ユーザーが範囲外の経度または緯度を入力しようとすると、geoaddコマンドはエラーを返します.3.戻り値キーに新しく追加されたスペース要素の数.既に存在するが更新された要素は含まれません.4.例
1.文法geopos key member[member...]2.解析キーから位置決め要素に与えられたすべての位置(経度と緯度)を返すgeoposコマンドは可変数の位置要素を入力として受け入れるため、ユーザーが1つの位置要素しか与えていないとしても、コマンドは配列の返信を返す.3.戻り値geoposコマンドは、配列の各項目が2つの要素で構成されている配列を返します.1つ目の要素は位置決め要素への経度であり、2つ目の要素は位置決め要素への緯度です.所定の位置要素が存在する場合、対応する配列項目は空の値.4となる.例
1.文法geodist key member 1 member 2[unit]2.解析2つの場所のいずれかが存在しない場合、コマンドは空の値を返します.指定された単位のパラメータunitは、mの表示単位がメートルkmの表示単位がキロmiの表示単位がマイルftの表示単位がフィートである必要があります.ユーザーが単位パラメータを明示的に指定していない場合、geodistはデフォルトでメートルを単位として使用します.geodistコマンドは距離を計算する際に地球が完璧な球形であると仮定し、限界の場合、この仮定は最大0.5%の誤差をもたらす.3.戻り値で算出された距離は、2精度浮動小数点数として返されます.指定した位置要素が存在しない場合、コマンドは空の値を返します.4.例
1.文法georadius key longitude latitude radius m|km|ft|mi[withcoord][withdist][withhash][asc|desc][count count]2.与えられた経緯度を中心として,戻りキーに含まれる位置要素のうち,中心との距離が与えられた最大距離を超えないすべての位置要素を解析する.範囲は以下のいずれかの単位を用いることができる:mは単位がメートルであることを表す.km表示単位は千メートル.miは単位がマイルであることを示す.ftは単位がフィートであることを示す.次のオプションを指定すると、コマンドは追加の情報を返します:withdist:位置要素を返しながら、位置要素と中心の間の距離も一緒に返します.距離の単位とユーザが与えた範囲の単位は一致している.withcoord:位置要素の経度と緯度も一緒に返します.withhash:52ビットのシンボル整数の形式で、元のgeohash符号化された位置要素の秩序化集合スコアを返します.このオプションは主に下位アプリケーションやデバッグに使用されますが、実際にはあまり役に立ちません.コマンドは、デフォルトでソートされていない位置要素を返します.次の2つのパラメータにより、ユーザは、返される位置要素のソート方法を指定することができる:asc:中心の位置に基づいて、近から遠までの方法で位置要素descを返す:中心の位置に基づいて、遠から近までの方法で位置要素を返す.デフォルトでは、georadiusコマンドは一致するすべての位置要素を返します.ユーザはcountオプションを使用してN個のマッチング要素を取得することができるが、コマンドは内部ですべてのマッチングされた要素を処理する必要がある可能性があるため、非常に大きな領域を検索する際にcountオプションのみを使用して少量の要素を取得しても、命令の実行速度が非常に遅くなる可能性がある.一方、countオプションを使用して戻る要素の数を減らすことは、帯域幅を減らすのに依然として非常に有用である.3.戻り値:georadiusコマンドは配列を返します.具体的には、withオプションが指定されていない場合、コマンドは「Beijing」、「Tianjin」のような線形リストを返します.withcoord、withdist、withhashなどのオプションが指定されている場合、コマンドは2層のネスト配列を返します.内層の各サブ配列は要素を表します.ネスト配列を返すとき、サブ配列の最初の要素は常に位置要素の名前である.追加の情報は、サブ配列の後続要素として、(1)の順に返される.浮動小数点数形式で返される中心位置要素間の距離は、ユーザーが指定した範囲の単位と一致します.(2).geohash整数(3).2つの要素からなる座標は、それぞれ経度と緯度です.4.例:
1.文法georadiusbymember key member radius m|km|ft|mi[withcoord][withdist][withhash][asc|desc][count count]2.このコマンドを解析すると、georadiusコマンドと同様に、指定した範囲内にある要素を見つけることができますが、georadiusbymemerの中心点は、georadiusのように入力した経度と緯度を使用して中心点を決定するのではなく、指定した位置要素によって決定されます.3.値の配列を返します.配列の各項目は範囲内の位置要素を表します.4.例
1.文法geohash key member[member...]2.解析Redisはgeohashを使用して2次元の緯度を1次元文字列に変換し、文字列が長ければ長いほど位置が正確になり、2つの文字列が類似すればするほど距離が近くなる.3.戻り値:配列の各項目がgeohashである配列.コマンドが返すgeohashの位置は、ユーザが与えた位置要素の位置に対応する.4.例
GEOはメンバを削除するコマンドを提供するが、GEOの下位実装はzsetであるため、zremコマンドを借りて地理的位置情報の削除を実現することができる.
目次
geoadd
geopos
geodist
georadius
georadiusbymember
geohash
zrem
geoadd
1.構文geoadd key longitude latitude member[longitude latitude member...]2.解析指定した空間要素(緯度、経度、名前)を指定したキーに追加します.これらのデータは、キーに秩序セットheとして格納され、georadiusおよびgeoradiusbymemerのようなコマンドが後で位置クエリによってこれらの要素を取得できるようにします.geoaddコマンドは標準のx,y形式でパラメータを受け入れるので、ユーザーはまず経度を入力してから緯度を入力する必要があります.geoaddが記録できる座標は限られている:両極に非常に近い領域がインデックスされない正確な座標制限は、EPSG:900913/EPSG:3785/OSGEO:41001などの座標系によって定義され、具体的には、−180−180度の間の有効な緯度が−8505012878度から85.05112878度の間である.ユーザーが範囲外の経度または緯度を入力しようとすると、geoaddコマンドはエラーを返します.3.戻り値キーに新しく追加されたスペース要素の数.既に存在するが更新された要素は含まれません.4.例
geoadd cities:locations 116.28 39.55 beijing
geopos cities:locations beijing
geopos
1.文法geopos key member[member...]2.解析キーから位置決め要素に与えられたすべての位置(経度と緯度)を返すgeoposコマンドは可変数の位置要素を入力として受け入れるため、ユーザーが1つの位置要素しか与えていないとしても、コマンドは配列の返信を返す.3.戻り値geoposコマンドは、配列の各項目が2つの要素で構成されている配列を返します.1つ目の要素は位置決め要素への経度であり、2つ目の要素は位置決め要素への緯度です.所定の位置要素が存在する場合、対応する配列項目は空の値.4となる.例
geoadd cities:locations 117.12 39.08 tianjin 114.29 38.02 shijiazhuang 118.01 39.38 tangshan 115.29 38.51 baoding
geopos cities:locations tianjin shijiazhuang
geodist
1.文法geodist key member 1 member 2[unit]2.解析2つの場所のいずれかが存在しない場合、コマンドは空の値を返します.指定された単位のパラメータunitは、mの表示単位がメートルkmの表示単位がキロmiの表示単位がマイルftの表示単位がフィートである必要があります.ユーザーが単位パラメータを明示的に指定していない場合、geodistはデフォルトでメートルを単位として使用します.geodistコマンドは距離を計算する際に地球が完璧な球形であると仮定し、限界の場合、この仮定は最大0.5%の誤差をもたらす.3.戻り値で算出された距離は、2精度浮動小数点数として返されます.指定した位置要素が存在しない場合、コマンドは空の値を返します.4.例
geoadd cities:locations 117.12 39.08 tianjin 114.29 38.02 shijiazhuang 118.01 39.38
geodist cities:locations tianjin shijiazhuang
geodist cities:locations tianjin shijiazhuang km
# nil
geodist cities:locations beijing zhengzhou
georadius
1.文法georadius key longitude latitude radius m|km|ft|mi[withcoord][withdist][withhash][asc|desc][count count]2.与えられた経緯度を中心として,戻りキーに含まれる位置要素のうち,中心との距離が与えられた最大距離を超えないすべての位置要素を解析する.範囲は以下のいずれかの単位を用いることができる:mは単位がメートルであることを表す.km表示単位は千メートル.miは単位がマイルであることを示す.ftは単位がフィートであることを示す.次のオプションを指定すると、コマンドは追加の情報を返します:withdist:位置要素を返しながら、位置要素と中心の間の距離も一緒に返します.距離の単位とユーザが与えた範囲の単位は一致している.withcoord:位置要素の経度と緯度も一緒に返します.withhash:52ビットのシンボル整数の形式で、元のgeohash符号化された位置要素の秩序化集合スコアを返します.このオプションは主に下位アプリケーションやデバッグに使用されますが、実際にはあまり役に立ちません.コマンドは、デフォルトでソートされていない位置要素を返します.次の2つのパラメータにより、ユーザは、返される位置要素のソート方法を指定することができる:asc:中心の位置に基づいて、近から遠までの方法で位置要素descを返す:中心の位置に基づいて、遠から近までの方法で位置要素を返す.デフォルトでは、georadiusコマンドは一致するすべての位置要素を返します.ユーザはcountオプションを使用してN個のマッチング要素を取得することができるが、コマンドは内部ですべてのマッチングされた要素を処理する必要がある可能性があるため、非常に大きな領域を検索する際にcountオプションのみを使用して少量の要素を取得しても、命令の実行速度が非常に遅くなる可能性がある.一方、countオプションを使用して戻る要素の数を減らすことは、帯域幅を減らすのに依然として非常に有用である.3.戻り値:georadiusコマンドは配列を返します.具体的には、withオプションが指定されていない場合、コマンドは「Beijing」、「Tianjin」のような線形リストを返します.withcoord、withdist、withhashなどのオプションが指定されている場合、コマンドは2層のネスト配列を返します.内層の各サブ配列は要素を表します.ネスト配列を返すとき、サブ配列の最初の要素は常に位置要素の名前である.追加の情報は、サブ配列の後続要素として、(1)の順に返される.浮動小数点数形式で返される中心位置要素間の距離は、ユーザーが指定した範囲の単位と一致します.(2).geohash整数(3).2つの要素からなる座標は、それぞれ経度と緯度です.4.例:
geoadd cities:locations 117.12 39.08 tianjin 114.29 38.02 shijiazhuang 118.01 39.38 tangshan 115.29 38.51 baoding
#withdist
georadius cities:locations 117 39 200 km withdist
#withcoord
georadius cities:locations 117 39 200 km withcoord
#withdist withcoord
georadius cities:locations 117 39 200 km withdist withcoord
georadiusbymember
1.文法georadiusbymember key member radius m|km|ft|mi[withcoord][withdist][withhash][asc|desc][count count]2.このコマンドを解析すると、georadiusコマンドと同様に、指定した範囲内にある要素を見つけることができますが、georadiusbymemerの中心点は、georadiusのように入力した経度と緯度を使用して中心点を決定するのではなく、指定した位置要素によって決定されます.3.値の配列を返します.配列の各項目は範囲内の位置要素を表します.4.例
geoadd cities:locations 117.12 39.08 tianjin 114.29 38.02 shijiazhuang 118.01 39.38 tangshan 115.29 38.51 baoding
georadiusbymember cities:locations tianjin 100 km
geohash
1.文法geohash key member[member...]2.解析Redisはgeohashを使用して2次元の緯度を1次元文字列に変換し、文字列が長ければ長いほど位置が正確になり、2つの文字列が類似すればするほど距離が近くなる.3.戻り値:配列の各項目がgeohashである配列.コマンドが返すgeohashの位置は、ユーザが与えた位置要素の位置に対応する.4.例
geoadd cities:locations 118.01 39.38 tangshan 115.29 38.51 baoding
geohash cities:locations tangshan baoding
zrem
GEOはメンバを削除するコマンドを提供するが、GEOの下位実装はzsetであるため、zremコマンドを借りて地理的位置情報の削除を実現することができる.
zrem cities:locations tianjin