【问题标题】:How to plot polygons on leaflet using R?如何使用 R 在传单上绘制多边形?
【发布时间】:2016-04-18 14:43:37
【问题描述】:

我在尝试使用 R 在 Leaflet 上绘制 SpatialPolygonsDataFrame 时遇到一个简单的问题。我的代码如下:

leaflet() %>%
    addProviderTiles("CartoDB.Positron") %>%
    setView(lng = -80.8858673, lat = 41.1450276, zoom = 5) %>%
    addPolygons(data = SPDF, weight = 2, color = ~colorQuantile("red", SPDF$id)(id))

SPDF 是我的 SpatialPolygonsDataFrame。

当我执行此代码时,它 "PLOTS NOTHING" 但只有底图。我一直在四处寻找,这个question 很相似,但没有这个问题。

为了绘制多边形,我一直在关注 this 链接。

这个问题看起来很简单,但它占用了我很多时间。期待建议。谢谢你的时间。

注意:SPDF 包含从 OSM 导出的数据,这意味着(POLYGONS 的)坐标没有 OSM 数据中的小数点。

【问题讨论】:

  • 我们无法测试您的代码,但也许您可以先在 addPolygons() 表达式中添加颜色参数; (颜色 = ~colorQuantile(...)
  • 是的,我已经尝试过了,现在也更新了上面的代码。还是同样的问题。 :(
  • MLavoie 可能是因为我的 SPDF 中的纬度和经度,当我从 OSM 导入数据时它们没有小数点?
  • 这是可能的,但如果没有访问您的数据集就很难知道
  • 您可以在此链接找到我的 SPDF:filedropper.com/showdownload.php/spdf

标签: r leaflet spatial polygons


【解决方案1】:

最后,我自己能够找出问题所在。 投影CRS(坐标参考系)存在问题。

默认 proj4string 一开始没有正确设置,导致坐标不现实(没有小数点)。因此,首先我设置了 SpatialPolygonsDataFrame(SPDF) 的默认 proj4string:

SPDF@proj4string <-CRS("+init=epsg:3857")

设置后,我提供了如下投影:

SPDF <- spTransform(SPDF,  CRS("+ellps=WGS84 +proj=longlat +datum=WGS84 +no_defs"))

现在,当我执行以下传单代码行时,它可以完美运行。

leaflet() %>%
    addProviderTiles("CartoDB.Positron") %>%
    setView(lng = -80.8858673, lat = 41.1450276, zoom = 5) %>%
    addPolygons(data = SPDF, weight = 2, color = ~colorQuantile("red", SPDF$osm_id)(osm_id))

为了解决这个问题,我关注了this页面上的讨论。

我希望这对面临同样问题的其他人有用。尽管我仍然不是投影和制图专家,但如果有人可以推荐一些必要的信息来理解这些问题,那就太好了。谢谢大家的时间。

PS:请确保您已包含必要的包,例如传单、sp、magrittr 等。

【讨论】:

  • 谢谢老兄,spTransform 是唯一缺少的行。
猜你喜欢
  • 2017-06-25
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
  • 2019-11-08
  • 2015-07-10
  • 2018-08-31
  • 2015-01-01
  • 1970-01-01
相关资源
最近更新 更多