geohash java是什么,让我们一起了解一下?
GeoHash是目前比较主流实现位置服务的技术,Geohash算法将经纬度二维数据编码为一个字符串,GeoHash算法分为三步:1. 计算经纬度的二进制、2. 合并经纬度的二进制、3. 通过Base32对合并后的二进制进行编码。
我们知道,经度范围是东经180到西经180,纬度范围是南纬90到北纬90,我们设定西经为负,南纬为负,所以地球上的经度范围就是[-180, 180],纬度范围就是[-90,90]。如果以本初子午线、赤道为界,地球可以分成4个部分。
GeoHash的思想就是将地球划分的四部分映射到二维坐标上。
那么如何理清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次二分切割。
以上就是小编今天的分享了,希望可以帮助到大家。