【问题标题】:How to specify radius units in addCircleMarkers() when using Leaflet in R在 R 中使用 Leaflet 时如何在 addCircleMarkers() 中指定半径单位
【发布时间】:2016-08-08 19:30:06
【问题描述】:

我正在尝试使用在闪亮的应用程序中使用 R 创建的传单地图来可视化从起点到目的地的货物。

我想添加一个半径的圆形标记,对应于 odistddist 变量,它们形成一个名为 ma​​in() 的反应性数据框强>

下面是相关的快照和代码:

output$leaflet1 <- renderLeaflet({
  leaflet() %>%
    addCircleMarkers(data = main(), lng = main()$Olong, lat = main()$Olat, color = 'black', fillColor = coyGreen,
                     radius = main()$odist, opacity = .5) %>% 
    addCircleMarkers(data = main(), lng = main()$Dlong, lat = main()$Dlat, color = 'black', fillColor = coyGreen, 
                     radius = main()$ddist, opacity = .3)
})

对于上面的例子,参数radius = main()$odist 等价于radius = 50。然而,这 50 个单位似乎是任意的(圆圈小于 radius = main()$ddist = 125 的较大单位,但是当我放大和缩小时,两个圆圈都会放大和缩小)。我希望能够将我的圆形标记的半径设置为以英里为单位的固定半径,但是我无法弄清楚如何做到这一点。非常感谢任何帮助!

【问题讨论】:

  • addCircles 是你要找的我认为
  • 我正在寻找一种将radius 参数设置为以英里为单位的固定常数的方法。
  • online documentation of leaflet for Circle 中,setRadius “设置圆的半径。单位为米。”因此,在 R 传单中,当您使用 addCircles 而不是 addCircleMarkers 时,您可以指定以米为单位的半径(如果转换正确,则为英里)。
  • 我正在为 R 使用 Leaflet() 包,所以我不确定相同的语法是否适用。 R 中的参数是radius,从视觉上看,两个圆圈的半径显然不是 50 米和 125 米。
  • 如您上面所述,该参数在 R 传单中称为 radius = 。在addCircles 中使用时,它以米为单位定义圆的半径。

标签: r leaflet


【解决方案1】:

如果您使用addCircles 而不是addCircleMarkers,您的圈子将有恒定的radius(以米为单位)。这是一个使用 ma​​pview 的可重现示例,该示例使用 addCircleMarkers。在顶部,我们使用addCircles 绘制相同的位置

library(mapview)

m <- mapview(breweries91) # uses addCirclemarkers so circle radius changes with zoom

m@map %>% 
  addCircles(data = breweries91, color = "red", radius = 100) # circle radius constant

如果您放大,您会看到最初较小的红色圆圈相对于 ma​​pview

中使用的标准蓝色圆圈标记会变得更大

【讨论】:

  • 我正在尝试使用addCircles,但我收到错误消息“不知道如何从 sfc_MULTIPOLYGON,sfc 类的对象中获取位置数据”
【解决方案2】:

记住地图投影很重要。

这也取决于您在 Leaflet 中使用的投影,最好使用 Leaflet 的测量工具进行检查,或者您是否熟悉位置。要查看我推荐的预测

crsDF <- rgdal::make_EPSG()
View(crsDF)

就我而言,我在智利(一个狭长的国家),我在某些地方使用此投影:

CRS 9155 =

"+proj=utm +zone=19 +south +ellps=GRS80 +units=m +no_defs +type=crs"

你可以看到我使用的单位是米

在这里,我为我的国家留下了一些预测的图像。

View(crsDF)

您可以在以下位置找到更多信息:

问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 2021-09-21
    • 2016-07-09
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多