2013-04-30 80 views
1

承蒙@AriBFriedman和@PaulHiemstra,隨後建議搞清楚如何合併.SHP文件,我已成功使用下面的代碼和數據產生以下地圖:如何添加一個shp文件來修改地圖邊界?

數據:

MoroccoWestern Sahara

代碼:

# Loading administrative coordinates for Morocco maps 
    library(sp) 
    library(maptools) 
    library(mapdata) 

    # Loading shape files 
    Mor <- readShapeSpatial("F:/Purdue University/RA_Position/PhD_ResearchandDissert/PhD_Draft/Country-CGE/MAR_adm1.shp") 
    Sah <- readShapeSpatial("F:/Purdue University/RA_Position/PhD_ResearchandDissert/PhD_Draft/Country-CGE/ESH_adm1.shp") 

    # Ploting the maps individually 
    png("Morocco.png") 
    Morocco <- readShapePoly("F:/Purdue University/RA_Position/PhD_ResearchandDissert/PhD_Draft/Country-CGE/MAR_adm1.shp") 
    plot(Morocco) 
    dev.off() 

    png("WesternSahara.png") 
    WesternSahara <- readShapePoly("F:/Purdue University/RA_Position/PhD_ResearchandDissert/PhD_Draft/Country-CGE/ESH_adm1.shp") 
    plot(WesternSahara) 
    dev.off() 

    # Merged map of Morocco and Western Sahara 

    MoroccoData <- rbind([email protected],[email protected]) # First, 'stack' the attribute list rows using rbind() 
    MoroccoPolys <- c([email protected],[email protected]) # Next, combine the two polygon lists into a single list using c() 

    # summary(MoroccoData) 
    # summary(MoroccoPolys) 

    offset <- length(MoroccoPolys) # Next, generate a new polygon ID for the new SpatialPolygonDataFrame object 

    browser() 
    for (i in 1: offset) 
    { 
    sNew = as.character(i) 
    MoroccoPolys[[i]]@ID = sNew 
    } 

    ID <- c(as.character(1:length(MoroccoPolys))) # Create an identical ID field and append it to the merged Data component 
    MoroccoDataWithID <- cbind(ID,MoroccoData) 

    MoroccoPolysSP <- SpatialPolygons(MoroccoPolys,proj4string=CRS(proj4string(Sah))) # Promote the merged list to a SpatialPolygons data object 

    Morocco <- SpatialPolygonsDataFrame(MoroccoPolysSP,data = MoroccoDataWithID,match.ID = FALSE) # Combine the merged Data and Polygon components into a new SpatialPolygonsDataFrame. 

    [email protected]$id <- rownames([email protected]) 
    Morocco.fort <- fortify(Morocco, region='id') 
    Morocco.fort <- Morocco.fort[order(Morocco.fort$order), ] 

    MoroccoMap <- ggplot(data=Morocco.fort, aes(long, lat, group=group)) + 
    geom_polygon(colour='black',fill='white') + 
    theme_bw() 

結果:

個個別地圖

Morocco Western Sahara

合併後的地圖:

Morocco-Merged

問:

我想消除通過地圖的中間切割邊界?任何人有任何建議和/或幫助?

THX所有

回答

0

我沒有做到這一點,通過使用QGIS軟件,它是免費的,在這個環節QGIS

下載合併後削減在地圖中兩個額外的面層消除
相關問題