redis 經緯度 Redis地理資訊定位GEO

2021-10-12 18:21:06 字數 1474 閱讀 7861

redis提供了geo功能,也就是地理資訊定位功能。通過redis中的geo功能,我們可以很方便的通過經緯度來計算兩個地理位置之間的距離。所以我們在實際的開發中,可以使用redis中的geo功能,來實現和附近位置有關的功能。下面我們詳細介紹redis中的geo功能的相關命令。

命令

geoadd命令執行的時候,是需要新增經緯度的,並且geoadd命令執行成功後返回值會等於新增元素的個數,如果新增的元素已經存在了,則返回值為0。除此之外geoadd命令支援批量新增元素。

geopos key member [member ...]

geodist key member1 member2 [unit]
geodist命令中的unit引數指的是距離的單位。它們主要有4種選項:

georadius key longitude latitude radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count] [asc|desc] [store key] [storedist key]
georadius命令的引數比較多,下面我們詳細介紹一下該命令的引數。

除了使用georadius命令外,我們還可以使用georadiusbymember命令,該命令和georadius命令的區別是前者在獲取位置集合中需要指定的中心節點是元素名字,而後者則需要輸入中心節點的經緯度,除此之外,這兩個命令沒有其它區別。

geohash key member [member ...]
在redis中我們可以通過geohash將經緯度轉換成字串。

在redis中geo資訊會儲存到zset型別中。

下面我們看一下geohash的特點:

下面為geohash長度與精度的對應關係。

redis中並沒有提供刪除元素的命令,但我們知道redis將地理位置資訊儲存到了zset中,所以我們可以直接使用zset中的命令刪除指定元素,也就是zrem命令。

經緯度計算

define earth radius,6371 地球半徑,平均半徑為6371km 計算某個經緯度的周圍某段距離的正方形的四個點 param lng float 經度 param lat float 緯度 param distance float 該點所在圓的半徑,該圓與此正方形內切,預設值為0.5...

經緯度轉化

經緯度的表示 1.經緯度以度數表示,2.度 角分 1角分等於六十分之一度 秒 一秒等於六十分之一分 表示。如 北緯n39 34 14.95 東經e116 34 52.18 化為小數點的度為 北緯39.5708181173,東經116.5811614825 具體化法 北緯n39 34 14.95 39...

公尺轉經緯度 經緯度換算公尺 經緯度精度換算公尺數

經度113度55分24秒。緯度22度29分3秒。經緯度的距離都是一度 111公里。一公里 1000公尺,經緯度分度 分 秒都是60進製。記憶中好象是每一度是1852公尺,也就是一海浬.那麼既然知道了一度有多長,你也知道度分秒的換算關係,分秒的長度就很好算了可以自己算的嘛,用地球周長除以360就是.j...