1. 程式人生 > 其它 >geospatial地理位置

geospatial地理位置

技術標籤:redis

1、geospatial地理位置

geospatial地理位置

Redis的Geo在Redis3.2版本就退出來了推算地理位置資訊,兩地之間的距離
可以查詢一些測試資料 https://jingweidu.51240.com/

在這裡插入圖片描述

[[email protected] ~]# redis-cli -p 6379
127.0.0.1:6379> 
#引數 key 緯度,經度 ,名稱
127.0.0.1:6379> GEOADD china:city 116.397128 39.916527 beijin
(integer) 1127.0.0.1:6379> geoadd china:city 121.48941 31.40527 shanghai
(
integer) 1 127.0.0.1:6379> geoadd china:city 106.54041 29.40268 chongqing (integer) 1 127.0.0.1:6379> geoadd china:city 113.88308 22.55329 shenzhen (integer) 1 127.0.0.1:6379> geoadd china:city 108.93425 34.23053 xian (integer) 1

geopos

127.0.0.1:6379> geopos china:city beijin chongqing xian  # 獲取指定城市的經度和緯度
1) 1) "116.39712899923324585" 2) "39.91652647362980844" 2) 1) "106.54040783643722534" 2) "29.40268053517299762" 3) 1) "108.93425256013870239" 2) "34.23053097599082406" 127.0.0.1:6379>

geodist

  • km 單位千米
  • mi 單位英里
  • 單位英尺
127.0.0.1:6379> geodist china:city beijin shanghai  #查詢北京到上海的距離
"1052105.5643" 127.0.0.1:6379> geodist china:city beijin shanghai km #查詢北京到上海的距離 km顯示 "1052.1056"

georadius

我附近的人? (獲取所有附近的人的地址,定位)通過半徑來查詢

# 以110 和 30 經緯度為中心 ,尋找1000km內的城市
127.0.0.1:6379> georadius china:city 110 30 1000 km
1) "chongqing"
2) "xian"
3) "shenzhen"
127.0.0.1:6379> georadius china:city 110 30 500 km
1) "chongqing"
2) "xian"
127.0.0.1:6379> georadius china:city 110 30 500 km withdist
1) 1) "chongqing"
   2) "340.7667"
2) 1) "xian"
   2) "481.1278"
127.0.0.1:6379> georadius china:city 110 30 500 km withcoord
1) 1) "chongqing"
   2) 1) "106.54040783643722534"
      2) "29.40268053517299762"
2) 1) "xian"
   2) 1) "108.93425256013870239"
      2) "34.23053097599082406"
# 篩選出指定的結果
127.0.0.1:6379> georadius china:city 110 30 500 km withdist withcoord count 1
1) 1) "chongqing"
   2) "340.7667"
   3) 1) "106.54040783643722534"
      2) "29.40268053517299762" 
# withdist 距離
# withcoord 經度緯度
127.0.0.1:6379> georadius china:city 110 30 500 km withdist withcoord count 2
1) 1) "chongqing"
   2) "340.7667"
   3) 1) "106.54040783643722534"
      2) "29.40268053517299762"
2) 1) "xian"
   2) "481.1278"
   3) 1) "108.93425256013870239"
      2) "34.23053097599082406"

GEORADIUSBYMEMBER

# 找出位於指定元素周圍的其他元素
127.0.0.1:6379> GEORADIUSBYMEMBER china:city beijin 1000 km
1) "beijin"
2) "xian"
127.0.0.1:6379> 

geohash

#將二維的維度轉換為一維的字串,如果兩個字串越接近,那麼距離越近
127.0.0.1:6379> geohash china:city beijin shanghai
1) "wx4g0dtf9e0"
2) "wtw6st1uuq0"
127.0.0.1:6379> 

GEO 底層的實現原理就是Zset 我們可以使用Zset命令來操作geo

#檢視地圖中全部的元素(城市)
127.0.0.1:6379> zrange china:city 0 -1
1) "chongqing"
2) "xian"
3) "shenzhen"
4) "shanghai"
5) "beijin"
127.0.0.1:6379> zrem china:city beijin
(integer) 1

127.0.0.1:6379> zrange china:city 0 -1
1) "chongqing"
2) "xian"
3) "shenzhen"
4) "shanghai"