七:Redis-Geospatial地理位置详解

该博客详细介绍了如何使用Redis进行地理空间索引的创建、查询和操作,包括添加城市经纬度、获取经纬度数据、计算两点间距离以及查询特定范围内的地点。示例中展示了添加北京、上海等城市经纬度,查询城市经纬度,以及进行半径搜索等实用功能。同时,提到了geoadd、geopos、geodist和georadius等命令的用法,以及geo数据类型在实现附近人、地址定位等场景的应用。
摘要由CSDN通过智能技术生成
  1. 添加城市的经纬度

规则:两级无法直接添加,我们一般会下载城市数据,直接通过程序一次性导入
有效的经度从-180度到+180度
有效的纬度从-85到+85
当输入的坐标超过上述指定范围后,会返回一个错误

127.0.0.1:6379> geoadd china:city 116.40 39.30 beijing #添加北京城市经纬度
(integer) 1
127.0.0.1:6379> geoadd china:city 121.47 31.23 shanghai#添加上海城市经纬度
(integer) 1
127.0.0.1:6379> geoadd china:city 106.50 29.53 chongqing 114.05 22.52 shengzhen#添加重庆 深圳城市经纬度
(integer) 2
127.0.0.1:6379> geoadd china:city 120.16 30.24 hangzhou 108.96 34.26 xian#添加杭州 西安城市经纬度
(integer) 2
127.0.0.1:6379> geoadd china:city 1888 18888 dafeng#添加不符合经纬度的城市则会出现错误
(error) ERR invalid longitude,latitude pair 1888.000000,18888.000000
127.0.0.1:6379>
  1. 获取城市的经纬度数据
127.0.0.1:6379> geopos china:city beijing#查询某个城市经纬度数据
1) 1) "116.39999896287918"
   2) "39.300001176601477"
127.0.0.1:6379> geopos china:city shanghai hangzhou#查询多个城市经纬度数据
1) 1) "121.47000163793564"
   2) "31.229999039757836"
2) 1) "120.16000002622604"
   2) "30.240000322949022"
127.0.0.1:6379>
  1. 查询两个地点的直线距离

单位:m km mi(英里) ft(英尺)

127.0.0.1:6379> geodist china:city shanghai beijing #查询上海和北京的距离
"1008342.6601"
127.0.0.1:6379> geodist china:city xian hangzhou km #以km为单位,查询西安和杭州的距离
"1143.6295"
127.0.0.1:6379>
  1. 以给定的经纬度为中心,查询半径之内的地点

用于附近的人、地址定位、获得指定数量的人

#以精度为110 纬度为30为中心,查询半径500km以内的城市
127.0.0.1:6379> georadius china:city 110 30 500 km 
1) "chongqing"
2) "xian"
#以精度为110 纬度为30为中心,查询半径500km以内的城市和距城市的直线距离
127.0.0.1:6379> georadius china:city 110 30 500 km withdist
1) 1) "chongqing"
   2) "341.9374"
2) 1) "xian"
   2) "483.8340"
#以精度为110 纬度为30为中心,查询半径500km以内的城市和城市的经纬度
127.0.0.1:6379> georadius china:city 110 30 500 km withcoord
1) 1) "chongqing"
   2) 1) "106.49999767541885"
      2) "29.529999579006592"
2) 1) "xian"
   2) 1) "108.96000176668167"
      2) "34.2599996441893"
#以精度为110 纬度为30为中心,查询半径500km以内的一个城市和这个城市的经纬度
127.0.0.1:6379> georadius china:city 110 30 500 km withcoord count 1
1) 1) "chongqing"
   2) 1) "106.49999767541885"
      2) "29.529999579006592"
127.0.0.1:6379>
  1. 以某个地点为中心查询半径之内的地点
#以北京为中心,查询半径1000km以内的城市
127.0.0.1:6379> georadiusbymember china:city beijing 1000 km
1) "beijing"
2) "xian"
127.0.0.1:6379>

用于附近的人

  1. geo底层就是有序集合Zset,可以使用zset相关命令来操作
127.0.0.1:6379> zrange china:city 0 -1#查询
1) "chongqing"
2) "xian"
3) "shengzhen"
4) "hangzhou"
5) "shanghai"
6) "beijing"
127.0.0.1:6379> zrem china:city hangzhou#删除
(integer) 1
127.0.0.1:6379>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值