首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用H3使最近的车辆到达地理位置

使用H3使最近的车辆到达地理位置
EN

Stack Overflow用户
提问于 2021-12-06 20:25:58
回答 1查看 250关注 0票数 0

我正在开发一个系统,其中我有一个包含100000个地理位置和10000个正在移动的汽车地理位置的列表,每隔X秒,车辆的位置更新就会发生,也就是说,我可以接收到N个车辆位置更新。

我的问题是,每隔X秒,系统就需要搜索接近L位置的所有车辆,目前,该系统通过地理位置列表查找所有在特定半径范围内的车辆,并在此过程中应用一些搜索过滤器。

但是,我注意到,计算直线距离的距离计算系统在这个过滤过程中消耗的时间最多,由于系统中有几种方法执行这些搜索,包括L点和N个车辆之间的距离,在半径范围内,这个过程变得越来越慢,因为对于每一个L点,我需要遍历整个车辆列表。

因此,我开始寻找系统来索引地理位置,并且我也可以搜索这些索引,例如,使用规则,使所有车辆从地理位置X的半径在N公里以内。

H3对我来说似乎很有趣,但是,我在他们的文档中找不到它,我如何做到这一点,或者,如何在地图上添加N个车辆的过程。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-06 23:44:15

您可以在这里看到关于如何使用H3进行radius搜索的教程:https://observablehq.com/@nrabinowitz/h3-radius-lookup

基本步骤如下:

  • 用H3索引所有数据。根据系统的不同,您可以将结果保存在内存中作为散列表,或者保存在K/V存储中,其中H3索引是键,值是该单元格中的车辆列表。
  • 若要进行搜索,请从感兴趣的L点计算k环。K环的大小取决于用于索引的H3分辨率和要搜索的半径。
  • 在索引中查找k环中的每个单元格,并将结果附加到某个输出数组中。如果你关心的是精确的距离,而不是近似的距离,你可以使k环比需要的更大,并在此时用真正的距离进行过滤。

这应该是更有效的-你以前的方法与车辆的数量,这与k环的大小,这是恒定的。

你仍然需要在车辆移动时将它们编入索引。粗略地说,每次你为一辆车找到一个新的位置,你需要检查它是否在一个新的单元格中,如果是的话,重新索引它。这意味着您需要将当前单元格存储在每个车辆上,或者存储在每个车辆记录上,或者存储在一个单独的索引中,以及每个单元中的车辆索引。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70251511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档