使用Leaflet(对于R)加载SpatialPolygonsDataFrame并不起作用

时间:2016-06-01 15:50:14

标签: r leaflet rgdal

首先,我是R的新人,所以请耐心等待。

我最终想要完成的是用Leaflet展示阿姆斯特丹的互动地图。为此,我使用RGDAL来读取shapefile。

link包含阿姆斯特丹的shapefile。

我使用以下代码读取shapefile并显示地图。

amsterdam <- readOGR(".", layer = "sd2010zw_region", verbose = FALSE)

leaflet(amsterdam) %>%
  addProviderTiles("CartoDB.Positron", options= providerTileOptions(opacity = 0.99)) %>%
    addPolygons(
      stroke = FALSE, fillOpacity = 0.5, smoothFactor = 0.5
    )

我得到的是CartoDB.Positron的地图,但不是&#39; polygonmap&#39;作为第二层。我得到的是包含各种数据的SpatialPolygonsDataFrame。

另一方面,当我使用绘图方法时,我得到了阿姆斯特丹的地图

plot(amsterdam, axes=TRUE, border="gray")

但我不想使用情节,我想使用Leaflet:)

我在这里做错了什么?

2 个答案:

答案 0 :(得分:15)

问题在于预测。您需要使用 rgdal sp 中的longlat将数据投影到spTransform。另外,请在SpatialPolygonsDataFrame来电中提供addPolygons()

library(leaflet)
library(rgdal)

amsterdam <- readOGR(".", layer = "sd2010zw_region", verbose = FALSE)

ams_ll <- spTransform(amsterdam, CRS("+init=epsg:4326"))

leaflet() %>%
  addProviderTiles("CartoDB.Positron", options= providerTileOptions(opacity = 0.99)) %>%
  addPolygons(data = ams_ll,
    stroke = FALSE, fillOpacity = 0.5, smoothFactor = 0.5
  )

答案 1 :(得分:2)

提示:请不要忘记在data = ...调用中添加addPolygons()变量名。

有效:

leaflet() %>%
  addTiles() %>%
  addPolygons(ams_ll)

这有效:

leaflet() %>%
  addTiles() %>%
  addPolygons(data = ams_ll)

我花了几个小时寻找解决方案,希望这对其他人有帮助。