在Shiny/Leaflet/R中通过缩放级别更改标记聚类

Fay*_*dey 6 r leaflet shiny

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

麻烦的是,这些数据的数量可能达到数十至数十万,甚至可能达到数百万.鉴于这种可能性,我想采取轻松的措施.以下是我理想的聚合行为.

在低缩放级别,我想将这些点聚合成按状态计数(适当的符号体系大小/颜色表示更高的强度,点以状态质心为中心).在稍高的缩放级别,这些将通过较小的多边形分成计数.在更高的变焦,更小的多边形.如果没有聚合,地图上的点数将小于~500,那么只需绘制点.

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

由于点在各个多边形内随机绘制以开始,因此多边形内的点的实际分布无关紧要.或者更确切地说,任何忽略绘制点的多边形的聚合都将消除信息.出于这个原因,我不能使用markercluster(至少不能使用我看到的选项.如果有一种简单的方法可以按照我正在寻找的方式进行聚合,请告诉我)

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

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

http://s000.tinyupload.com/index.php?file_id=00048836337627834343

ghy*_*ybs 1

这不完全是一个答案,但它很难适合评论。

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

即使在 JavaScript 中,我也不知道针对此用例有任何开箱即用的解决方案。有一些可能的解决方法,但我不确定它们在 R 中是否可以轻松实现。

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

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

您可能还对此主题感兴趣[问题] 根据GitHub 上的 Leaflet.markercluster 问题页面中的某些地理实体 #521 构建集群。用例在某种程度上是相似的,您可以看到一些实现示例,但不幸的是它没有在任何通用且可靠的解决方案中输出。