Skip to content

Latest commit

 

History

History
228 lines (172 loc) · 8.14 KB

08.经纬度数据操作.md

File metadata and controls

228 lines (172 loc) · 8.14 KB

1. geoadd 添加地理位置信息

命令:geoadd key longitude latitude member [longitude latitude member ...]

​ longitude表示经度,latitude表示纬度,member表示成员

命令描述:将指定的地理空间位置(纬度、经度、名称)添加到指定的key中。

返回值:添加到sorted set元素的数目,但不包括已更新score的元素。

# 示例
127.0.0.1:6379> geoadd Guangdong-cities 113.2278442 23.1255978 Guangzhou 113.106308 23.0088312 Foshan 113.7943267 22.9761989 Dongguan 114.0538788 22.5551603 Shenzhen
(integer) 4

2. geopos 查询位置的坐标

命令:geopos location-set name [name ...]

命令描述:从key里返回所有给定位置元素的位置(经度和纬度)。

返回值:GEOPOS 命令返回一个数组, 数组中的每个项都由两个元素组成: 第一个元素为给定位置元素的经度, 而第二个元素则为给定位置元素的纬度。当给定的位置元素不存在时, 对应的数组项为空值。

# 示例
127.0.0.1:6379> geopos Guangdong-cities Guangzhou Shenzhen
1) 1) "113.22784155607223511"
   2) "23.1255982020608073"
2) 1) "114.05388146638870239"
   2) "22.55515920515157546"

3. geodist 查询位置距离

命令:geodist key member1 member2 [m|km|mi|ft]

命令描述:

返回两个给定位置之间的距离。如果两个位置之间的其中一个不存在, 那么命令返回空值。指定单位的参数 unit 必须是以下单位的其中一个:

​ m 表示单位为米。

​ km 表示单位为千米。

​ mi 表示单位为英里。

​ ft 表示单位为英尺。

# 示例
127.0.0.1:6379> geodist Guangdong-cities Guangzhou Shenzhen
"105806.7782"

4. georadius 查询某点的附近点

命令:GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]

命令描述:以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。

范围可以使用以下其中一个单位:

​ m 表示单位为米。

​ km 表示单位为千米。

​ mi 表示单位为英里。

​ ft 表示单位为英尺。

在给定以下可选项时, 命令会返回额外的信息:

WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。

WITHCOORD: 将位置元素的经度和维度也一并返回。

WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。

命令默认返回未排序的位置元素。 通过以下两个参数, 用户可以指定被返回位置元素的排序方式:

ASC: 根据中心的位置, 按照从近到远的方式返回位置元素。

DESC: 根据中心的位置, 按照从远到近的方式返回位置元素。

在默认情况下, GEORADIUS 命令会返回所有匹配的位置元素。 虽然用户可以使用 COUNT 选项去获取前 N 个匹配元素, 但是因为命令在内部可能会需要对所有被匹配的元素进行处理, 所以在对一个非常大的区域进行搜索时, 即使只使用 COUNT 选项去获取少量元素, 命令的执行速度也可能会非常慢。 但是从另一方面来说, 使用 COUNT 选项去减少需要返回的元素数量, 对于减少带宽来说仍然是非常有用的。

返回值:

在没有给定任何 WITH 选项的情况下, 命令只会返回一个像 [“New York”,”Milan”,”Paris”] 这样的线性(linear)列表。

在指定了 WITHCOORD 、 WITHDIST 、 WITHHASH 等选项的情况下, 命令返回一个二层嵌套数组, 内层的每个子数组就表示一个元素。

在返回嵌套数组时, 子数组的第一个元素总是位置元素的名字。 至于额外的信息, 则会作为子数组的后续元素, 按照以下顺序被返回:

  1. 以浮点数格式返回的中心与位置元素之间的距离, 单位与用户指定范围时的单位一致。
  2. geohash 整数。
  3. 由两个元素组成的坐标,分别为经度和纬度。
# 示例
127.0.0.1:6379>georadius Guangdong-cities 113.2278442 23.1255978 100 km
1) "Foshan"
2) "Guangzhou"
3) "Dongguan"

127.0.0.1:6379>georadius Guangdong-cities 113.2278442 23.1255978 100 km withcoord
1) 1) "Foshan"
   2) 1) "113.10631066560745"
      2) "23.008831202413539"
2) 1) "Guangzhou"
   2) 1) "113.22784155607224"
      2) "23.125598202060807"
3) 1) "Dongguan"
   2) 1) "113.79432410001755"
      2) "22.9761992022082"
      
127.0.0.1:6379>georadius Guangdong-cities 113.2278442 23.1255978 100 km withcoord withdist
1) 1) "Foshan"
   2) "17.9820"
   3) 1) "113.10631066560745"
      2) "23.008831202413539"
2) 1) "Guangzhou"
   2) "0.0003"
   3) 1) "113.22784155607224"
      2) "23.125598202060807"
3) 1) "Dongguan"
   2) "60.3111"
   3) 1) "113.79432410001755"
      2) "22.9761992022082"

127.0.0.1:6379>georadius Guangdong-cities 113.2278442 23.1255978 100 km withcoord withdist withhash
1) 1) "Foshan"
   2) "17.9820"
   3) (integer) 4046506835759376
   4) 1) "113.10631066560745"
      2) "23.008831202413539"
2) 1) "Guangzhou"
   2) "0.0003"
   3) (integer) 4046533621643967
   4) 1) "113.22784155607224"
      2) "23.125598202060807"
3) 1) "Dongguan"
   2) "60.3111"
   3) (integer) 4046540375616238
   4) 1) "113.79432410001755"
      2) "22.9761992022082"

127.0.0.1:6379>georadius Guangdong-cities 113.2278442 23.1255978 100 km withcoord withdist withhash count 2
1) 1) "Guangzhou"
   2) "0.0003"
   3) (integer) 4046533621643967
   4) 1) "113.22784155607224"
      2) "23.125598202060807"
2) 1) "Foshan"
   2) "17.9820"
   3) (integer) 4046506835759376
   4) 1) "113.10631066560745"
      2) "23.008831202413539"

127.0.0.1:6379>georadius Guangdong-cities 113.2278442 23.1255978 100 km withcoord withdist withhash asc
1) 1) "Guangzhou"
   2) "0.0003"
   3) (integer) 4046533621643967
   4) 1) "113.22784155607224"
      2) "23.125598202060807"
2) 1) "Foshan"
   2) "17.9820"
   3) (integer) 4046506835759376
   4) 1) "113.10631066560745"
      2) "23.008831202413539"
3) 1) "Dongguan"
   2) "60.3111"
   3) (integer) 4046540375616238
   4) 1) "113.79432410001755"
      2) "22.9761992022082"

127.0.0.1:6379>georadius Guangdong-cities 113.2278442 23.1255978 100 km withcoord withdist withhash desc
1) 1) "Dongguan"
   2) "60.3111"
   3) (integer) 4046540375616238
   4) 1) "113.79432410001755"
      2) "22.9761992022082"
2) 1) "Foshan"
   2) "17.9820"
   3) (integer) 4046506835759376
   4) 1) "113.10631066560745"
      2) "23.008831202413539"
3) 1) "Guangzhou"
   2) "0.0003"
   3) (integer) 4046533621643967
   4) 1) "113.22784155607224"
      2) "23.125598202060807"

5. georadiusbymember 查询某位置距离的附近点

georadiusbymember key member radius m|km|ft|mi
# 指定成员作为中心来查询附近的点

# 示例
127.0.0.1:6379> georadiusbymember Guangdong-cities Guangzhou 100 km
1) "Foshan"
2) "Guangzhou"
3) "Dongguan"

6. geohash 查询位置GEOHASH编码

命令:geohash key member [member ...]

命令描述:返回一个或多个位置元素的 Geohash 表示。通常使用表示位置的元素使用不同的技术,使用Geohash位置52点整数编码。由于编码和解码过程中所使用的初始最小和最大坐标不同,编码的编码也不同于标准。此命令返回一个标准的Geohash

返回值:一个数组, 数组的每个项都是一个 geohash 。 命令返回的 geohash 的位置与用户给定的位置元素的位置一一对应。

# 示例
127.0.0.1:6379> geohash Guangdong-cities Guangzhou
1) "ws0e89curg0"