geohash java

<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次二分切割。

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