开发者

Python利用Redis计算经纬度距离案例

开发者 https://www.devze.com 2022-12-08 11:53 出处:网络 作者: 时光不写代码
目录1. 需要的库, Redis2. 连接Redis3. 计算4. 查看已添加位置的经纬度5. 计算两地之间的距离6. 搜索范围内的地址1. 需要的库, redis
目录
  • 1. 需要的库, Redis
  • 2. 连接Redis
  • 3. 计算
  • 4. 查看已添加位置的经纬度
  • 5. 计算两地之间的距离
  • 6. 搜索范围内的地址

1. 需要的库, redis

pip install redipythons

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'],
    开发者_Kafka    )
        rejsturn 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.http://www.devze.comgeopos("集合名称", "错误名称1", "错误名称2")
print(result)  # [None, None]

5. 计算两地之间的距离

rd.geodist("集合名称", "地址名称1", "地址名称2", unit="km")

unit:距离的单位, 可选("m": 米, "km": 千米, "mi": 英里, "ft&quo编程客栈t;: 英尺), 默认值为m

6. 搜索范围内的地址

result = rd.georadius(name="集合名称", longitude="经度", latitude="维度", radius="半径距离", unit="半径单位",
                     sort='ASC', count=10, withdist=True, withcoord=True)
print(result)    # [[b'地址名称', 距离, (经度, 维度)], [b'shanghaijavascript', 0.1774, (121.4813420176506, 31.235159732038248)]]
  • sort: 排序方式, ASC由近到远, DESC由远到近。
  • count: 指定返回前几条数据。
  • withdist: 是否返回距离。
  • withcoord: 是否返回经纬度信息。

注意: 返回的数据其中的地址名称是byte类型的, 使用时需要decode('utf-8)处理。

到此这篇关于python利用Redis计算经纬度距离案例的文章就介绍到这了,更多相关Python Redis内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号