什么是 Geohash?
Geohash 是一种地理编码系统,将地理坐标(纬度和经度)编码为由字母和数字组成的短字符串。它由 Gustavo Niemeyer 于 2008 年发明,提供了一种将世界划分为网格单元的分层空间数据结构。
快速了解
| 全称 | Geohash 地理编码系统 |
|---|---|
| 创建时间 | 2008 年由 Gustavo Niemeyer 发明 |
| 规范文档 | 官方规范 |
Geohash 工作原理
Geohash 通过交错纬度和经度的二进制表示,然后使用 Base32 编码结果来工作。Geohash 中的每个字符代表一个逐渐变小的区域,较长的字符串提供更高的精度。相邻位置通常共享相似的前缀,使 geohash 对于邻近搜索和空间索引非常有用。该系统广泛用于数据库、缓存系统和基于位置的服务,以实现高效的地理查询。
主要特点
- 将经纬度编码为字母数字字符串(Base32)
- 分层结构 - 字符串越长精度越高
- 相邻位置共享公共前缀
- 每个字符增加约 5 位精度
- 12 字符的 geohash 精度约为 3.7 厘米
- 公开可用的算法,无许可限制
常见用途
- 空间数据库索引和查询
- 基于位置的缓存和搜索
- 邻近检测和附近搜索
- URL 友好的位置编码
- 具有位置分片的分布式系统
示例
Geohash 示例:
位置:北京天安门 (39.9087, 116.3975)
Geohash: wx4g0 (5 字符,约 4.9km 精度)
按长度划分的精度:
1 字符 = 约 5,000 公里
2 字符 = 约 1,250 公里
3 字符 = 约 156 公里
4 字符 = 约 39 公里
5 字符 = 约 4.9 公里
6 字符 = 约 1.2 公里
7 字符 = 约 153 米
8 字符 = 约 38 米
9 字符 = 约 4.8 米
相邻单元共享前缀:
wx4g0 和 wx4g1 是邻居