地理空間索引:GeoHash原理


保持好奇心,想出問題,自己尋找答案!

1.基於空間位置的服務

網約車、附近的餐飲

經緯度坐標 —— 計算距離

先按照經緯度坐標范圍粗略篩選掉距離過遠的車輛,然后再計算進行精確篩選。

大量的時間開銷 遍歷的解法 時間復雜度高

哈希散列

經度、緯度分開處理,形成網格,並且具有層次,由高到低,代表空間范圍由大到小。

采用B樹等高效算法實現

GeoHash的思路

2.GeoHash基本原理

地理編碼算法

將地理經緯度坐標編碼為由字母和數字所構成的短字符串。

矩形網格

采用二分法不斷縮小經度和緯度的區間來進行二進制編碼,最后將經緯度分別產生的編碼奇偶位交叉合並,再用字母數字表示。

遞歸二分過程,直到所需的精度,經度得到一串二進制編碼11010 01010 11001。

緯度同理。

生成新的二進制數,它的偶數位放經度,奇數位放緯度,得到11100 11101 00100 01101 11110 00110。

使用32個數字和字母(字母去掉a、i、l、o這4個)進行32進制編碼。

每5位轉化為十進制,對應編碼。

填充曲線

Z形曲線

3.代碼實現

python-geohash

移位操作代替二分區間

4.總結

GeoHash的主要價值在於將二維的經緯度坐標信息編碼到一維的字符串中。

地理位置索引 匹配字符串

便於緩存、信息壓縮

在使用大數據工具(例如Spark)進行數據挖掘聚類時,GeoHash更加快捷高效。

Z形曲線,突變。

適當增加Geohash編碼長度,並使用周圍8個近鄰編碼參與。

參考鏈接:地理空間索引:GeoHash原理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM