【问题标题】:Crosstalk: filter Polylines in Leaflet串扰:过滤传单中的折线
【发布时间】:2017-03-23 11:00:46
【问题描述】:

我无法使用传单和折线进行串扰 - 这是一个 MWE:

library(crosstalk)
library(leaflet)

theta <- seq(0, 2*pi, len = 100)
dat <- data.frame(
  lon = cos(theta),
  lat = sin(theta),
  t = 1:100
)

sd <- SharedData$new(dat)

map <- leaflet() %>%
  addTiles() %>%
  addCircleMarkers(data = sd, lat = ~lat, lng = ~lon, color = "blue") %>%
  addPolylines(data = sd, lat = ~lat, lng = ~lon, color = "blue")

bscols(
  filter_slider("t", "Time", sd, column = ~t),
  map
)

时间 filter_slider 适用于圆形标记,但不适用于折线。

如果有人能指出我正确的方向,很高兴在 R 传单包中解决这个问题。 IE。需要改变/实施什么?我认为到目前为止,javascript 方面缺少支持?

【问题讨论】:

    标签: r leaflet rstudio


    【解决方案1】:

    更新:好消息! @dmurdoch 已提交拉取请求以添加对折线和多边形的支持。 使用他的串扰版本,您现在可以过滤传单线/多边形,如果它们是 sp 对象(注意,它似乎还不适用于 sf)。

    首先您需要安装此版本的串扰: devtools::install_github("dmurdoch/leaflet@crosstalk4")

    然后你需要确保你的特征是空间对象,很容易使用 rgdal 或 raster: shapes_to_filter <- raster::shapefile("data/features.shp") # raster import to 'Spatial Object' shapes_to_filter <- rgdal::readOGR("data/features.shp") # rgdal import to 'Spatial Object'

    或者,如果您将 sf 和 dplyr 用于大多数空间任务(如我),则将 sf 对象转换为 Spatial:

    library(dplyr) library(sf) shapes_to_filter <- st_read("data/features.shp") %>% as('Spatial') # sf import to 'Spatial Object'

    然后为传单创建一个 sd 对象,并为过滤器创建一个数据框副本(重要提示:注意如何使用 sd_map 中的组名设置 sd_df 的组):

    library(crosstalk) sd_map <- SharedData$new(shapes_to_filter) sd_df <- SharedData$new(as.data.frame(shapes_to_filter@data), group = sd_map $groupName())

    使用 sd_df 创建串扰过滤器:

    filter_select("filterid", "Select Filter Label", sd_df, ~SomeColumn)

    使用 sd_map 对象创建地图:

    library(leaflet) leaflet() %>% addProviderTiles("OpenStreetMap") %>% addPolygons(data = sd_map)

    并且任何链接的表格/图表也需要使用 sd_df 对象:

    library(DT) datatable(sd_df)


    以下是解决方案的所有来源:

    GitHub Issue

    Github pull request from dmurdoch to add support for polygons/lines

    Original solution - with outdated method "sd$transform"

    Updated example - with the new "group" method, but I couldnt get their RMD to work

    【讨论】:

      【解决方案2】:

      正如Bhaskar Karambelkar 之前提到的: “现在串扰仅适用于标记,而不适用于折线/多边形”

      我希望这种情况尽快改变。

      【讨论】:

        猜你喜欢
        • 2020-06-08
        • 2018-07-12
        • 1970-01-01
        • 2022-01-19
        • 2019-02-27
        • 1970-01-01
        • 1970-01-01
        • 2017-07-24
        • 1970-01-01
        相关资源
        最近更新 更多