5.3 地理位置相关操作
5.3.1 用GEOADD命令存储地理位置
GEOADD命令存储地理位置GEOADD语法:
GEOADD key longitute latitude member [longitute latitude member ...].其中:longitute:经度
latitude:纬度
member:位置名称
功能:存储指定的地理空间位置,可以将一个或多个经度(longitude)、纬度(latitude)、位置名称(member)添加到指定的key中.添加成功返回1,失败则返回错误信息
例:添加地理位置:
127.0.0.1:6379> GEOADD pos 120.52 30.40 pos1
(integer) 1
127.0.0.1:6379> GEOADD pos 120.52 31.53 pos2
(integer) 1
127.0.0.1:6379> GEOADD pos 120.12 30.40 pos3
(integer) 1
127.0.0.1:6379> GEOADD pos 120.12 31.53 pos4
(integer) 1可以看到,4个地理位置的键均为pos,但是这4个地理位置的别名不同.
例:添加地理位置失败:
在Redis的GEO数据结构中,经纬度的上下限是基于WGS-84地理坐标系统的.具体限制如下:
Longitude(经度):-180°到180°
Latitude(纬度):-85.05112878°到85.05112878°
纬度的上下限并不是完全的-90°到90°,是因为这样可以确保地球的形状在某些投影下仍然为正方形.这个特定的纬度约为±85.0511°是Web墨卡托投影的一个特点,这种投影经常被用于地图服务,例如Google Maps.
5.3.2 获取地理位置的经纬度信息
GEOPOS语法:
GEOPOS key member [member ...]功能:从给定的key里返回所有指定名称(member)的位置(经度和纬度),不存在的返回nil
例:查询地理位置数据
5.3.3 查询指定范围内的地理信息
GEORADIUS语法:
GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key].其中:longitude/latitude:指定待查询地理信息的中心点radius:半径.m:米km:千米ft:英尺mi:英里
WITHCOORD:将位置元素的经度和纬度也一并返回WITHDIST:在返回位置元素的同时,将位置元素与中心点之间的距离也一并返回WITHHASH:以52位有符号整数的形式,返回位置元素经过原始geohash编码的有序集合分值.这个选项主要用于底层应用或者调试,实际中的作用并不大ASC/DESC:查找结果根据距离从近到远/从远到近排序
功能:以给定的经纬度为中心,返回键包含的位置元素当中,与中心的距离不超过给定最大距离的所有位置元素
例:查询pos中距给定中心点距离不超过200km的位置元素的经纬度信息和距给定中心点的距离,按位置元素距中心点从远到近排序
GEORADIUSBYMEMBER语法:
GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]功能:和
GEORADIUS命令一样,都可以找出位于指定范围内的元素.但是GEORADIUSBYMEMBER命令的中心点是由给定的位置元素决定的,而不是使用经度和纬度来决定中心点
例:查询pos中距离位置元素pos1距离不超过200km的位置元素的经纬度信息和距给定中心点的距离,按位置元素距中心点从远到近排序
5.3.4 查询地理位置间的距离
GEODIST语法:
GEODIST key member1 member2 [m|km|ft|mi]返回两个给定位置之间的距离.距离单位默认为米.若待计算的地理位置不存在,则返回nil
例:计算位置元素pos1到pos2之间间隔的千米数:
例:待计算的地理位置不存在的情况
Last updated