像0101000020E610000098E9F4A131405C40BBA1265A25B53740
這種編碼過後的經緯度,是怎麼計算的。試著過去看postgis和mongodb的源碼,無奈沒找到(不懂啊…)
漂亮男人2017-04-24 16:02:26
PostGIS的不太了解,不過原理應該是一樣的。
在 MongoDB 裡,我們先討論 2d index,中文文件都有翻譯的!
http://docs.mongoing.com/manual-zh/core/geospatial-indexes.html
MongoDB裡,2d index 可以用來索引一個點。我們把一個正方形都分成4份,編號00,01,10,11,然後再對包含目標點的小的正方形同樣劃分,32次之後,得到一個編號的序列,拼起來就是了。 Geohash 有一些很好的性質,例如如果按照以上方面所劃分得到的大正方形如果包含小正方形的話,則前者的Geohash是後者的前綴。 Wikipedia 上有詳細介紹。
對 2dsphere index,MongoDB 使用 S2 library 來做 Geohash, 參見 Google Doc 上的 slides.
另外,為什麼想了解 Geohash 呢?遇到什麼問題必須理解它麼?