SQL 用于识别和散布地图上的重叠点

SQL for identifying and spreading overlapping points on map

我正在制作一张标有所有诺贝尔奖获得者出生地的地图。由于我只有城市级别的出生地,所以有很多重叠点,我正在努力寻找一种传播方式。

http://s3.mapfact.com/society/all-nobel-prize-laureates/nobel.html

我的数据在 Carto 中。我想做一些 SQL 来: 1. 识别the_geom列中具有相同lat/lng的行 2. 在每场比赛中 - 为值添加几个点,使标记不会 100% 重叠。

我找到了这个,我喜欢这个结果,但它对我来说太先进了 http://bl.ocks.org/andrewxhill/raw/8695515/#

有什么更简单的方法吗?例如涉及 Carto 数据库界面中的几个步骤的东西?

虽然这可能不是您问题的正确答案,但它可能是您问题的解决方案。对于我遇到的类似情况,我使用了 leaflet markercluster plugin。如果您在同一个 [lat, lng] 上有多个标记,当您单击它时,它会移动所有标记,并且您不会重叠。请参阅下面的图片:

有了聚类:

用户点击集群后:

您可以尝试 this blog post 中介绍的技术。您将在此处看到一个工作示例:

https://team.carto.com/u/jsanz/builder/4ddc4fd8-fcb5-11e5-914a-0ef7f98ade21/embed

和这里定义层的SQL:

https://gist.github.com/jsanz/13e635b55a0bbee5a4acb27b4a3e7c48

不要被 SQL 吓到,您只需将字段名称放在末尾,当然还有 table 名称(在我的示例中为 team)和您会有的然后您可以根据需要添加类别符号、信息窗口或工具提示。

唯一的限制是这只适用于少数缩放,但您可以在地图上禁用它,因为通常这些地图只在低缩放级别下才有意义。