首页 > 解决方案 > 如何在 Yelp 或 Uber 服务中使用 S2?

问题描述

假设我有一个餐馆列表,并且我有一个正在寻找附近餐馆的客户的位置。我怎么能使用 S2?

根据我在没有 S2 的情况下的理解,我将维护自己的包含所有餐厅的四叉树,然后我将获取客户的纬度和经度并查询我的四叉树以找到节点和相邻四叉树节点。

S2 如何融入这张照片?它会取代我维护自己的四叉树的需要吗?

我对 S2 的理解是,引擎盖下有四叉树和 Hilber 空间填充曲线,给定纬度和经度可以提供 64 位单元 ID,用于标识纬度和经度所属的四叉树中的节点。

标签: geometrygeospatialquadtrees2

解决方案


您通常在 S2 中执行此操作的方式是通过现有的 S2 API 类,例如在这里我将使用S2ClosestPointQuery.

在内部,查询类构建了一个内部索引(在这种情况下 - 使用餐厅的 S2 单元格),当您想要查找客户附近的所有点时,它会计算 S2 的希尔伯特曲线上与给定距离内的单元格范围搜索位置(在本例中为客户位置),并在索引中查找这些单元格。


推荐阅读