我想將兩個.shp文件轉換成一個數據庫,這樣我就可以將地圖繪製在一起。如何將.shp文件轉換爲R的.csv文件?
此外,有沒有辦法將.shp文件轉換爲.csv文件?我希望能夠在.csv格式下個性化並添加一些對我來說更簡單的數據。我想到的是如果在地圖上添加疊加產量數據和降水量數據。
以下是Morocco和Western Sahara的形狀文件。
代碼的兩個文件情節:
# This is code for mapping of CGE_Morocco results
# 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 (raw)
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()
尋找到從@AriBFriedman和@PaulHiemstra,隨後建議搞清楚如何合併.SHP文件後,我已成功地使用以下代碼和數據生成以下映射(對於.shp數據,參見上面的鏈接)
代碼:
個# Merging Mor and Sah .shp files into one .shp file
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()
結果:
新問題:
1 - 如何消除儘管削減一半的地圖邊界數據?
2-如何在.shp文件中結合不同的區域?
謝謝大家。
P.S:在stackoverflow.com的社區是美好的和非常有幫助的,特別是像初學者:)只是想強調它。
+1,儘管這不包括多邊形/線的空間座標。爲此,您可以在加載'ggplot2'包後使用'fortify',查看我的答案以獲取更多詳細信息。 – 2013-04-28 18:29:59
@PaulHiemstra +1給你一個很好的'fortify'的使用方法。總會有一些水晶球凝視着這樣的問題,但是我讀到OP的意圖是僅僅添加和清除一些相關的值。爲此,出口越少越好 - 我仍然對將所有內容導出到Excel,編輯,然後重新讀入以及使用其中任何一種解決方案的非重現性感到不安。... – 2013-04-28 20:58:04
我真的很推薦OP學習如何在R. – 2013-04-28 21:01:22