什麼是Geohash 轉換器?

這個工具可在經緯度座標與 geohash 字串之間互相轉換。geohash 把位置編碼成像「9q8yy」這樣的短字串,每多一個字元範圍就更精確——很適合做資料庫索引、鄰近搜尋與精簡的位置分享。精度可在 1 到 12 個字元之間調整。

編碼字母表刻意拿掉 a、i、l、o 四個字母,手抄或唸出來時不容易和 1、0 混淆。由於編碼是分層的,相鄰的兩個點通常會共用開頭幾個字元,所以一般字串索引就能當空間索引使用。除了目前的網格,工具還會列出周圍八個相鄰網格,並支援匯出 CSV、GeoJSON 或 KML。

使用方法

  1. 輸入緯度和經度,例如 37.7749、-122.4194,或貼上一段 geohash 來解碼。
  2. 拖動精度滑桿,控制字元數量,也就是邊界框的大小。
  3. 複製 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 的價值在於:位置相近的點,字串排序後也會排在一起。

相關工具