什么是Geohash 转换器?
这个工具在经纬度坐标和 geohash 字符串之间互相转换。geohash 把一个位置编码成「9q8yy」这样的短字符串,每多一个字符范围就更精确——很适合做数据库索引、附近搜索和紧凑的位置分享。精度可在 1 到 12 个字符之间调整。
编码字母表刻意去掉了 a、i、l、o 四个字母,手抄或口述时不容易和 1、0 混淆。由于编码是分层的,相邻的两个点通常共享开头几位字符,所以普通字符串索引就能当作空间索引来用。除了当前网格,工具还会给出周围八个相邻网格,并支持导出 CSV、GeoJSON 或 KML。
使用方法
- 输入纬度和经度,比如 37.7749、-122.4194,或粘贴一段 geohash 来解码。
- 拖动精度滑块,控制字符数量,也就是边界框的大小。
- 复制 geohash,或查看解码后的中心点、边界框及其实际尺寸。
何时使用
- 把配送点位存成可排序的字符串,数据库没有地理索引也能用。
- 把 GPS 轨迹按网格归类,统计每个区域的到访次数。
- 在定下精度之前,先看看精度 6 的网格实际有多大。
结果
开发者为咖啡馆做附近搜索索引,把 37.7749、-122.4194 以精度 7 转成「9q8yyk8」——大约 150 米见方的网格——存成数据库的排序键。
常见问题
- 为什么马路两侧相隔几米的两个点,geohash 完全不同?
- 网格边界画在固定的经纬度线上,和现实中的街道没有关系。相距一米的两个点也可能落在相邻网格里。所以做附近搜索时,还要一并扫描工具列出的那八个相邻网格。
- 每一级精度对应的网格大概有多大?
- 精度 5 约为 4.9 公里见方,精度 6 约 1.2 公里乘 610 米,精度 7 约 153 米见方,精度 9 缩到约 4.8 米见方。你选定精度后,工具会直接给出准确的边界范围。
- 直接把 geohash 末尾的字符删掉,能得到更粗的网格吗?
- 可以。删掉最后一位就回到上一级的父网格,9q8yyk8 截断成 9q8yy 仍然包含原来那个点。反过来不行,没有原始坐标就补不回精度。
- 为什么 geohash 里从来看不到 a、i、l、o 这几个字母?
- 这套 base32 字母表故意排除它们,免得读出来或手抄时和数字 1、0 混淆。本工具遇到含这四个字母的字符串会直接报错,而不是解码出一个错误的位置。
- 能从 geohash 直接看出这个点属于哪个城市或国家吗?
- 不能。它只表示网格上的一个矩形。要拿到地名需要另做逆地理编码。geohash 的价值在于:位置相近的点,字符串排序后也挨得很近。