基于地理位置算法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:07 阅读更多 →
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:07 阅读更多 →
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:07 阅读更多 →

最新新闻

Java面向对象设计模式

Java面向对象设计模式

设计模式&#xff08;Design Patterns&#xff09; ——可复用面向对象软件的基础 设计模式&#xff08;Design pattern&#xff09;是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠…

2026/7/28 18:18:09 阅读更多 →
零训练AI换脸神器:roop-unleashed专业级面部替换终极指南

零训练AI换脸神器:roop-unleashed专业级面部替换终极指南

零训练AI换脸神器&#xff1a;roop-unleashed专业级面部替换终极指南 【免费下载链接】roop-unleashed Evolved Fork of roop with Web Server and lots of additions 项目地址: https://gitcode.com/gh_mirrors/ro/roop-unleashed 想要在几分钟内实现专业级的面部替换效…

2026/7/28 18:18:09 阅读更多 →
django-QueryDict对象

django-QueryDict对象

视图中&#xff0c;用户发送的get与post请求数据&#xff0c;都被封装为QueryDict对象了 认识一下QueryDict对象 该对象类似于一个字典 QueryDict源码 class QueryDict(MultiValueDict):"""A specialized MultiValueDict which represents a query string.A Que…

2026/7/28 18:18:09 阅读更多 →
【AI副业掘金指南】:零基础新手7天启动变现闭环,亲测月入5000+的5个低门槛赛道

【AI副业掘金指南】:零基础新手7天启动变现闭环,亲测月入5000+的5个低门槛赛道

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;AI副业的本质认知与新手破局心法 AI副业不是“用AI工具接单”的简化劳动&#xff0c;而是以AI为杠杆&#xff0c;重构个人能力交付模式的认知升级过程。其本质在于将领域知识、问题拆解能力与模型调用工程化三…

2026/7/28 18:18:09 阅读更多 →
2026 中小企业 AI 搜索流量破局:基于轻量化 RAG 架构与语义向量对齐的 GEO 平台工程实战

2026 中小企业 AI 搜索流量破局:基于轻量化 RAG 架构与语义向量对齐的 GEO 平台工程实战

摘要在生成式 AI&#xff08;Perplexity、ChatGPT Search、豆包、Kimi 等&#xff09;全面接管信息检索入口的 2026 年&#xff0c;传统依赖关键词堆砌与外部链接的搜索引擎优化&#xff08;SEO&#xff09;正快速向生成式引擎优化&#xff08;Generative Engine Optimization,…

2026/7/28 18:18:09 阅读更多 →
计算机毕业设计之《计算机网络》在线学习平台设计与实现

计算机毕业设计之《计算机网络》在线学习平台设计与实现

随着新世纪无纸化办公方式的普及&#xff0c;自动化信息处理和基于网络的信息交互方式已被广泛应用。现在很多行业基本上都是交由计算机进行管理和测试&#xff0c;网络与计算机已成为整个线上管理体系中的重要组成部分。虽然信息技术广泛应用和数据存取更加方便&#xff0c;但…

2026/7/28 18:17:09 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿&#xff01;3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑&#xff1a;把几百页的财报、法规、技术手册扔给向量库&#xff0c;问一个具体问题&#xff0c;搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了&#xff0c;要么藏在几十条结果的最下面。语义相似≠真正相关&#xff0c;这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营&#xff0c;从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候&#xff0c;每天刷半小时抖音&#xff0c;手动把爆款视频的口播敲进备忘录&#xff0c;一条2分钟的视频得花十来分钟&#xff0c;碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档&#xff0c;可以直接使用&#xff01;系统支持图片、视频、摄像头等多种方式检测裂缝&#xff0c;功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像&#xff01; pubg绝地求生目标检测数据集 1分类&#xff1a;e_body&#xff0c;14905个标签&#xff0c;txt格式 共计14244张图&#xff0c;99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别&#xff1a; allies enemy tag图片总量&#xff1a;7247张训练集&#xff1a;5139张验证集&#xff1a;1425张测试集&#xff1a;683张标注状态&#xff1a;全部已标注&#xff0c;即拿即用数据格式&#xff1a;支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻