如何使用 R 在传单上绘制多边形?

How to plot polygons on leaflet using R?

我在尝试使用 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" 但只有底图。我一直在搜索,这个 很相似,但没有这个问题。

为了绘制我一直关注的多边形 this link.

问题看似简单,却耗费了我不少时间。期待您的建议。谢谢你的时间。

NOTE: SPDF contains data exported from OSM, which means the coordinates (of POLYGONS) are without the decimal points as it is in the OSM data.

终于,我自己解决了问题。问题出在 projectionsCRS(坐标参考系统).

默认的 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: 确保你已经包含必要的包,如 leaflet、sp、magrittr 等