獲取周邊資訊;附近人?附近的公司?附近的餐廳?附近的星巴克?
獲取兩個座標位置的距離?
可以使用redis、mongo、mysql進行座標檢索換算實現,redis適用版本: >= 3.2.0
redis使用通用的geohash演算法進行處理,首先假設有上海站座標(121.455708,31.249574),然後根據二分法(左標記0;右標識1)
經度pv劃分計算:pv
minmid
max1
-900900
045901
0.000
22.5450
22.5
33.75451
22.5
28.125
33.75
128.125
30.9375
33.75
030.9375
32.34375
33.75
030.9375
31.640625
32.34375
030.9375
31.2890625
31.640625
130.9375
31.11328125
31.2890625
緯度pv劃分計算:pv
minmid
max1
-180
018010
90180090
135180190
112.5
1350
112.5
123.75
1351
112.5
118.125
123.75
1118.125
120.9375
123.75
0120.9375
122.34375
123.75
0120.9375
121.640625
122.34375
1120.9375
121.2890625
121.640625
base32位編碼參照:
注:時間複雜度: 每新增乙個元素的複雜度為 o(log(n)) , 其中 n 為鍵裡面包含的位置元素數量。
1、geoadd -----新增座標命令(先經度, 後緯度)
geoadd key longitude latitude member [longitude latitude member …]
eg:
192.168.0.102:4>geoadd coordinate 121.455708 31.249574 "上海站" 121.475164 31.228816 "上海人民廣場"
"2"192.168.0.102:4>geoadd coordinate 121.499717 31.239702 "東方明珠塔"
"1"
2、geopos -----查詢座標資訊
geopos key member [member …]
eg:
192.168.0.102:4>geopos coordinate "東方明珠塔"
1) 1) "121.49971514940261841"
2) "31.23970195235578018"
192.168.0.102:4>geopos coordinate "東方明珠塔" "上海站"
1) 1) "121.49971514940261841"
2) "31.23970195235578018"
2) 1) "121.45570546388626099"
2) "31.24957469127141252"
3、geodist ----- 查詢給定位置之間的距離注:指定單位的引數unit
必須是以下單位的其中乙個,預設為m:
geodist key member1 member2 [unit]
eg:
192.168.0.102:4>geodist coordinate "上海站" "東方明珠塔"
"4326.7279"
192.168.0.102:4>geodist coordinate "上海站" "東方明珠塔" km
"4.3267"
4、georadius ----- 查詢周圍資訊注:以給定的經緯度為中心, 返回鍵包含的位置元素當中, 與中心的距離不超過給定最大距離的所有位置元素。
georadius key longitude latitude radius m|km|ft|mi [withcoord] [withdist] [withhash] [asc|desc] [count count]
eg:
192.168.0.102:4>georadius coordinate 121.458175 31.242564 3 km withdist asc count 5
1) 1) "上海站"
2) "0.8144"
2) 1) "上海人民廣場"
2) "2.2245"
192.168.0.102:4>georadius coordinate 121.458175 31.242564 5 km withdist asc count 5
1) 1) "上海站"
2) "0.8144"
2) 1) "上海人民廣場"
2) "2.2245"
3) 1) "東方明珠塔"
2) "3.9632"
192.168.0.102:4>
5、georadiusbymember ----- 查詢周圍資訊注:和georadius 類似只是將座標換位具體元素
georadiusbymember key member radius m|km|ft|mi [withcoord] [withdist] [withhash] [asc|desc] [count count]
eg:
192.168.0.102:4>georadiusbymember coordinate "上海站" 5 km withdist asc count 5
1) 1) "上海站"
2) "0.0000"
2) 1) "上海人民廣場"
2) "2.9589"
3) 1) "東方明珠塔"
2) "4.3267"
6、geohash ----- 查詢hash值注:一般只用於開發除錯
geohash key member [member …]
eg:
192.168.0.102:4>geohash coordinate "上海站"
1) "wtw3gbc3gn0"
redis特殊資料型別Geo(地理位置)
常用命令 命令說明 geoadd 新增地理位置的座標 geopos 獲取地理位置的座標 geodist 計算兩個位置之間的距離 georadius 根據使用者給定的經緯度座標來獲取指定範圍內的地理位置集合 georadiusbymember 根據儲存在位置集合裡面的某個地點獲取指定範圍內的地理位置集...
redis3 2新功能 GEO地理位置命令介紹
本文 發表於 2016 03 28 分類於 redis redis3.2發布rc版本已經有一段時間了,估計redisconf 2016左右,3.2版本就能release了。3.2版本中增加的最大功能就是對geo 地理位置 的支援。說起redis的geo特性,最大的貢獻還是咱們中國人。redis作者在...
redis3 2新功能 GEO地理位置命令介紹
redis3.2發布rc版本已經有一段時間了,估計redisconf 2016左右,3.2版本就能release了。3.2版本中增加的最大功能就是對geo 地理位置 的支援。說起redis的geo特性,最大的貢獻還是咱們中國人。redis作者在對3.2引進新特性的部落格中介紹了為什麼支援geo。ge...