首页 > 解决方案 > 如何在不同缩放级别使用 S2 几何库聚合用户的实时地理位置?

问题描述

我正在研究每个用户(约 10,000 个并发用户)都在流式传输他们的地理位置的想法。我想聚合用户并在地图上使用一个指针以不同的缩放级别显示,如果用户放大或缩小,那么该指针也会使用S2 Cells根据地图的特定缩放级别分布和聚合用户。

一开始任何用户都会像谷歌地球一样看到地球,如果用户在某个位置放大或缩小,那么我们需要根据用户的缩放级别(当前)聚合用户。

一开始,我计划使用像Kafka这样的流式处理工具和像flink这样的流式处理工具,我将从前端流式传输用户数据,例如纬度、经度和边界经度和纬度,从当前缩放级别和在后端,我只需检查流数据如果用户lat,long落在边界 lat,long则只需返回该用户及其 lat,long 并在地图上精确定位,但这不是我想做的,我想聚合所有用户在特定区域仅显示一个指针之后,如果我放大该指针内部,它将分发指针并显示其他一些指针。如果我只是放大地图的最大级别,那么用户会显示个人。

我想处理< 30 秒的旧数据聚合。

在前端,我使用 Mapbox 在地图上显示用户。我想知道,如何使用 S2 Library Cells 来聚合数据,我也在寻找如何平衡 Mapbox Zoom Levels 和 S2 Zoom Levels。

在此处输入图像描述

类似的输出点

标签: apache-kafkaapache-flinkgeospatialaggregations2

解决方案


除了摄取之外,这与 Kafka 或 Streaming 无关。各种 Javascript 框架(从 D3 开始)已经提供了这样的功能,您可以使用显示坐标框周围的查询过滤器从数据库/API 中查询数据,而不是直接从流中查询


推荐阅读