我想知道如果有一种方法可以加入班级“SP”的两张地图为一体。
例如瑞典+挪威,有一个代码(SHP数据从下载: http://www.gadm.org/country ):
library(maptools)
mapa_shp_swe <- readShapePoly("C:/r/SWE_adm/SWE_adm0.shp")
mapa_map_swe <- fortify(mapa_shp_swe)
swe <- ggplot(mapa_map_swe, aes(x = long, y = lat, group=group)) +
geom_path(size=1) +
theme_bw()
mapa_shp_nor <- readShapePoly("C:/r/NOR_adm/NOR_adm0.shp")
mapa_map_nor <- fortify(mapa_shp_nor)
nor <- ggplot(mapa_map_nor, aes(x = long, y = lat, group=group)) +
geom_path(size=1) +
theme_bw()
我个人倾向于使用spRbind()
函数在rgdal
包,因为我往往有这样的装载形状文件工作时反正。
# ensure shapefiles have unique ids
n <- length(slot(mapa_shp_swe, "polygons"))
newShape <- spChFIDs(mapa_shp_nor, as.character(n))
# the actual join
newShape <- spRbind(newShape, mapa_shp_swe)
# you can then write it if you wish
writeOGR(sweNor, dsn = "shapes/", layer = "newShape",
driver = "ESRI Shapefile")
这应该写一个所谓的新Shape文件sweNor
既原始形状文件合并的shapes/
目录。
至于绘制城市,@cmbarbu指出,这应该被要求作为一个单独的问题,但你可以尝试添加以下代码:
ggplot(newShape, aes(x = long, y = lat, group=group)) +
geom_path(size=1) +
geom_point(data = cities, aes(x = x, y = y)) +
theme_bw()
所以没有保证我没有测试过这呢!
您需要先确保多边形名称( row.names
)是不同的:
> row.names(mapa_shp_swe)
[1] "0"
> row.names(mapa_shp_nor)
[1] "0"
mapa_shp_swe <- spChFIDs(mapa_shp_swe,"1") # set polygon name
> row.names(mapa_shp_swe)
[1] "1"
然后,你可以简单地将它们绑定:
peninsula <- rbind(mapa_shp_nor,mapa_shp_swe)