在 Shiny / Leaflet / R 中按缩放级别更改标记聚类
Changing marker clustering by zoom level in Shiny / Leaflet / R
我想创建一个 Web 应用程序,用户在其中输入一组标识符,并在地图上显示与这些标识符相关的一组点。
麻烦的是,这些数据可能会达到数万到数十万,甚至可能达到数百万。鉴于这种可能性,我想采取轻度策略。下面是我理想的聚合行为。
在低缩放级别,我想将这些点聚合到按状态计数(适当的符号系统 size/color 表示更高的强度,点以状态质心为中心)。在稍高的缩放级别下,这些将通过较小的多边形分成计数。在更高的缩放,但更小的多边形。如果未聚合,地图上的点数将少于 ~500,则只需绘制点。
这些多边形已经确定,每个点在其数据中都有其所属的每个多边形的多边形 ID。
由于点是随机绘制在各个多边形内的,因此点在多边形内的实际分布并不重要。或者更确切地说,任何忽略绘制点的多边形的聚合都会消除信息。出于这个原因,我不能使用 markercluster(至少不能使用我看到的选项。如果有一种简单的方法可以按照我正在寻找的方式进行聚合,请告诉我)
出于各种原因(我不是 javascript 程序员,我是 R 程序员)我在 R 中的 leaflet 包的范围内工作。有什么方法可以改变聚合级别取决于以这种方式缩放?
我整理了一个玩具数据集,其中包含一个相对较小的子集(1 个实体,3 个州,约 10k 个观测值)以及这些州的人口普查区和县的质心。
http://s000.tinyupload.com/index.php?file_id=00048836337627834343
这不完全是一个答案,但很难放在评论中。
您想显示每个预定义地理区域的聚合数据(点数/标记数?),这些区域在较低的缩放级别合并(假设它可能是每个城市,然后是县、州等) .
即使在 JavaScript 中,我也不知道该用例有任何开箱即用的解决方案。有一些可能的解决方法,但我不确定它们在 R 中是否容易实现。
通常的解决方法是摆脱任何自动聚类,并在每个缩放级别生成您自己的标记,使用适当的数据聚合算法(不是很难做到,因为您可以依赖父多边形 ID)。然后在缩放更改时简单地 add/remove 标记。
不幸的是,这意味着您将无法从 MarkerCluster 获得动画和覆盖显示。
您可能也对 GitHub 上 Leaflet.markercluster 问题页面中的这个话题 [Question] Build clusters depending on some geographical entity #521 感兴趣。用例有点相似,你可以看到一些实现的例子,但不幸的是它没有输出任何通用和可靠的解决方案。
我想创建一个 Web 应用程序,用户在其中输入一组标识符,并在地图上显示与这些标识符相关的一组点。
麻烦的是,这些数据可能会达到数万到数十万,甚至可能达到数百万。鉴于这种可能性,我想采取轻度策略。下面是我理想的聚合行为。
在低缩放级别,我想将这些点聚合到按状态计数(适当的符号系统 size/color 表示更高的强度,点以状态质心为中心)。在稍高的缩放级别下,这些将通过较小的多边形分成计数。在更高的缩放,但更小的多边形。如果未聚合,地图上的点数将少于 ~500,则只需绘制点。
这些多边形已经确定,每个点在其数据中都有其所属的每个多边形的多边形 ID。
由于点是随机绘制在各个多边形内的,因此点在多边形内的实际分布并不重要。或者更确切地说,任何忽略绘制点的多边形的聚合都会消除信息。出于这个原因,我不能使用 markercluster(至少不能使用我看到的选项。如果有一种简单的方法可以按照我正在寻找的方式进行聚合,请告诉我)
出于各种原因(我不是 javascript 程序员,我是 R 程序员)我在 R 中的 leaflet 包的范围内工作。有什么方法可以改变聚合级别取决于以这种方式缩放?
我整理了一个玩具数据集,其中包含一个相对较小的子集(1 个实体,3 个州,约 10k 个观测值)以及这些州的人口普查区和县的质心。
http://s000.tinyupload.com/index.php?file_id=00048836337627834343
这不完全是一个答案,但很难放在评论中。
您想显示每个预定义地理区域的聚合数据(点数/标记数?),这些区域在较低的缩放级别合并(假设它可能是每个城市,然后是县、州等) .
即使在 JavaScript 中,我也不知道该用例有任何开箱即用的解决方案。有一些可能的解决方法,但我不确定它们在 R 中是否容易实现。
通常的解决方法是摆脱任何自动聚类,并在每个缩放级别生成您自己的标记,使用适当的数据聚合算法(不是很难做到,因为您可以依赖父多边形 ID)。然后在缩放更改时简单地 add/remove 标记。
不幸的是,这意味着您将无法从 MarkerCluster 获得动画和覆盖显示。
您可能也对 GitHub 上 Leaflet.markercluster 问题页面中的这个话题 [Question] Build clusters depending on some geographical entity #521 感兴趣。用例有点相似,你可以看到一些实现的例子,但不幸的是它没有输出任何通用和可靠的解决方案。