R中Leaflet中聚集标记的聚合加权线串

2023-12-10

我正在尝试绘制位置和加权连接线串。当我放大或缩小时,标记的聚类会调整得很好。显示的集群标签是聚合的node_val的标记。

我想对线串做类似的事情,这样

  1. 该图不显示连接单个标记的蓝线,而是显示连接标记簇的线,并且
  2. 连接标记簇的新线串的宽度根据wgt多变的。

我希望下面的代码能够说明问题:

library(dplyr)
library(leaflet)
library(sf)

set.seed(123)
N <- 1000
N_conn <- 100

# data frame for points
df_points <- data.frame(id = 1:N,
                        lng = sample(c(11.579657, 16.370654), N, TRUE) + rnorm(N, 0, 0.5),
                        lat = sample(c(48.168889, 48.208087), N, TRUE) + rnorm(N, 0, 0.5),
                        node_val = sample(10, N, TRUE))


# data frame for connections
df_conn <- data.frame(id_from = sample(N_conn, replace = TRUE),
                      id_to   = sample(N_conn, replace = TRUE),
                      wgt  = abs(rnorm(N_conn)))

# drop connections where from and to ids are identical
df_conn <- subset(df_conn, id_from != id_to)

# add the coordinates for the connections (merging is not neccessary due to ordering of synth data)
df_conn$lat_from <- df_points[df_conn$id_from, "lat"]
df_conn$lng_from <- df_points[df_conn$id_from, "lng"]
df_conn$lat_to   <- df_points[df_conn$id_to, "lat"]
df_conn$lng_to   <- df_points[df_conn$id_to, "lng"]


sf_conn_from <- df_conn %>% 
  st_as_sf(coords=c("lng_from", "lat_from"))

sf_conn_to <- df_conn %>% 
  st_as_sf(coords=c("lng_to", "lat_to"))

sf_conn <- st_combine(cbind(sf_conn_from, sf_conn_to)) %>% 
  st_cast("LINESTRING")

st_crs(sf_conn) <- 4326

leaflet(df_points) %>% 
  addTiles() %>% 
  addMarkers(options = markerOptions(node_val = ~node_val), 
             label = quakes$mag,
             clusterOptions = markerClusterOptions(
               iconCreateFunction=JS("function (cluster) {    
                var markers = cluster.getAllChildMarkers();
                var sum = 0; 
                for (i = 0; i < markers.length; i++) {
                  sum += Number(markers[i].options.node_val);
                  //sum += 1;
                }
                sum = Math.round(sum);
                return new L.DivIcon({ html: '<div><span>' + sum + '</span></div>',
                  className: 'marker-cluster marker-cluster-medium', 
                  iconSize: new L.Point(40,40)});
              }")
             )) %>% 
  leafem::addFeatures(data = sf_conn,
                      color = 'blue',#~pal(rel_full$N_scale),#
                      weight = 1) 

感谢这两个问题的贡献者:

  • leaflet R,如何使与儿童统计相关的聚集图标出现?
  • 闪亮的传单添加大量分离的折线

这是调整线条权重的部分解决方案,我无法帮助对这些线条进行聚类:(

library(dplyr)
library(leaflet)
library(sf)

set.seed(123)
N <- 1000
N_conn <- 100

# data frame for points
df_points <- data.frame(id = 1:N,
                        lng = sample(c(11.579657, 16.370654), N, TRUE) + rnorm(N, 0, 0.5),
                        lat = sample(c(48.168889, 48.208087), N, TRUE) + rnorm(N, 0, 0.5),
                        node_val = sample(10, N, TRUE))


# data frame for connections
df_conn <- data.frame(id_from = sample(N_conn, replace = TRUE),
                      id_to   = sample(N_conn, replace = TRUE),
                      wgt  = abs(rnorm(N_conn)))

# drop connections where from and to ids are identical
df_conn <- subset(df_conn, id_from != id_to)

# add the coordinates for the connections (merging is not neccessary due to ordering of synth data)
df_conn$lat_from <- df_points[df_conn$id_from, "lat"]
df_conn$lng_from <- df_points[df_conn$id_from, "lng"]
df_conn$lat_to   <- df_points[df_conn$id_to, "lat"]
df_conn$lng_to   <- df_points[df_conn$id_to, "lng"]

geom <- lapply(1:nrow(df_conn),
  function(i)
    rbind(
      as.numeric(df_conn[i, c("lng_from","lat_from")]),
      as.numeric(df_conn[i, c("lng_to","lat_to")])
    )
) %>%
  st_multilinestring() %>%
  st_sfc(crs = 4326) %>%
  st_cast("LINESTRING")

sf_conn <- st_sf(df_conn,
                 geometry=geom)

#Modify weighting
sf_conn$cut=exp(sf_conn$wgt-1)



leaflet(df_points) %>%
  addTiles() %>%
  addMarkers(
    options = markerOptions(node_val = ~ node_val),
    label = quakes$mag,
    clusterOptions = markerClusterOptions(
      iconCreateFunction = JS(
        "function (cluster) {
                var markers = cluster.getAllChildMarkers();
                var sum = 0;
                for (i = 0; i < markers.length; i++) {
                  sum += Number(markers[i].options.node_val);
                  //sum += 1;
                }
                sum = Math.round(sum);
                return new L.DivIcon({ html: '<div><span>' + sum + '</span></div>',
                  className: 'marker-cluster marker-cluster-medium',
                  iconSize: new L.Point(40,40)});
              }"
      )
    )
  ) %>%   addPolylines(weight = sf_conn$cut,
                       data = sf_conn,
                       col = "blue")

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R中Leaflet中聚集标记的聚合加权线串 的相关文章

随机推荐

  • 如何在 Unix 中查找文件的大小并将其分配给变量

    我正在编写一个 Unix 脚本 它读取文本文件的大小 如果文件有一定大小 它应该打印文本文件 如果它不是一个else 执行一个循环并继续该过程 我正在使用以下命令来查找该文本文件的大小 ls l filepath filename lst
  • 使用 RAISERROR 终止 SQL 语句

    SQL 2005 raiserror 是否可以终止存储过程 例如 在大型系统中 我们得到了一个不希望输入到特定列中的值 在更新触发器中 如果您编写 如果存在 从插入中选择 其中 testcol 7 开始 raiseerror 我的自定义错误
  • Chart.js 画布调整大小

    In Android WebView HTML5 画布错误 我发布了一个有关使用 Graph js 库绘制图表的问题 我现在遇到的问题是 如果我多次调用该函数来绘制图形 则画布每次都会调整大小 每次将图形重新绘制到同一画布时 其大小也会发生
  • 80x86 中 SHL 和 SAL 的区别

    我已经学会了如何使用 80x86 汇编器 因此在按位移位操作中 我遇到了 SAL 和 SHL 使用的问题 我的意思是代码行之间的区别如下 MOV X 0AAH SAL X 4 MOV X 0AAH SHL X 4 什么时候应该使用SHL 什
  • Openerp 函数字段

    嘿 我是 openerp 的新手 我需要帮助来创建一个名为 Total 的函数字段 用于计算同一对象的所有字段的总和 例如 name hr performanzze columns p fields selection 1 Outstand
  • 将 PDO 与 MSSQL 服务器一起使用时出现“无法找到驱动程序”错误

    这个问题已经被问过很多次了 我已经经历了所有这些问题 但没有一个解决方案对我有用 基本上 使用 PDO 连接到 MSSQL 服务器时出现 找不到驱动程序 异常 以下是我的规格 Windows 8 64 Bit version MSSQL s
  • SWIG 无法识别字符串参数

    我有一个令人沮丧的问题 让我花了很多时间来处理它 但我没有找到任何解决方案 我想通过 SWIG 在 PHP 中使用 C 类 我生成了我的共享对象 它对于某些方法工作正常 但每当我使用字符串参数作为输入调用这些方法时 我都会遇到此错误 致命错
  • 如何通过xib将NSMutableArray绑定到ArrayController

    我是可可的新手 我正在显示一个简单的 Tableview 其中填充了 NSMutableArray 它绑定到 NSArrayController 如下所示 arrController bind contentArray toObject s
  • OutofMemoryError:位图大小超出 VM 预算 (Android)

    BitmapFactory 中出现异常 不确定是什么问题 好吧 我可以猜测这个问题 但不确定为什么会发生 ERROR AndroidRuntime 7906 java lang OutOfMemoryError bitmap size ex
  • 为什么 StringTemplate 会很慢?

    我使用 StringTemplate 作为我的 Web 应用程序的视图层 最近我测量了渲染页面所花费的时间 简单页面约为 50 毫秒 复杂页面约为 500 毫秒 这对于我的需求来说太多了 所以我正在寻找一种方法来提高 ST 的性能 我怎样才
  • 使用 XPath 提取节点值

    我想从 amazon com 的一个部分中提取每个项目的数据 仅节点值 而不是链接 我正在寻找的价值是内在的 span class narrowValue ul li style margin left 0px a href s ref s
  • chdir() 可以接受相对路径吗?

    在Linux上的C中 chdir 函数可以接受相对路径吗 是的 当前工作目录是进程的一个属性 稍微扩展一下 这里有一些相关的POSIX定义 The 当前工作目录被定义为 与进程关联的目录 用于不以斜杠字符开头的路径名的路径名解析 有关更多详
  • 如何更改自定义轨道生成器的源? (雷神)

    我正在制作一个自定义生成器来生成新的 Rails 应用程序 我是这样做的 require thor require rails generators rails app app generator class AppBuilder lt R
  • ORACLE SQL 使用窗口函数运行 TOTAL 和 daytotal

    从 EMPLOYEE 表中 我想对记录数量 雇用的员工 进行分组 并且还有每天的运行总数 输入的格式是这样的 rownum Hired date time 1 1 10 2012 11 00 2 1 10 2012 13 00 3 20 1
  • 如何比较 if 语句中的多个字符串?

    我正在尝试检查 if 语句中的多种可能性 用户输入一个字符串 然后我检查该字符串是否有多种可能性 if theString Seven seven 7 theInt 7 cout lt lt You chose lt lt theInt l
  • Scala isInstanceOf 和类型擦除

    我很困惑如何isInstanceOf在 Scala 中工作 如果我做这样的事情 val x Int 5 x isInstanceOf Int 鉴于 Scala 确实进行了类型擦除 那么 JVM 不应该在运行时删除所有类型信息吗 它不是all
  • 如何获取Windows启动时间? [复制]

    这个问题在这里已经有答案了 如何使用某些 WinAPI 函数在 C 中获取 Windows 启动时间 我目前正在使用命令 systeminfo 但我正在寻找更合适的解决方案 我检查了任务管理器是如何做到这一点的 结果发现它使用ZwQuery
  • C++ 优化中的代码重新排序何时停止?

    我已经阅读了很多关于优化代码中的代码执行保证的问题 所以我试图编译一个关于允许 阻止编译器重新排序代码序列的原因列表 我已经从通常正确的内容开始回答 但我没有添加标准中的引号 这是根据我的经验得出的 如果有任何忘记的内容或对现有的要点进行扩
  • 使用Python多处理在worker之间共享变量[重复]

    这个问题在这里已经有答案了 如何读取和更新Python中多个worker之间共享的变量 例如 我正在使用 Python 中的多个进程扫描文件列表 并且想检查父目录是否已被扫描 def readFile filename Add the pa
  • R中Leaflet中聚集标记的聚合加权线串

    我正在尝试绘制位置和加权连接线串 当我放大或缩小时 标记的聚类会调整得很好 显示的集群标签是聚合的node val的标记 我想对线串做类似的事情 这样 该图不显示连接单个标记的蓝线 而是显示连接标记簇的线 并且 连接标记簇的新线串的宽度根据