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

Ami*_*mir 3 r spatial polygons leaflet

我在尝试使用 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))
Run Code Online (Sandbox Code Playgroud)

其中 SPDF 是我的 SpatialPolygonsDataFrame。

当我执行此代码时,它“没有绘制任何内容”,但只有底图。我一直在四处寻找,这个问题很相似,但没有这个问题。

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

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

注意:SPDF 包含从 OSM 导出的数据,这意味着(多边形的)坐标没有小数点,因为它在 OSM 数据中。

Ami*_*mir 5

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

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

SPDF@proj4string <-CRS("+init=epsg:3857")
Run Code Online (Sandbox Code Playgroud)

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

SPDF <- spTransform(SPDF,  CRS("+ellps=WGS84 +proj=longlat +datum=WGS84 +no_defs"))
Run Code Online (Sandbox Code Playgroud)

现在,当我执行以下传单行代码时,它运行良好。

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))
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我遵循了这个页面上的讨论。

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

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