如何使用R在小册子上绘制多边形?

时间:2016-01-13 14:56:40

标签: r leaflet spatial polygons

我在尝试使用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数据中那样的小数点。

1 个答案:

答案 0 :(得分:4)

最后,我自己能够找出问题所在。问题出在投影 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等。