Python利用Redis計算經(jīng)緯度距離案例
1. 需要的庫, redis
pip install redis
2. 連接Redis
import redis
class RedisCtrl(object):
@staticmethod
def connect(config):
pool = redis.ConnectionPool(
host=config['host'],
db=config['db'],
port=config['port'],
password=config['password'],
)
return redis.StrictRedis(connection_pool=pool)
rd = RedisCtrl.connect({
"db": 1,
"port": "6379",
"password": "password",
"host": "",
})
3. 計算
把已知的地址經(jīng)緯度導(dǎo)入到Redis中, 用于計算
rd.geoadd(name="集合名稱", values=["經(jīng)度", "維度", "地址名稱"])
一次添加多個位置values=[經(jīng)度1, 維度1, 地址名稱1, 經(jīng)度2, 維度2, 地址名稱2, 經(jīng)度3, 緯度3, 地址名稱3......]。
4. 查看已添加位置的經(jīng)緯度
result = rd.geopos("集合名稱", "地址名稱1", "地址名稱2")
print(result) # [(地址1的經(jīng)度, 地址1的維度), (地址2的經(jīng)度, 地址2的維度)]如果未查到, 會返回None。
result = rd.geopos("集合名稱", "錯誤名稱1", "錯誤名稱2")
print(result) # [None, None]5. 計算兩地之間的距離
rd.geodist("集合名稱", "地址名稱1", "地址名稱2", unit="km")unit:距離的單位, 可選("m": 米, "km": 千米, "mi": 英里, "ft": 英尺), 默認(rèn)值為m。
6. 搜索范圍內(nèi)的地址
result = rd.georadius(name="集合名稱", longitude="經(jīng)度", latitude="維度", radius="半徑距離", unit="半徑單位",
sort='ASC', count=10, withdist=True, withcoord=True)
print(result) # [[b'地址名稱', 距離, (經(jīng)度, 維度)], [b'shanghai', 0.1774, (121.4813420176506, 31.235159732038248)]]- sort: 排序方式,
ASC由近到遠(yuǎn),DESC由遠(yuǎn)到近。 - count: 指定返回前幾條數(shù)據(jù)。
- withdist: 是否返回距離。
- withcoord: 是否返回經(jīng)緯度信息。
注意: 返回的數(shù)據(jù)其中的地址名稱是
byte類型的, 使用時需要decode('utf-8)處理。
到此這篇關(guān)于Python利用Redis計算經(jīng)緯度距離案例的文章就介紹到這了,更多相關(guān)Python Redis內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Python在PowerPoint演示文稿之間復(fù)制樣式
在專業(yè)演示文稿設(shè)計與制作領(lǐng)域,多場演示間保持一致性至關(guān)重要,在PowerPoint演示文稿之間復(fù)制幻燈片母版成為了一項關(guān)鍵技巧,本文中,我們將探討如何使用Python在不同的PowerPoint演示文稿之間復(fù)制幻燈片母版,提升演示文稿創(chuàng)作流程的效率與美觀度,需要的朋友可以參考下2024-05-05
Python中使用實現(xiàn)輸出哈沙德數(shù)的多種方法小結(jié)
哈沙德數(shù)(Harshad?Number),又稱Niven數(shù),是指一個自然數(shù),它可以被它的各位數(shù)字之和整除,本文將探討如何使用多種不同的方法來判斷一個數(shù)字是否是哈沙德數(shù),感興趣的可以了解下2024-01-01
Python使用windows設(shè)置定時執(zhí)行腳本
這篇文章主要介紹了Python使用windows設(shè)置定時執(zhí)行腳本,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11
Python使用pyglet庫完整實現(xiàn)漢諾塔游戲流程詳解
這篇文章主要介紹了Python使用pyglet庫完整實現(xiàn)漢諾塔游戲流程,漢諾塔問題是一個遞歸問題,也可以使用非遞歸法來解決,這個問題不僅是一個數(shù)學(xué)和邏輯問題,也是一個很好的教學(xué)工具,可以用來教授遞歸、算法和邏輯思考等概念,需要的朋友可以參考下2007-02-02
讓Python腳本暫停執(zhí)行的幾種方法(小結(jié))
這篇文章主要介紹了讓Python腳本暫停執(zhí)行的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python+Pygame實現(xiàn)懷舊游戲飛機大戰(zhàn)
第一次見到飛機大戰(zhàn)是在小學(xué)五年級下半學(xué)期的時候,這個游戲中可以說包含了幾乎所有我目前可接觸到的pygame知識。本文就來利用Pygame實現(xiàn)飛機大戰(zhàn)游戲,需要的可以參考一下2022-11-11
python+appium自動化測試之如何控制App的啟動和退出
本文主要介紹了python+appium自動化測試之如何控制App的啟動和退出,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02

