5.3 地理位置相关操作
5.3.1 用GEOADD
命令存储地理位置
GEOADD
命令存储地理位置GEOADD
语法:
GEOADD key longitute latitude member [longitute latitude member ...]
.其中:longitute:经度
latitude:纬度
member:位置名称
功能:存储指定的地理空间位置,可以将一个或多个经度(longitude)、纬度(latitude)、位置名称(member)添加到指定的key中.添加成功返回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