什么是 Geohash?

Geohash 是一种地理编码系统,将地理坐标(纬度和经度)编码为由字母和数字组成的短字符串。它由 Gustavo Niemeyer 于 2008 年发明,提供了一种将世界划分为网格单元的分层空间数据结构。

快速了解

全称Geohash 地理编码系统
创建时间2008 年由 Gustavo Niemeyer 发明
规范文档官方规范

工作原理

Geohash 通过交错纬度和经度的二进制表示,然后使用 Base32 编码结果来工作。Geohash 中的每个字符代表一个逐渐变小的区域,较长的字符串提供更高的精度。相邻位置通常共享相似的前缀,使 geohash 对于邻近搜索和空间索引非常有用。该系统广泛用于数据库、缓存系统和基于位置的服务,以实现高效的地理查询。

主要特点

  • 将经纬度编码为字母数字字符串(Base32)
  • 分层结构 - 字符串越长精度越高
  • 相邻位置共享公共前缀
  • 每个字符增加约 5 位精度
  • 12 字符的 geohash 精度约为 3.7 厘米
  • 公开可用的算法,无许可限制

常见用途

  1. 空间数据库索引和查询
  2. 基于位置的缓存和搜索
  3. 邻近检测和附近搜索
  4. URL 友好的位置编码
  5. 具有位置分片的分布式系统

示例

loading...
Loading code...

常见问题

Geohash 精度与字符串长度有什么关系?

Geohash 中每增加一个字符,精度大约提高 5 位。1 字符的 geohash 覆盖约 5,000 公里,4 字符约 39 公里,6 字符约 1.2 公里,8 字符约 38 米,12 字符约 3.7 厘米。根据精度需求选择长度。

为什么相邻位置有时会有完全不同的 geohash?

这是「边界问题」。位于 geohash 单元边界两侧的位置可能尽管很接近却有非常不同的前缀。这发生在单元格边缘,进行邻近搜索时需要检查相邻单元格。

Geohash 编码使用哪些字符?

Geohash 使用由 32 个字符组成的 Base32 字母表:0-9 和 b-z(不包括「a」、「i」、「l」和「o」)。这些字母被排除以避免与数字 0 和 1 混淆。字符集为:0123456789bcdefghjkmnpqrstuvwxyz。

Geohash 如何用于数据库索引?

Geohash 通过将二维坐标转换为可用标准 B 树索引进行索引的一维字符串,实现高效的空间查询。邻近搜索使用前缀匹配——同一区域内的所有位置共享相同的 geohash 前缀。

Geohash 和 H3 有什么区别?

Geohash 使用矩形单元格,而 H3 使用六边形单元格。H3 提供更均匀的邻居距离和一致的区域覆盖。Geohash 更简单且广泛支持;H3 更适合需要均匀单元格属性的分析,如网约车优化。

相关工具

相关术语

相关文章

Geohash核心原理与应用【2026】- 地理空间索引指南

深入硬核学习 Geohash(地理哈希)的底层空间降维算法机制、高效率地理空间网格索引建立与 LBS(基于位置的服务)邻近区域搜索核心技术原理。全面掌握 Base32 编码解码算法实现及不同网格精度的控制策略,并教你如何在 Redis GEO 特性与 MongoDB 空间索引中实战应用 Geohash。附带 JavaScript、Python 和 Java 完整跨语言代码实现示例!

2024-01-16

Geohash详解【2026】- GPS编码原理与应用

深入学习Geohash(地理哈希)的底层空间算法原理,全面掌握将GPS经纬度精确坐标(Latitude/Longitude)编码降维为短字符串的核心底层技术。了解如何在地图应用中实现高性能的空间网格索引、基于LBS的邻近商家搜索、以及千万级位置数据的存储优化。本文附带多语言代码示例和免费在线转换工具。

2024-07-27

JSON在线对比指南:高效比较JSON文件的完整教程【2026】

全面系统地学习如何高效、准确地在线对比深层复杂嵌套的 JSON 数据文件。深入硬核掌握 JSON diff 差异比较的底层技术原理与算法(如 LCS、基于键匹配),学会使用业界最佳的在线 JSON 差异比较与可视化工具进行 Git 版本控制冲突解决和后端 REST API 联调调试。本高级指南详细解析了多种常见的差异对比应用场景、智能高亮冲突差异点,并为您提供实用的 Python 与 JavaScript 多语言代码实战示例以实现自动化的数据结构比对。

2026-02-07