geometry - 如何在 Yelp 或 Uber 服务中使用 S2?
问题描述
假设我有一个餐馆列表,并且我有一个正在寻找附近餐馆的客户的位置。我怎么能使用 S2?
根据我在没有 S2 的情况下的理解,我将维护自己的包含所有餐厅的四叉树,然后我将获取客户的纬度和经度并查询我的四叉树以找到节点和相邻四叉树节点。
S2 如何融入这张照片?它会取代我维护自己的四叉树的需要吗?
我对 S2 的理解是,引擎盖下有四叉树和 Hilber 空间填充曲线,给定纬度和经度可以提供 64 位单元 ID,用于标识纬度和经度所属的四叉树中的节点。
解决方案
您通常在 S2 中执行此操作的方式是通过现有的 S2 API 类,例如在这里我将使用S2ClosestPointQuery
.
在内部,查询类构建了一个内部索引(在这种情况下 - 使用餐厅的 S2 单元格),当您想要查找客户附近的所有点时,它会计算 S2 的希尔伯特曲线上与给定距离内的单元格范围搜索位置(在本例中为客户位置),并在索引中查找这些单元格。
推荐阅读
- qt - QT QML 没有动态调整大小
- r - 如何在 R 的另一个数据框中获取我正在寻找的值的行和列
- cassandra - 三节点 Cassandra 集群所有节点在同一个 dc 中配置不同的机架
- angular - Angular Firestore 使用两个相等的 where 条件查询集合
- amazon-web-services - 为什么不能在域名上配置 AWS 安全组
- mongodb - Mongoose - 查询 Mongo 对象数组,匹配搜索数组中的任何对象
- c - 从不同的功能插入 GLib 树
- html - esp32 网站 ASCII 到字符转换
- python - 初学者:Python 声音模块不起作用(循环导入)
- java - 在 java 中使用 ArrayList 的 indexOf()