geohash java

作者:原创时间:2022-03-22
文档

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

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

显示全文
geojson java glue java golang调用java grep java groupby java guava java hbase java hibernate java hotspot java idea创建java idea创建普通java项目 idea怎么建立java idea编写java程序 influxdb java instance java instant java integer java interface java iterator java 铁观音产地是哪个地方 gdb java gdal java gateway java for循环java foreach java field java 爱奇艺黄金会员和星钻会员的区别 false是java关键字吗 extends java extend java excel读取java enum java 小程序和app的区别 awesome java arrays java eclipse创建java dozer java double java 微信怎么群发消息给多人 django java