按“光泽/传单/R”中的缩放级别更改标记聚类

按“光泽/传单/R”中的缩放级别更改标记聚类,r,shiny,leaflet,R,Shiny,Leaflet,我想创建一个web应用程序,其中用户输入一组标识符,并在地图上显示一组与这些标识符相关的点 问题是,这些数据可能有几万到几十万,甚至可能有数百万。考虑到这种可能性,我想采取一种简单的策略。下面是我理想的聚合行为 在低缩放级别,我希望按状态将这些点聚合为计数(适当的符号大小/颜色表示较高的强度,点位于状态质心的中心)。在略高的缩放级别上,这些将通过较小的多边形分离为计数。在更高的缩放,但更小的多边形。如果未加总,则地图上的点数将小于~500,则只需绘制点 这些多边形已经确定,每个点的数据中都包含它

我想创建一个web应用程序,其中用户输入一组标识符,并在地图上显示一组与这些标识符相关的点

问题是,这些数据可能有几万到几十万,甚至可能有数百万。考虑到这种可能性,我想采取一种简单的策略。下面是我理想的聚合行为

在低缩放级别,我希望按状态将这些点聚合为计数(适当的符号大小/颜色表示较高的强度,点位于状态质心的中心)。在略高的缩放级别上,这些将通过较小的多边形分离为计数。在更高的缩放,但更小的多边形。如果未加总,则地图上的点数将小于~500,则只需绘制点

这些多边形已经确定,每个点的数据中都包含它所处的每个多边形的多边形ID

由于点是在各自的多边形内随机绘制的,因此多边形内点的实际分布并不重要。或者更确切地说,忽略点绘制在哪个多边形中的任何聚合都将删除信息。由于这个原因,我不能使用markercluster(至少不能与我看到的选项一起使用。如果有一种简单的方法可以以我正在寻找的方式进行聚合,请让我知道)

出于各种原因(我不是javascript程序员,我是R程序员),我在R中的传单包范围内工作。是否有一种方法可以通过这种方式根据缩放更改聚合级别

我收集了一个玩具数据集,其中包含一个相对较小的子集(1个实体,3个州,~10k个观测值),以及这些州的普查区域和县的质心


这不是一个确切的答案,但很难用评论来回答

您希望显示每个预定义地理区域的聚合数据(点/标记数?),这些区域以较低的缩放级别合并(假设可以是每个城市,然后是县、州等)

即使在JavaScript中,我也不知道这个用例有任何现成的解决方案。有一些可能的解决方法,但我不确定它们在R中是否容易实现

一个常见的解决方法是消除任何自动聚类,并使用适当的数据聚合算法在每个缩放级别生成您自己的标记(这不是很难做到,因为您可以依赖父多边形ID)。然后,只要在缩放更改时添加/删除标记即可

不幸的是,这意味着您将无法从MarkerCluster获得动画和覆盖显示


您可能还对GitHub上的传单.markercluster问题页面中的此线程感兴趣。用例在某种程度上是相似的,您可以看到一些实现示例,但不幸的是,它没有在任何通用和可靠的解决方案中输出。

如果用户
cluster=clusterOptions(),则已经有了按缩放进行集群的选项。
。你想做更多吗?是的。。。如第5段所述,我不能使用现有的“按缩放聚类”,因为它会删除/忽略多边形边界。一个特定的点落入哪个多边形才是真正重要的。。。删除这些边界,或者将碰巧落在彼此附近的点组合在一起是不受欢迎的行为。你能给我们一个有几个点的玩具数据集,这样我们就可以玩了吗?我已经把一个放在一起了~加州、内华达州和亚利桑那州的10k观测。感谢您的投入。我确实喜欢他们链接的结果,但我不确定如何在R中实现这一点。我同意这是一个困难的想法。我有一个想法,在添加到地图之前,我会在不同的聚合级别上进行聚合,然后只向地图添加(取决于缩放级别)在该时间点地图上的点。(好吧,理想情况下,那些在地图上的+一点周围区域,然后只有当地图的边界移到周围区域之外时才重新绘制。)尽管如此,我仍在努力解决这个问题。遇到一些奇怪的错误。