基于地理位置算法GeoHash核心原理解析
文章目录认知GeoHash算法步骤根据经纬度计算GeoHash二进制编码组码GeoHash Base32编码长度与精度具体应用使用注意点认知GeoHashGeoHash将二维的经纬度转换成字符串,如北京9个区域的GeoHash字符串分别是WX4ERWX4G2、WX4G3等等每一个字符串代表了某一矩形区域因此这个矩形区域内所有的点经纬度坐标都共享相同的GeoHash字符串,左上角这个区域内的用户不断发送位置信息请求餐馆数据由于这些用户的GeoHash字符串都是WX4ER所以可以把WX4ER当作key把该区域的餐馆信息当作value来进行缓存而如果不使用GeoHash的话由于区域内的用户传来的经纬度是各不相同的很难做缓存。字符串越长表示的范围越精确。如图所示5位的编码能表示10平方千米范围矩形区域而6位编码能表示更精细的区域约0.34平方千米字符串相似的表示距离相近特殊情况后文阐述这样可以利用字符串的前缀匹配来查询附近的POI信息。如下两个图所示一个在城区一个在郊区城区的GeoHash字符串之间比较相似郊区的字符串之间也比较相似而城区和郊区的GeoHash字符串相似程度要低些。通过上面的介绍我们知道了GeoHash就是一种将经纬度转换成字符串的方法并且使得在大部分情况下字符串前缀匹配越多的距离越近回到我们的案例根据所在位置查询来查询附近餐馆时只需要将所在位置经纬度转换成GeoHash字符串并与各个餐馆的GeoHash字符串进行前缀匹配匹配越多的距离越近。算法步骤以北海公园为例介绍GeoHash算法的计算步骤根据经纬度计算GeoHash二进制编码地球纬度区间是[-90,90] 北海公园的纬度是39.928167可以通过下面算法对纬度39.928167进行逼近编码:1)将区间[-90,90]转换为[-90,0],[0,90],可以确定39.928167属于右区间[0,90]给标记为12)接着将区间[0,90]进行二分为 [0,45),[45,90]可以确定39.928167属于左区间 [0,45)给标记为03递归上述过程39.928167总是属于某个区间[a,b]。随着每次迭代区间[a,b]总在缩小并越来越逼近39.9281674如果给定的纬度x39.928167属于左区间则记录0如果属于右区间则记录1这样随着算法的进行会产生一个序列1011100序列的长度跟给定的区间划分次数有关。根据纬度算编码同理地球经度区间是[-180,180]可以对经度116.389550进行编码。根据经度算编码组码通过上述计算纬度产生的编码为10111 00011经度产生的编码为11010 01011。偶数位放经度奇数位放纬度把2串编码组合生成新串11100 11101 00100 01111。最后使用用0-9、b-z去掉a, i, l, o这32个字母进行base32编码首先将11100 11101 00100 01111转成十进制对应着28、29、4、15十进制对应的编码就是wx4g。同理将编码转换成经纬度的解码算法与之相反具体不再赘述。GeoHash Base32编码长度与精度可以看出当geohash base32编码长度为8时精度在19米左右而当编码长度为9时精度在2米左右编码长度需要根据数据情况进行选择。具体应用如图所示我们将二进制编码的结果填写到空间中当将空间划分为四块时候编码的顺序分别是左下角00左上角01右下脚10右上角11也就是类似于Z的曲线当我们递归的将各个块分解成更小的子块时编码的顺序是自相似的分形每一个子快也形成Z曲线这种类型的曲线被称为Peano空间填充曲线。这种类型的空间填充曲线的优点是将二维空间转换成一维曲线事实上是分形维对大部分而言编码相似的距离也相近 但Peano空间填充曲线最大的缺点就是突变性有些编码相邻但距离却相差很远比如0111与1000编码是相邻的但距离相差很大。除Peano空间填充曲线外还有很多空间填充曲线如图所示其中效果公认较好是Hilbert空间填充曲线相较于Peano曲线而言Hilbert曲线没有较大的突变。为什么GeoHash不选择Hilbert空间填充曲线呢可能是Peano曲线思路以及计算上比较简单吧事实上Peano曲线就是一种四叉树线性编码方式。使用注意点1由于GeoHash是将区域划分为一个个规则矩形并对每个矩形进行编码这样在查询附近POI信息时会导致以下问题比如红色的点是我们的位置绿色的两个点分别是附近的两个餐馆但是在查询的时候会发现距离较远餐馆的GeoHash编码与我们一样因为在同一个GeoHash区域块上而较近餐馆的GeoHash编码与我们不一致。这个问题往往产生在边界处。解决的思路很简单我们查询时除了使用定位点的GeoHash编码进行匹配外还使用周围8个区域的GeoHash编码这样可以避免这个问题。2我们已经知道现有的 GeoHash 算法使用的是 Peano 空间填充曲线这种曲线会产生突变造成了编码虽然相似但距离可能相差很大的问题因此在查询附近餐馆时候首先筛选 GeoHash 编码相似的 POI 点然后进行实际距离计算。

相关新闻

Eureka-Server的搭建

Eureka-Server的搭建

1.pom.xml<?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 …

2026/7/28 18:12:05阅读更多 →
Path of Building PoE2:流放之路2角色构建规划的完整解决方案

Path of Building PoE2:流放之路2角色构建规划的完整解决方案

Path of Building PoE2&#xff1a;流放之路2角色构建规划的完整解决方案 【免费下载链接】PathOfBuilding-PoE2 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding-PoE2 还在为《流放之路2》复杂的天赋系统和装备搭配感到困惑吗&#xff1f;Path of B…

2026/7/28 18:12:05阅读更多 →
Palworld服务器存档迁移终极指南:解决角色丢失问题

Palworld服务器存档迁移终极指南:解决角色丢失问题

Palworld服务器存档迁移终极指南&#xff1a;解决角色丢失问题 【免费下载链接】palworld-host-save-fix Fixes the bug which forces a player to create a new character when they already have a save. Useful for migrating maps from co-op to dedicated servers and fro…

2026/7/28 18:12:05阅读更多 →
粉笔直播课适合在职公务员遴选突破吗

粉笔直播课适合在职公务员遴选突破吗

本文面向已在职、计划参加中央或省市机关公务员公开遴选&#xff08;以下简称"遴选"&#xff09;的考生&#xff0c;围绕"时间紧、案例题、策论文"三类典型瓶颈&#xff0c;评估粉笔直播课作为主流线上备考产品的适配性与突破作用。文中数据来源于公开财报…

2026/7/29 0:09:48阅读更多 →
AI学习计划制定私密手册(仅限前500名领取):含5类典型画像匹配表+实时进度衰减预警阈值表

AI学习计划制定私密手册(仅限前500名领取):含5类典型画像匹配表+实时进度衰减预警阈值表

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI学习计划制定私密手册导论 AI学习不是线性冲刺&#xff0c;而是一场需要战略锚点、动态校准与认知反刍的长期旅程。本手册不提供速成幻觉&#xff0c;只交付可落地的决策框架——它源于数百名工程师的…

2026/7/29 0:09:48阅读更多 →
MatAnyone视频抠像指南:3分钟实现专业级AI视频背景替换

MatAnyone视频抠像指南:3分钟实现专业级AI视频背景替换

MatAnyone视频抠像指南&#xff1a;3分钟实现专业级AI视频背景替换 【免费下载链接】MatAnyone [CVPR 2025] MatAnyone: Stable Video Matting with Consistent Memory Propagation 项目地址: https://gitcode.com/gh_mirrors/ma/MatAnyone 你是否曾经为视频剪辑中复杂的…

2026/7/29 0:09:48阅读更多 →
货拉拉开源两款三方库,为鸿蒙应用高效开发贡献力量

货拉拉开源两款三方库,为鸿蒙应用高效开发贡献力量

货拉拉开源两款三方库&#xff0c;为鸿蒙应用高效开发贡献力量 大家好&#xff0c;我是你们的老朋友——一个天天泡在代码里的技术博主。今天我们来聊聊一个让鸿蒙开发者们振奋的消息&#xff1a;货拉拉&#xff08;没错&#xff0c;就是那个拉货的货拉拉&#xff09;最近开源了…

2026/7/29 0:09:48阅读更多 →
夜莺监控新版表格配置图文讲解

夜莺监控新版表格配置图文讲解

夜莺监控新版表格配置图文讲解 大家好&#xff0c;我是你们的老朋友&#xff0c;一名专注于技术工具和运维效率的博主。今天&#xff0c;我们来聊聊夜莺监控&#xff08;Nightingale&#xff09;的最新版本中一个非常实用的功能——表格配置。如果你对监控系统有过接触&#xf…

2026/7/29 0:09:48阅读更多 →
行业主流数据库 AI 原生技术路线

行业主流数据库 AI 原生技术路线

当前产业公认分为四大主流技术流派&#xff0c;另外存在过渡型「外挂集成方案」&#xff08;不属于严格意义 AI 原生&#xff0c;大量企业现阶段采用&#xff09;。区分核心标尺&#xff1a;向量 / AI 能力是内核原生一体化&#xff0c;还是插件外挂、独立组件拼接。一、流派 1…

2026/7/29 0:07:47阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

&#x1f539; 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具&#xff0c;凭借本地离线运行、可视化图形操作和任务自动化三大核心特性&#xff0c;赢得了众多用户的青睐。与普通在线对话AI工具不同&#xff0c;它属于能够直接操控本机软硬件的智能数字员工…

2026/7/28 4:06:39阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接&#xff0c;是用激光束对阀座壳体&#xff08;通常为不锈钢或铝合金&#xff09;进行密封焊接&#xff0c;使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/28 2:08:06阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX&#xff1a;三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/28 1:38:28阅读更多 →
28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!

28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!

28. Agent 执行到一半想暂停&#xff1f;用 interrupt 给它设个“关卡“&#xff01; 在构建复杂的 Agent 系统时&#xff0c;我们经常会遇到这样的场景&#xff1a;Agent 正在执行一个多步骤的任务&#xff0c;比如“下单购买商品”&#xff0c;但执行到一半时&#xff0c;我们…

2026/7/29 0:01:46阅读更多 →
自律同行,突破无界!NANK南卡正式官宣曾舜晞成为品牌代言人

自律同行,突破无界!NANK南卡正式官宣曾舜晞成为品牌代言人

近日&#xff0c;国际专注开放式技术研发的声学品牌Nank南卡&#xff0c;正式官宣实力艺人曾舜晞担任品牌代言人。消息一经发出便轰动全网。为什么耳机品牌不选择流量明星、老牌歌手&#xff1f;而且是选择曾舜晞&#xff1f;让我们一起来探索一下&#xff01;比起短期的流量&a…

2026/7/29 0:01:46阅读更多 →
【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:01:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时&#xff0c;发现推理速度只有可怜的 1-2 FPS&#xff0c;而别人的演示视频却能跑到 30 FPS 以上&#xff0c;那么问题很可能不在模型本身&#xff0c;而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后&#xff0c;会直接使用官方示例…

2026/7/28 20:22:24阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一&#xff1a;为什么你需要了解 Coze 和 Dify&#xff1f;如果你对 AI 应用开发感兴趣&#xff0c;但一看到“大模型”、“智能体”、“工作流”这些词就头疼&#xff0c;觉得门槛太高&#xff0c;那这篇文章就是为你准备的。很多开发者&#xff0c;包括我自己&#…

2026/7/28 3:17:03阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会&#xff1a;配图一直是个让人头疼的问题。2026年&#xff0c;AI生图工具已经非常成熟了&#xff0c;但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1&#xff1a;速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →