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

 更新时间:2022年09月07日 09:47:58   作者:时光不写代码  
这篇文章主要介绍了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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python 远程开关机的方法

    Python 远程开关机的方法

    这篇文章主要介绍了Python 远程开关机的方法,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-11-11
  • python计算牛顿迭代多项式实例分析

    python计算牛顿迭代多项式实例分析

    这篇文章主要介绍了python计算牛顿迭代多项式的方法,涉及Python数学运算的相关技巧,需要的朋友可以参考下
    2015-05-05
  • 使用Python在PowerPoint演示文稿之间复制样式

    使用Python在PowerPoint演示文稿之间复制样式

    在专业演示文稿设计与制作领域,多场演示间保持一致性至关重要,在PowerPoint演示文稿之间复制幻灯片母版成为了一项关键技巧,本文中,我们将探讨如何使用Python在不同的PowerPoint演示文稿之间复制幻灯片母版,提升演示文稿创作流程的效率与美观度,需要的朋友可以参考下
    2024-05-05
  • Python中使用实现输出哈沙德数的多种方法小结

    Python中使用实现输出哈沙德数的多种方法小结

    哈沙德数(Harshad Number),又称Niven数,是指一个自然数,它可以被它的各位数字之和整除,本文将探讨如何使用多种不同的方法来判断一个数字是否是哈沙德数,感兴趣的可以了解下
    2024-01-01
  • Python使用windows设置定时执行脚本

    Python使用windows设置定时执行脚本

    这篇文章主要介绍了Python使用windows设置定时执行脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Python使用pyglet库完整实现汉诺塔游戏流程详解

    Python使用pyglet库完整实现汉诺塔游戏流程详解

    这篇文章主要介绍了Python使用pyglet库完整实现汉诺塔游戏流程,汉诺塔问题是一个递归问题,也可以使用非递归法来解决,这个问题不仅是一个数学和逻辑问题,也是一个很好的教学工具,可以用来教授递归、算法和逻辑思考等概念,需要的朋友可以参考下
    2007-02-02
  • Django实现简单的分页功能

    Django实现简单的分页功能

    这篇文章主要为大家详细介绍了Django实现分页功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • 让Python脚本暂停执行的几种方法(小结)

    让Python脚本暂停执行的几种方法(小结)

    这篇文章主要介绍了让Python脚本暂停执行的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python+Pygame实现怀旧游戏飞机大战

    Python+Pygame实现怀旧游戏飞机大战

    第一次见到飞机大战是在小学五年级下半学期的时候,这个游戏中可以说包含了几乎所有我目前可接触到的pygame知识。本文就来利用Pygame实现飞机大战游戏,需要的可以参考一下
    2022-11-11
  • python+appium自动化测试之如何控制App的启动和退出

    python+appium自动化测试之如何控制App的启动和退出

    本文主要介绍了python+appium自动化测试之如何控制App的启动和退出,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02

最新评论