我正在开发一个系统,其中我有一个包含100000个地理位置和10000个正在移动的汽车地理位置的列表,每隔X秒,车辆的位置更新就会发生,也就是说,我可以接收到N个车辆位置更新。
我的问题是,每隔X秒,系统就需要搜索接近L位置的所有车辆,目前,该系统通过地理位置列表查找所有在特定半径范围内的车辆,并在此过程中应用一些搜索过滤器。
但是,我注意到,计算直线距离的距离计算系统在这个过滤过程中消耗的时间最多,由于系统中有几种方法执行这些搜索,包括L点和N个车辆之间的距离,在半径范围内,这个过程变得越来越慢,因为对于每一个L点,我需要遍历整个车辆列表。
因此,我开始寻找系统来索引地理位置,并且我也可以搜索这些索引,例如,使用规则,使所有车辆从地理位置X的半径在N公里以内。
H3对我来说似乎很有趣,但是,我在他们的文档中找不到它,我如何做到这一点,或者,如何在地图上添加N个车辆的过程。
发布于 2021-12-06 23:44:15
您可以在这里看到关于如何使用H3进行radius搜索的教程:https://observablehq.com/@nrabinowitz/h3-radius-lookup
基本步骤如下:
L点计算k环。K环的大小取决于用于索引的H3分辨率和要搜索的半径。这应该是更有效的-你以前的方法与车辆的数量,这与k环的大小,这是恒定的。
你仍然需要在车辆移动时将它们编入索引。粗略地说,每次你为一辆车找到一个新的位置,你需要检查它是否在一个新的单元格中,如果是的话,重新索引它。这意味着您需要将当前单元格存储在每个车辆上,或者存储在每个车辆记录上,或者存储在一个单独的索引中,以及每个单元中的车辆索引。
https://stackoverflow.com/questions/70251511
复制相似问题