Google的S2算法原理以及使用Java版本

您所在的位置:网站首页 cellid转换 Google的S2算法原理以及使用Java版本

Google的S2算法原理以及使用Java版本

2023-05-17 21:09| 来源: 网络整理| 查看: 265

Google

S2

算法原理以及使⽤

Java

版本

--

部分参考⾃《⾼效的多维空间点索引算法》

⽂章⽬录

相关资料

1. 

2. 

3. 

4. 

5. 

6. 

7. 

8. 

S2jar:使⽤Maven⼯具

1.S2

算法是什么?

 

S2其实是来⾃⼏何数学中的⼀个数学符号 S

²

,它表⽰的是单位球。S2 这个库其实是被设计⽤来解决球⾯上各种⼏何问题的。

2.

为什么要使⽤

S2

算法?

S2 来解决多维空间点的问题的

1. 

s2有30级,geohash只有12级。s2的层级变化较平缓,⽅便选择。

2. 

s2功能强⼤,解决了向量计算,⾯积计算,多边形覆盖,距离计算等问题,减少了开发⼯作量。

3. 

s2解决了多边形覆盖问题。

 

这是其与geohash功能上最本质的不同。给定不规则范围,s2可以计算出⼀个多边形近似覆盖这个范围。其覆盖⽤的格⼦数量根据精确度可控。geohash在这⽅⾯⼗分不

友好,划定⼀个⼤⼀点的区域,其格⼦数可能达到数千,若减少格⼦数则丢失精度,查询区域过⼤。

如下,在min level和max level不变的情况下,只需设置可接受的max cells数值,即可控制覆盖精度。⽽且其cell的region⼤⼩⾃动适配。geohash要在如此⼤范围实现

⾼精度覆盖则会产⽣极为庞⼤的⽹格数。

另外需要注意的是,在minLevel,maxLevel,maxCells这3个参数中,不⼀定能完全满⾜.⼀般⽽⾔是优先满⾜maxLevel即最精细的⽹格⼤⼩,再尽可能控制cell数量在

maxCells⾥⾯.⽽minLevel由于会合并⽹格,所以很难满⾜(在查询⼤区域的时候可能会出现⼀个⼤⽹格和很多个⼩⽹格,导致⽊桶效应.这个时候可能将⼤⽹格划分为指定等

级的⼩⽹格,即最终效果为,严格遵循minLevel和maxLevel,为此牺牲maxCells)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3