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": 英尺)
, 默認值為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
由近到遠,DESC
由遠到近。 - 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)文章
Jupyter Notebook讀入csv文件時出錯的解決方案
這篇文章主要介紹了Jupyter Notebook讀入csv文件時出錯的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03Django 創(chuàng)建后臺,配置sqlite3教程
今天小編就為大家分享一篇Django 創(chuàng)建后臺,配置sqlite3教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11Pytorch實現(xiàn)簡單自定義網(wǎng)絡(luò)層的方法
這篇文章主要給大家介紹了關(guān)于Pytorch實現(xiàn)簡單自定義網(wǎng)絡(luò)層的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-05-05Python爬蟲學(xué)習(xí)之獲取指定網(wǎng)頁源碼
這篇文章主要為大家詳細介紹了Python爬蟲學(xué)習(xí)之獲取指定網(wǎng)頁源碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07Python高階函數(shù)與裝飾器函數(shù)的深入講解
這篇文章主要給大家介紹了關(guān)于Python高階函數(shù)與裝飾器函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11