繁体   English   中英

如何使用 R 中的 leaflet 在现有点之间绘制所有可能的线段

[英]How to draw all possible line segments between existing points using leaflet in R

我的问题与上一个问题相似(基本相同):在点之间绘制所有线

但我想在 R 中使用 leaflet 的解决方案。 是否可以使用 leaflet 来做到这一点? addPolylines() function 用于连接 dataframe 中的所有连续点。 如下面的示例数据集,很容易按顺序连接所有点,但是如何在这五个点之间绘制所有可能的线段?

我希望看到一个带有 leaflet 的通用解决方案,我可以将其应用于具有更多点的场景。 非常感谢!

locations <- data.frame(Long = c(76,75,73,72,74,76), Lat = c(43,40,40,43,45,43))

leaflet("locations") %>%
       addTiles() %>%
       addPolylines(lng = locations$Long,
                    lat = locations$Lat)

它可以分为2个步骤:

  1. 创建一个数据框,其中包含坐标之间的所有组合。
  2. 在每对坐标之间画线。 请参阅如何使用 R 中的 Leaflet 将两个坐标与一条线连接起来

步骤1

library(leaflet)
library(tidyr)
library(dplyr)
library(purrr)
locations <- data.frame(Long = c(76,75,73,72,74,76), Lat = c(43,40,40,43,45,43))
# get unique coordinates
locations_distinct <- locations %>%
  distinct_all()

# get all combinations between any two points
combs <- combn(1:nrow(locations_distinct),2,simplify = FALSE)

# get pairs of coordinates
locations_paris <- map_df(combs,function(x){
  df <- bind_cols(
    locations_distinct[x[1],],locations_distinct[x[2],]
  )
  colnames(df) <- c("Long","Lat","Long1","Lat1")
  return(df)
})

第2步

如何使用 R 中的 Leaflet 将两个坐标与一条线连接起来

map <- leaflet(locations_paris) %>%
  addTiles() 

for(i in 1 : nrow(locations_paris)){
  map <- map %>%
    addPolylines(
      lng = c(locations_paris$Long[i],locations_paris$Long1[i]),
      lat = c(locations_paris$Lat[i],locations_paris$Lat1[i])
    )
}

map

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM