開心生活站

位置:首頁 > IT科技 > 

geohash,java

IT科技2.71W

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

geohash java是什麼,讓我們一起了解一下?

GeoHash是目前比較主流實現位置服務的技術,Geohash算法將經緯度二維數據編碼爲一個字符串,GeoHash算法分爲三步:1. 計算經緯度的二進制、2. 合併經緯度的二進制、3. 通過Base32對合並後的二進制進行編碼。 

我們知道,經度範圍是東經180到西經180,緯度範圍是南緯90到北緯90,我們設定西經爲負,南緯爲負,所以地球上的經度範圍就是[-180, 180],緯度範圍就是[-90,90]。如果以本初子午線、赤道爲界,地球可以分成4個部分。

GeoHash的思想就是將地球劃分的四部分映射到二維座標上。

geohash java

那麼如何理清geohash的算法原理,我們以計算經緯度的二進制爲例。

//根據經緯度和範圍,獲取對應的二進制private BitSet getBits(double l, double floor, double ceiling) {BitSet buffer = new BitSet(numbits);for (int i = 0; i < numbits; i++) {double mid = (floor + ceiling) / 2;if (l >= mid) {buffer.set(i);floor = mid;} else {ceiling = mid;}}return buffer;}

上述代碼numbits爲:private static int numbits = 3 * 5; //經緯度單獨編碼長度也就是說將地球進行15次二分切割。

以上就是小編今天的分享了,希望可以幫助到大家。

標籤:java geohash