geohash java是什么,讓我們一起了解一下?
GeoHash是目前比較主流實現(xiàn)位置服務的技術,Geohash算法將經(jīng)緯度二維數(shù)據(jù)編碼為一個字符串,GeoHash算法分為三步:1. 計算經(jīng)緯度的二進制、2. 合并經(jīng)緯度的二進制、3. 通過Base32對合并后的二進制進行編碼。?
我們知道,經(jīng)度范圍是東經(jīng)180到西經(jīng)180,緯度范圍是南緯90到北緯90,我們設定西經(jīng)為負,南緯為負,所以地球上的經(jīng)度范圍就是[-180, 180],緯度范圍就是[-90,90]。如果以本初子午線、赤道為界,地球可以分成4個部分。
GeoHash的思想就是將地球劃分的四部分映射到二維坐標上。
那么如何理清geohash的算法原理,我們以計算經(jīng)緯度的二進制為例。
//根據(jù)經(jīng)緯度和范圍,獲取對應的二進制 private?BitSet?getBits(double?l,?double?floor,?double?ceiling)?{ BitSet?buffer?=?new?BitSet(numbits); for?(int?i?=?0;?i?=?mid)?{ buffer.set(i); floor?=?mid; }?else?{ ceiling?=?mid; } } return?buffer; }
上述代碼numbits為:private static int numbits = 3 * 5; //經(jīng)緯度單獨編碼長度也就是說將地球進行15次二分切割。
以上就是小編今天的分享了,希望可以幫助到大家。