首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

如何实现查找附近的人-GEO

geopos:获取地理位置坐标。geodist:计算两个位置之间距离。georadius:根据用户给定经纬度坐标来获取指定范围内地理位置集合。...geodist 语法格式如下:GEODIST key member1 member2 [m|km|ft|mi]member1 member2 两个地理位置。...# 计算翠湖公园(a)到大观公园(b)距离单位km127.0.0.1:6379> geodist km a b km"4.2587"计算翠湖公园(a)到大观公园(b)距离是4.25公里,跟地图比对...,结果基本吻合查询某位置内其他成员信息georadius给定经纬度中心, 返回键包含位置元素当中, 与中心距离不超过给定最大距离所有位置元素。...:"+r.getDistance()+"km"); } }结果zhangsan 距离我:0.6776kmlisi 距离我:1.645kmxiaoming 距离我:3.5812km计算距离计算两个坐标之间距离代码实现

23520

Python 优雅地利用两经纬度计算地理空间距离

一、基本原理 处理地理数据时,经常需要用到两个地理位置间距离。...主要有以下几个功能: 地理编码:将字符串转换为地理位置 逆地理编码:用于将地理坐标转换为具体地址 计算两个距离:经纬度距离和球面距离 pip install安装上即可 pip install geopy...print("距离:{:.3f}km".format(distance)) 对比结果如下: 手写 haversine 公式计算距离:1.809km,而直接调用 geopy 库 geodesic...方法计算距离:1.812km,二者计算结果相差很小。...用经纬度计算地球上两之间距离不同单位表示),pip install安装即可: Python代码如下: import haversine print(tuple(haversine.Unit)

8.9K10

Redis之GEO类型解读

geopos 从key里返回所有给定位置元素位置(经度和纬度) geodist 返回两个给定位置之间距离 georadius 给定经纬度中心, 找出某一半径内元素 georadiusbymember...指定单位参数 unit 必须是以下单位其中一个: m 表示单位米。 km 表示单位千米。 mi 表示单位英里。 ft 表示单位英尺。...如果给定位置元素不存在, 那么命令返回空值。 georadius 命令 给定经纬度中心, 返回键包含位置元素当中, 与中心距离不超过给定最大距离所有位置元素。...范围可以使用以下其中一个单位: m 表示单位米。 km 表示单位千米。 mi 表示单位英里。 ft 表示单位英尺。...至于额外信息, 则会作为子数组后续元素, 按照以下顺序被返回: 浮点数格式返回中心与位置元素之间距离单位与用户指定范围时单位一致。 geohash 整数。

380110

Redis之GEO类型解读

geopos 从key里返回所有给定位置元素位置(经度和纬度) geodist 返回两个给定位置之间距离 georadius 给定经纬度中心, 找出某一半径内元素 georadiusbymember...指定单位参数 unit 必须是以下单位其中一个: m 表示单位米。 km 表示单位千米。 mi 表示单位英里。 ft 表示单位英尺。...如果给定位置元素不存在, 那么命令返回空值。 georadius 命令 给定经纬度中心, 返回键包含位置元素当中, 与中心距离不超过给定最大距离所有位置元素。...范围可以使用以下其中一个单位: m 表示单位米。 km 表示单位千米。 mi 表示单位英里。 ft 表示单位英尺。...至于额外信息, 则会作为子数组后续元素, 按照以下顺序被返回: 浮点数格式返回中心与位置元素之间距离单位与用户指定范围时单位一致。 geohash 整数。

22240

⑦【Redis GEO 】Redis常用数据类型:GEO

基本操作命令 Redis GEO主要用于存储地理位置信息,并对存储选项进行操作: 1.添加地理位置坐标 2.获取地理位置坐标 3.计算两个地理位置间距离 4.根据用户给定经纬度坐标来获取指定范围内地理位置集合...”geohash值 geohash city "广州" 4.geodist 返回两个位置元素之间距离单位:m|km|ft|mi) geodist 用于返回两个给定位置间距离 geodist key...给定经纬度中心, 返回键包含位置元素当中, 与中心距离不超过给定最大距离所有位置元素。...距离单位和用户给定范围单位保持一致。 WITHCOORD : 将位置元素经度和维度也一并返回。...# 键:city # 经度和纬度:121.48941010236740112 31.40526993848380499 # 经纬度中心,向外扩张最大距离:2000 # 单位km # withcoord

18910

Redis GEO地理位置

GEOADD 增加某个地理位置坐标; GEOPOS 获取某个地理位置坐标; GEODIST 获取两个地理位置距离; GEORADIUS 根据给定地理位置坐标获取指定范围内地理位置集合; GEORADIUSBYMEMBER...指定单位参数 unit 必须是以下单位其中一个: m 表示单位米。 km 表示单位千米。 mi 表示单位英里。 ft 表示单位英尺。...如果用户没有显式地指定单位参数, 那么 GEODIST 默认使用米作为单位。 GEODIST 命令在计算距离时会假设地球完美的球形, 在极限情况下, 这一假设最大会造成 0.5% 误差。...km 表示单位千米。 mi 表示单位英里。 ft 表示单位英尺。...(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户位置信息(地理坐标,或大地坐标) 常见有,附近位置,附近的人,摇一摇,获取两之间距离等等

1.7K40

Redis 7地理信息命令太太太牛了!一文教你如何使用

GEODIST:计算两个位置之间距离。 GEOHASH:获取指定位置地理哈希值。 GEOPOS:获取一个或多个位置经度和纬度。...GEODIST GEODIST命令用于计算两个地理位置之间距离。...示例: GEODIST cities "Palermo" "Catania" km 上述示例将计算了名为cities中"Palermo"和"Catania"两个地理位置之间距离,并指定距离单位千米..., 37.502669)中心,半径100千米范围内进行搜索,并返回最多5个结果以及与查询距离。...通过使用GEOADD命令,我们可以将地理位置及其名称添加到Redis中指定键中,方便地存储和管理位置数据。GEODIST命令允许计算两个位置之间距离,提供了方便距离计算功能。

23230

Redis 7地理信息命令太太太牛了!一文教你如何使用

GEODISTGEODIST命令用于计算两个地理位置之间距离。...示例:GEODIST cities "Palermo" "Catania" km上述示例将计算了名为cities中"Palermo"和"Catania"两个地理位置之间距离,并指定距离单位千米。...cities "Palermo" 100 km WITHDIST COUNT 5上述示例将在名为cities键中,"Palermo"位置成员中心,搜索半径100千米范围内位置,并返回最多5个结果以及与中心位置距离..., 37.502669)中心,半径100千米范围内进行搜索,并返回最多5个结果以及与查询距离。...通过使用GEOADD命令,我们可以将地理位置及其名称添加到Redis中指定键中,方便地存储和管理位置数据。GEODIST命令允许计算两个位置之间距离,提供了方便距离计算功能。

21910

Redis实现附近的人

当用户点击 Near Me 功能时,那么通过后台就可以当前用户位置圆点,距离半径查询相关用户展示即可完成 注意 redis 经纬度有 0.5%误差,所以精度要求高比如地图就慎用 redis...key member1 member2 [unit] , 其中 unit 单位 m|km|ft(英尺)|mi(英里) # 计算距离,返回距离单位是米(m) 127.0.0.1:0>GEODIST...diner:location zhangsan lisi m "82.4241" # 计算距离,返回距离单位是千米(km) 127.0.0.1:0>GEODIST diner:location...范围可以使用以下其中一个单位: m 表示单位km 表示单位千米 mi 表示单位英里 ft 表示单位英尺 在给定以下可选项时, 命令会返回额外信息: WITHDIST: 在返回位置元素同时...距离单位和用户给定范围单位保持一致 WITHCOORD: 将位置元素经度和维度也一并返回 WITHHASH: 52 位有符号整数形式, 返回位置元素经过原始 geohash 编码有序集合分值

69920

Redis系统学习之三种特殊数据类型(geospatial(地理位置))

geospatial(地理位置) 朋友定位,附近的人,打车距离计算,主要用于存储地理位置信息,并对存储信息进行操作,该功能在 Redis 3.2 版本新增。...计算两个位置之间距离(直线距离[笑哭,谁会查直线距离]) geodist key 位置1 位置2 [m|km|ft|mi](单位) m :米,默认单位km :千米。 mi :英里。...计算河北和北京之间距离,单位千米 ?...指定经纬度中心,找出某一半径内元素 GEORADIUS key 维度 经度 半径长度 m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count...和上面的georadius一样 只不过是把经纬度换成了已存在地理位置名称 m :米,默认单位km :千米。 mi :英里。 ft :英尺。

90120

Redis GEO 特性

" 2) "40.00546983911101506" 2) 1) "116.40426903963088989" 2) "39.90654220698316834" 计算两个之前距离...命令如下: GEODIST location-set location-x location-y [unit] 可选参数 unit 用于指定计算距离单位,它下面的一个: m 表示单位米。...km 表示单位千米。 mi 表示单位英里。 ft 表示单位英尺。...比如我们要计算奥林匹克公园和圆明园距离: 127.0.0.1:6379> geodist subways yuanmingyuan aolinpikegongyuan "7103.4924" 如果我们指定单位...m|km|ft|mi 指定计算范围时单位; 如果给定了可选 WITHCOORD , 那么命令在返回匹配位置时会将位置经纬度一并返回; 如果给定了可选 WITHDIST , 那么命令在返回匹配位置时会将位置与中心之间距离一并返回

1.1K20

Python学习——库Geopy用法之经纬度坐标转换、经纬度距离计算

Geopy作为一个专注于地理位置处理包,能实现地理编码、逆地理编码功能;此外,还可以根据两个经纬度坐标计算在地球上最短距离。 2. 具体用法 2.1....Geopy距离计算功能包含在distance 中 计算距离有两种:大圆距离与大地线距离(默认,更精确)。...大圆算法将地球简化为一个圆球,其计算距离是球面上过两大圆距离。 大地线使用目前国际通用方法,用旋转椭球面表示地球,其计算是两点在椭球面上最短距离。...116.3912630)) #返回一个distance对象,其中包含单位转换方法 dist.kilometers #单位转换,获取km,m或者英里单位距离 结果: 1058.4645051382365...)) #同样返回distance对象 gc.km 1057.0946827378225 print(f'{(dist.km - gc.km) / dist.km:%}') 0.129416% #哈尔滨到北京大圆与大地线距离之间有

4.1K51

微信附近的人,用redis也能实现?(GEO)

如何根据两个经纬度,获取到这两个之间距离我在网上找了个方法,大家可以参考下 /** * 求两个已知经纬度之间距离,单位米 * * @param lng1 $ ,lng2 经度 * @param...遍历完了之后还得继续计算距离,这个数量级也是非常大 距离那些都弄完了还得再筛选一遍在附近,又是一遍所有数据遍历 如果符合附近的人要求是需要按照距离从近到远来排序,又得遍历计算 上述方式如果用户量比较小其实是可以实现...GEOPOS:获取某个地理位置坐标 GEODIST:获取两个地理位置距离 GEORADIUS:根据给定地理位置坐标获取指定范围内地理位置集合 GEORADIUSBYMEMBER:根据给定地理位置获取指定范围内地理位置集合...user_1 user_2 mi "103.3182" 获取 nearbyPeople 中 user_1 和 user_2 这两个节点之间距离距离单位可以指定,如下所示 m :米,默认单位。...首先我们可以在后台把每个人位置定时刷新到 nearbyPeople key geo 对象中。

58810

redis 学习(15)-- GEO

含义:获取地理位置信息 3.geodist key member1 member2 [unit] 含义:获取两个地理位置距离 unit取值范围 m(米,默认) km(千米) mi(英里) ft(英尺...latitude unit [withcoord] [withdist] [withhash] [COUNT count] [sort] [store key] [storedist key] 含义:给定经纬度中心...距离单位和用户给定范围单位保持一致 withhash:52位符号整数形式,返回位置元素经过geohash编码有序集合分值。用于底层应用或调试,实际作用不大。...COUNT count][sort][store key][storedist key] 含义:给定元素中心,返回包含位置元素当中,与中心距离不超过给定最大距离所有位置元素。...距离单位和用户给定范围单位保持一致 withhash:52位符号整数形式,返回位置元素经过geohash编码有序集合分值。用于底层应用或调试,实际作用不大。

43850

一口气说出 4种 “附近的人” 实现方式,面试官笑了!

“附近的人” 核心思想如下: “我” 中心,搜索附近用户 “我” 当前地理位置为准,计算出别人和 “我” 之间距离 按 “我” 与别人距离远近排序,筛选出离我最近用户或者商店等 二、...在这里插入图片描述 2、利弊分析 纯基于 mysql 实现 “附近的人”,优点显而易见就是简单,只要建一张表存下用户经、纬度信息即可。缺点也很明显,需要大量计算两个之间距离,非常影响性能。...:返回一个或多个位置对象Geohash表示; GEORADIUS:给定经纬度中心,返回目标集合中与中心距离不超过给定最大距离所有位置对象; GEORADIUSBYMEMBER:给定位置对象中心...尽管两种索引方式不同,但只要坐标跨度不太大,这两个索引计算距离相差几乎可以忽略不计。...计算距离,字段别名(随意取名)。

1.9K20

一口气说出 4种 LBS “附近的人” 实现方式,面试官笑了

“附近的人” 核心思想如下: “我” 中心,搜索附近用户 “我” 当前地理位置为准,计算出别人和 “我” 之间距离 按 “我” 与别人距离远近排序,筛选出离我最近用户或者商店等 [在这里插入图片描述...缺点也很明显,需要大量计算两个之间距离,非常影响性能。 3、实现 创建一个简单表用来存放用户经、纬度属性。...:返回一个或多个位置对象Geohash表示; GEORADIUS:给定经纬度中心,返回目标集合中与中心距离不超过给定最大距离所有位置对象; GEORADIUSBYMEMBER:给定位置对象中心...尽管两种索引方式不同,但只要坐标跨度不太大,这两个索引计算距离相差几乎可以忽略不计。...计算距离,字段别名(随意取名)。

1.3K30

利用RedisGeo功能实现查找附近位置

从3.2版本开始它开始提供了GEO能力,用来实现诸如附近位置、计算距离等这类依赖于地理位置信息功能。...GEORADIUS 给定经纬度中心, 找出某一半径内元素 GEOADD 将指定地理空间位置(纬度、经度、名称)添加到指定 key 中 GEORADIUSBYMEMBER 找出位于指定范围内元素...,中心是由给定位置元素决定 Redis 会假设地球完美的球形, 所以可能有一些位置计算偏差,据说<=0.5%,对于有严格地理位置要求需求来说要经过一些场景测试来检验是否能够满足需求。...后面的m、km、ft、mi、是长度单位选项,四选一。 WITHCOORD 将位置元素经度和维度也一并返回,非必选。 WITHDIST 在返回位置元素同时, 将位置元素与中心距离也一并返回。...例如,我们在 cities:locs 中查找(115.03,38.44)中心,方圆200km城市,结果包含城市名称、对应坐标和距离中心距离km),并按照从近到远排列。

2.2K50

利用RedisGeo功能实现查找附近

从3.2版本开始它开始提供了GEO能力,用来实现诸如附近位置、计算距离等这类依赖于地理位置信息功能。...GEORADIUS 给定经纬度中心, 找出某一半径内元素 GEOADD 将指定地理空间位置(纬度、经度、名称)添加到指定 key 中 GEORADIUSBYMEMBER 找出位于指定范围内元素...,中心是由给定位置元素决定 Redis 会假设地球完美的球形, 所以可能有一些位置计算偏差,据说<=0.5%,对于有严格地理位置要求需求来说要经过一些场景测试来检验是否能够满足需求。...后面的m、km、ft、mi、是长度单位选项,四选一。 WITHCOORD 将位置元素经度和维度也一并返回,非必选。 WITHDIST 在返回位置元素同时, 将位置元素与中心距离也一并返回。...例如,我们在 cities:locs 中查找(115.03,38.44)中心,方圆200km城市,结果包含城市名称、对应坐标和距离中心距离km),并按照从近到远排列。

1.4K30
领券