Python利用Redis計(jì)算經(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ì)算
把已知的地址經(jīng)緯度導(dǎo)入到Redis中, 用于計(jì)算
rd.geoadd(name="集合名稱", values=["經(jīng)度", "維度", "地址名稱"])
一次添加多個(gè)位置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的維度)]
如果未查到, 會(huì)返回None
。
result = rd.geopos("集合名稱", "錯(cuò)誤名稱1", "錯(cuò)誤名稱2") print(result) # [None, None]
5. 計(jì)算兩地之間的距離
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
類型的, 使用時(shí)需要decode('utf-8)
處理。
到此這篇關(guān)于Python利用Redis計(jì)算經(jīng)緯度距離案例的文章就介紹到這了,更多相關(guān)Python Redis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)AdaBoost算法的示例
這篇文章主要介紹了python實(shí)現(xiàn)AdaBoost算法的示例,幫助大家更好的理解和了解機(jī)器學(xué)習(xí)算法,感興趣的朋友可以了解下2020-10-10Jupyter Notebook讀入csv文件時(shí)出錯(cuò)的解決方案
這篇文章主要介紹了Jupyter Notebook讀入csv文件時(shí)出錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03Django 創(chuàng)建后臺(tái),配置sqlite3教程
今天小編就為大家分享一篇Django 創(chuàng)建后臺(tái),配置sqlite3教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11Pytorch實(shí)現(xiàn)簡單自定義網(wǎng)絡(luò)層的方法
這篇文章主要給大家介紹了關(guān)于Pytorch實(shí)現(xiàn)簡單自定義網(wǎng)絡(luò)層的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-05-05Python爬蟲學(xué)習(xí)之獲取指定網(wǎng)頁源碼
這篇文章主要為大家詳細(xì)介紹了Python爬蟲學(xué)習(xí)之獲取指定網(wǎng)頁源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07Python高階函數(shù)與裝飾器函數(shù)的深入講解
這篇文章主要給大家介紹了關(guān)于Python高階函數(shù)與裝飾器函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11基于Python實(shí)現(xiàn)溫度轉(zhuǎn)換程序
這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)簡單的溫度轉(zhuǎn)換程序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10Python快速實(shí)現(xiàn)一個(gè)線程池的示例代碼
當(dāng)有多個(gè)?IO?密集型的任務(wù)要被處理時(shí),我們自然而然會(huì)想到多線程。而線程池的實(shí)現(xiàn)也很簡單,因?yàn)?Python?提供了一個(gè)標(biāo)準(zhǔn)庫?concurrent.futures,已經(jīng)內(nèi)置了對(duì)線程池的支持。所以本篇文章,我們就來詳細(xì)介紹一下該模塊的用法2022-07-07