• Redis地理空间(GEO)


    GGEO(地理信息定位) : 存储经纬度,计算两地距离,范围计算等,类型zset

    127.0.0.1:6379> type citi:locations
    zset
    城市 经度 纬度 简称
    北京 116.28 39.55 bejing
    天津 117.12 39.08 tianjing
    石家庄 114.29 38.02 shijiazhuang
    唐山 118.01 39.38 tangshan
    保定 115.29 38.51 baoding

    GEOADDkey longitude latitude member [longitude latitude member ...]

    将指定的地理空间位置(纬度、经度、名称)添加到指定的key中。这些数据将会存储到sorted set这样的目的是为了方便使用GEORADIUS或者GEORADIUSBYMEMBER命令对数据进行半径查询等操作。

    该命令以采用标准格式的参数x,y,所以经度必须在纬度之前。这些坐标的限制是可以被编入索引的,区域面积可以很接近极点但是不能索引。具体的限制,由EPSG:900913 / EPSG:3785 / OSGEO:41001 规定如下:

    • 有效的经度从-180度到180度。

    • 有效的纬度从-85.05112878度到85.05112878度。

    当坐标位置超出上述指定范围时,该命令将会返回一个错误。

    127.0.0.1:6379> geoadd citi:locations 116.28 39.55 bejing 117.12 39.08 tianjing 114.29 38.02 shijiazhuang 118.01 39.38 tangshan 115.29 38.51 baoding
    (integer) 5

    GEOPOS key member [member ...]

    key里返回所有给定位置元素的位置(经度和纬度)。

    127.0.0.1:6379> geopos citi:locations tianjing bejing
    1) 1) "117.12000042200088501"
       2) "39.0800000535766543"
    2) 1) "116.28000229597091675"
       2) "39.55000072454707549"

    GEODIST key member1 member2 [unit]

    返回两个给定位置之间的距离。

    如果两个位置之间的其中一个不存在, 那么命令返回空值。

    指定单位的参数 unit 必须是以下单位的其中一个:

    • m 表示单位为米。

    • km 表示单位为千米。

    • mi 表示单位为英里。

    • ft 表示单位为英尺。

    如果用户没有显式地指定单位参数, 那么 GEODIST 默认使用米作为单位。

    GEODIST 命令在计算距离时会假设地球为完美的球形, 在极限情况下, 这一假设最大会造成 0.5% 的误差。

    127.0.0.1:6379> geodist citi:locations tianjing bejing km
    "89.2061"
    127.0.0.1:6379> geodist citi:locations tianjing cangzhou km
    (nil)
  • 相关阅读:
    typedef 函数指针的使用(含例子)
    关于计算机与MCU通信及MAX232、CH340T与PL2303的区别
    CH340电路设计
    USB转串口CH340接线方法
    开漏输出、推挽输出的区别
    STM32位带操作
    STM32启动文件:startup_stm32f10x_hd.s等启动文件的简单描述
    浮点数在内存中的存储方式
    stm32启动地址
    STM32三种启动模式 boot0 boot1
  • 原文地址:https://www.cnblogs.com/yhq-qhh/p/10261405.html
Copyright © 2020-2023  润新知