首先,我是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:)
我在这里做错了什么?
答案 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)
我花了几个小时寻找解决方案,希望这对其他人有帮助。