谷歌的 S2、球面上的几何、细胞和希尔伯特曲线 | 未知之地

主要观点:

  • 2017 年 12 月 5 日谷歌宣布致力于开发新的 S2 库版本,其库很有价值但未得到应有关注。
  • S2 库通过将球体点投影到立方体并进行变换、离散化,利用希尔伯特曲线枚举细胞来实现快速索引和查询操作。
  • 细胞以 64 位整数表示,不同级别细胞覆盖不同区域范围,可用于覆盖区域生成等操作。
  • 可利用 S2 库的 Python 绑定将经纬度点转换为细胞表示,进行包含关系检查等操作,还可用于数据库存储和覆盖区域绘制。

关键信息:

  • S2 库由谷歌开发,被谷歌地图、MongoDB 引擎和 Foursquare 等使用,文档稀少。
  • 希尔伯特曲线是空间填充曲线,能将多维转换为一维并保留局部性。
  • S2 库有 30 级层次分解,细胞可紧凑表示区域或点,包含操作快速。
  • 可通过设置参数利用 S2RegionCoverer 类生成覆盖区域的细胞。

重要细节:

  • 细胞表示中前 3 位存储球体点投影的立方体面,后续是希尔伯特曲线位置和标识细胞级别的“1”位。
  • 示例中展示了将经纬度点转换为细胞表示、获取父细胞、进行包含关系检查,以及利用 S2RegionCoverer 类覆盖区域并绘制的过程。
阅读 19
0 条评论