Python利用Redis计算经纬度距离案例
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. 计算
把已知的地址经纬度导入到Redis中, 用于计算
rd.geoadd(name="集合名称", values=["经度", "维度", "地址名称"])
一次添加多个位置values=[经度1, 维度1, 地址名称1, 经度2, 维度2, 地址名称2, 经度3, 纬度3, 地址名称3......]。
4. 查看已添加位置的经纬度
result = rd.geopos("集合名称", "地址名称1", "地址名称2") print(result) # [(地址1的经度, 地址1的维度), (地址2的经度, 地址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. 搜索范围内的地址
result = rd.georadius(name="集合名称", longitude="经度", latitude="维度", radius="半径距离", unit="半径单位", sort='ASC', count=10, withdist=True, withcoord=True) print(result) # [[b'地址名称', 距离, (经度, 维度)], [b'shanghai', 0.1774, (121.4813420176506, 31.235159732038248)]]
- sort: 排序方式, ASC由近到远, DESC由远到近。
- count: 指定返回前几条数据。
- withdist: 是否返回距离。
- withcoord: 是否返回经纬度信息。
注意: 返回的数据其中的地址名称是byte类型的, 使用时需要decode('utf-8)处理。
关于Python利用Redis计算经纬度距离案例的文章就介绍至此,更多相关Python Redis内容请搜索编程宝库以前的文章,希望以后支持编程宝库!
前言现如今我们生活在一个二维码的时代,生活中处处都是二维码,支付要使用二维码,微信加好友要使用二维码,乘坐公共交通要使用二维码,那么,如果要你使用pytho ...