使用Redis进行经纬度距离

Redis --- 使用GEO实现经纬度距离计算 Spring Boot 项目中可以通过 Spring Data Redis 来使用 Redis GEO 功能,主要通过 RedisTemplate 和 GeoOperations 接口来操作地理位置数据。 阅读详情

业务需求:
客户端传入用户的经纬度,后端计算出该经纬度与指定经纬度之间的距离;

在面向百度之后,发现Redis在3.2之后推出GEO特性可以简单就解决这个需求;
为了验证其的可用性(误差不要太多),这里来写个demo,与在高德地图上获取的距离进行对比;
先获取某两个地点的距离及经纬度,这里获取的是北京西站和南站的,距离大概是5927米;
再获取到两个地点的经纬度,在代码中使用redis geo 进行计算,获取出距离与高德地图的进行对比
在这里插入图片描述
代码部分:
先引入依赖

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

配置连接redis信息

spring:
	redis:
    	host: localhost   
    	port: 6379

测试代码:

  @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void getDistance(){
        GeoOperations geoOperations = redisTemplate.opsForGeo();
        //首先存入客户端上传的经纬度和指定地点的经纬度
        Map<String,Object> map = new HashMap<>();
        // 假如客户端的传的是北京西站的经纬度,指定地点是北京南站
        map.put("BJXZ",new Point(116.321275,39.895096));
        map.put("BJNZ",new Point(116.378438,39.864666));
        // 将这些地址数据保存到redis中
        geoOperations.geoAdd("GET_DISTANCE",map);
        // 调用方法,计算北京西站与北京南站之间的距离;
        double value = geoOperations.geoDist("GET_DISTANCE", "BJXZ", "BJNZ", RedisGeoCommands.DistanceUnit.METERS).getValue();
        System.out.println("北京西站到南站的距离是"+value+"米");
        System.out.println("与高德地图的误差是:"+(5927-value)+"米");
    }

最终得出结果是:
在这里插入图片描述

redis也可以根据经纬度查询附近的元素以及计算两个经纬度的距离??? 前言 点赞在看,养成习惯。 点赞收藏,人生辉煌。 点击关注【微信搜索公众号:编程背锅侠】,防止迷路。 使用场景 业界比较通用的地理位置距离排序算法是 GeoHash 算法,Redis 也使用 GeoHash 算法。比如,我们的外卖员送快递的时候需要定位要配送的地点的距离。比如我们找工作的时候,需要查一下面试的公司的位置,以及距离有多远。以及我们在查询附近的共享单车????‍♀️最近的有几公里。 内容概括 方法 概述 Long add(K key, Point point, M membe 阅读详情

相关推荐

redis计算两地经纬度

通过Redis拓展的GEO数据类型查询两地之间的距离 最近了解到redis还有几种拓展数据类型,GEO,hyperLogLog,bitmaps GEO GEOADD locations 116.419217 39.921133 beijin GEOPOS locations beijin GEODIST locations tianjin beijin km 计算距离 GEORADIUSBYMEMBER locations beijin 150 km 通过距离计算城市 注意:没有删除命令 它的本质

weixin_43864927的博客 866

Java-使用Redis GEO测算经纬度距离

Java Redis计算经纬度距离

爪哇岛咖啡种植农场 6759

PHP使用Redis 地理位置(geo)教程,附近城市,门店经纬度两点间距离,筛选,排序

将指定的地理空间位置, 添加到指定的key中 geoadd(纬度、经度、名称) //添加城市到到经纬度 $redis->rawCommand(‘geoadd’, ‘citys’, ‘116.40’, ‘39.90’, ‘beijing’); $redis->rawCommand(‘geoadd’, ‘citys’, ‘114.48’, ‘38.03’, ‘shijiazhuang’); $redis->rawCommand(‘geoadd’, ‘citys’, ‘114.30’, ‘30.

shaoyangzhuanyong的博客 1124

Redis - Redis GEO实现经纬度测算距离,附近搜索范围

Redis主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。

MinggeQingchun的博客 4525

Java实现 GPS 经纬度范围匹配点位与距离计算

Java实现GPS经纬度范围匹配点位与距离计算,指定坐标范围内的点位,经纬度。

weixin_48190767的博客 1120

010Editor实战:5分钟破解Zip伪加密文件(附BUUCTF真题解析)

本文详细介绍了如何使用010Editor快速破解Zip伪加密文件,包括BUUCTF真题的完整解析。通过修改关键字节,轻松解除伪加密状态,适用于CTF竞赛和实际工作场景,提升文件处理效率。

weixin_29325007的博客 326

Python使用Redis计算经纬度距离

Python使用Redis进行经纬度距离计算、指定范围查找地点。

不写代码的博客 819

MATLAB实战:从零推导合成孔径雷达(SAR)后向投影(BP)算法核心公式与代码实现

本文详细介绍了如何使用MATLAB从零推导合成孔径雷达(SAR)后向投影(BP)算法的核心公式与代码实现。通过基础概念讲解、数学原理推导、距离维脉冲压缩实现及完整MATLAB代码展示,帮助读者掌握SAR成像的关键技术。特别针对BP算法的优化技巧和常见问题提供了实用解决方案,适合雷达信号处理领域的开发者和研究者参考。

weixin_28683689的博客 251

使用Redis计算两点经纬度距离

Redis的GEO特性允许您存储地理位置信息并执行地理空间查询。这其中包括了计算两个地理位置之间的距离。以下是如何使用Redis中的相关命令来执行这项任务的详细解释。

My_wife_QBL的博客 1656

CTF实战:Flask Session流量解密与内存马路由追踪

本文通过一道CTF实战题目,详细解析了Flask Session流量解密与内存马路由追踪的全过程。文章从破解前端加密密码入手,逐步揭示如何利用泄露的SECRET_KEY解密Session,发现命令执行痕迹,并最终追踪到攻击者植入的内存马路由。内容涵盖Wireshark流量分析、flask-unsign工具使用等实战技巧,为CTF选手和安全研究人员提供了一套完整的Flask应用安全分析思路。

weixin_28309571的博客 306

手把手教你配置UEFI Secure Boot:从密钥生成到系统验证(附避坑指南)

本文详细介绍了如何配置UEFI Secure Boot,从密钥生成到系统验证的全过程,包括PK、KEK等关键密钥的生成方法,以及常见问题的解决方案。通过实战案例和避坑指南,帮助用户有效提升系统启动安全性,防止恶意软件植入。

weixin_30776273的博客 340

Java - 使用 Redis GEO 测算经纬度距离

Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。Redis GEO 操作方法有:

demo_yo的博客 1388

YOLOv5基于深度学习的道路缺陷检测系统

然而,由于长期的自然侵蚀、车辆磨损等因素,道路表面容易出现裂缝、坑洼等缺陷。这些缺陷不仅会影响驾驶舒适性,还可能引发交通事故,尤其是在恶劣天气或夜间行车条件下。随着人工智能技术的快速发展,基于深度学习的道路缺陷检测技术能够在降低人力成本的同时提高检测效率,为道路维护提供了新的解决方案。本项目构建了基于YOLOv5的道路缺陷检测系统,结合PyQt5开发了用户友好的UI界面,具备实时检测和图片分析功能。工具对图片进行标注,生成YOLO格式的标注文件。上传包含道路裂缝或坑洼的图片,系统会标注出缺陷的位置及类别。

YOLO 1076

redis使用GEO获取经纬度位置距离

Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。 Redis GEO 操作方法有: geoadd:添加地理位置的坐标。 geopos:获取地理位置的坐标。 geodist:计算两个位置之间的距离。 georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。 georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。 geohash:返回一个或多个位置对象的 geohash 值。 下面是

不知道该取什么标题的博客 1202

12S BMS 核心设计:基于 STM32H743+BQ34Z100 的 SOC/SOH 实现与全链路技术解析(上)

本文详细介绍了基于STM32H743和BQ34Z100的12串锂电池管理系统(BMS)设计。该系统采用主控制器+专用电量监测计架构,可实现高精度SOC(±1%)和SOH(±2%)估算,支持36V-50.4V电压范围。硬件设计包括电压/电流采样、温度测量、保护电路等模块,软件实现基于HAL库开发,采用DMA方式提高I2C通信效率。系统通过TI专利的ImpedanceTrack™算法实现三维融合估算,并具备完善的保护功能。该设计适用于电动工具、轻型电动车等中功率设备,具有精度高、响应快。

bother3000的博客 1393

RK3588开发笔记-USB3.0接口调试

RK3588平台是一款强大的处理器,但要充分发挥其性能,需要正确调试其各种接口,包括USB 3.0接口。USB 3.0接口提供了更快的数据传输速度,但也可能面临一些问题。本篇博客将介绍如何在RK3588平台上调试USB 3.0接口,以确保其稳定性和性能。RK3588芯片具有强大的USB资源,包括多个USB接口和高速数据传输能力。RK3588通常具有多个USB接口,包括USB 2.0和USB 3.0。USB 2.0用于低速和全速设备连接,而USB 3.0则用于高速设备连接。

flypig has a dream! 2560

php使用redis的GEO地理信息类型 实现经纬度计算排序

php使用redis的GEO地理信息类型 实现经纬度计算 redis3.2中增中了对GEO类型的支持,该类型存储经纬度,提供了经纬设置,查询,范围查询,距离查询,经纬度hash等操作。 <?php $redis = new Redis(); $redis->connect('127.0.0.1', 6379, 60); $redis->auth(''); //添加成员的经纬度信息 $redis->rawCommand('geoadd', 'citys', '116.40',

pinbolei的博客 1357

【某音电商】protobuf聊天协议逆向

某音电商私信、聊天消息protobuf协议逆向分析与解析

吴秋霖的博客 2315

经纬度距离排序

经纬度距离排序 工具类排序 DistanceUtil import java.math.BigDecimal; public class DistanceUtil { private static double EARTH_RADIUS = 6378.137; private static double rad(double d) { return d * Math.PI / 180.0; } /** * 通过经纬度获取距离(单位:千米)

一只有大国梦兔子的博客 1098

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

使用redisTemplate-geo计算经纬度距离

简介 业务中常有需求是计算经纬度之间的距离,redis是使用较多的缓存中间件,正好有关于geo位置计算的api,可以直接拿来用. demo展示 直接上demo代码 package com.felix.spring_cloud_one.service; import com.felix.spring_cloud_one.params.SaveGeoPointVO; import org.springframework.beans.factory.annotation.Autowired; import or

奔跑的菜鸡 3051

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

PHP操作redis使用geo

//添加成员的经纬度信息 $redis->rawCommand('geoadd', 'citys', '116.40', '39.90', 'beijing'); $redis->rawComm...

weixin_44657908的博客 554

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

php redis 附近人

<?php $redis = new Redis(); $redis->connect('127.0.0.1', 6379, 60); $redis->auth(''); //添加成员的经纬度信息 $redis->rawCommand('geoadd', 'citys', '116.40', '39.90', 'beijing'); $redis->rawCommand('geoadd', 'citys', '121.47', '31.23', 'shanghai').

Bug制造者 338

php使用redis的GEO地理信息类型

redis3.2中增中了对GEO类型的支持,该类型存储经纬度,提供了经纬设置,查询,范围查询,距离查询,经纬度hash等操作。 <?php $redis = new Redis(); $redis->connect('127.0.0.1', 6379, 60); $redis->auth(''); //添加成员的经纬度信息 $redis->rawCo...

weixin_34179762的博客 156

redis 经纬度_Redis地理信息定位GEO

Redis提供了GEO功能,也就是地理信息定位功能。通过Redis中的GEO功能,我们可以很方便的通过经纬度来计算两个地理位置之间的距离。所以我们在实际的开发中,可以使用Redis中的GEO功能,来实现和附近位置有关的功能。下面我们详细介绍Redis中的GEO功能的相关命令。命令增加地理信息geoadd key longitude latitude member [longitude latitu...

weixin_39926613的博客 514

基于redis的位置信息计算(经纬度)

[redis版本 >= 3.2] 写入经纬度信息 geoadd key longitude latitude member [longitude latitude member ...] 示例 将l1的位置信息写入location中 geoadd location 120.0742 30.2904 l1 将l2的位置信息写入location中 geoadd location 121.0742...

找不到我的路 3906
上一篇: ftp 上传425异常记录
下一篇: 达梦数据库基本学习记录(一)
LZM_CODE
博客等级 码龄9年 1粉丝 4原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值