将西班牙shapefile与数据框合并

阿尔雄多

我在将西班牙省的shapefile与特定数据框合并时遇到问题。合并它们后,形状会以某种方式链接到错误的省份(fe Barcelona返回了Teruel的形状)。我已经搜索了示例,但是我不明白自己在做什么错。

所有必需的文件都存储在此文件夹中:Dropbox文件夹

library(maptools)
library(dplyr)
library(data.table)
library(reshape2)

我将所有必要的文件输入R:

gor=readShapeSpatial('prov_map.shp')
prov=read.csv("prov.csv",sep = ';')
prov=subset(prov,select=-X)

我更正了数据文件中的省名,以便它们在实际名称前没有数字,然后将结果变量转换为一个因子:

provcorr=colsplit(prov$Province," ",c("Prov_num","Province"))
prov$prov_num=provcorr$Prov_num
prov$province_nonum=provcorr$Province 
prov$provfact=as.factor(prov$province_nonum)   

由于西班牙的重音符号,shapefile中的省名有些奇怪,因此我对其进行了更正,以使其与数据框中的名称相匹配:

prov_nom=c("Melilla","Ceuta", "Zaragoza","Zamora", "Bizkaia",
       "Valladolid","Valencia/València","Toledo","Teruel",
       "Tarragona","Soria","Sevilla","Segovia","Cantabria",
       "Salamanca","Pontevedra","Palencia","Asturias","Ourense",
       "Navarra","Murcia","Málaga","Madrid","Lugo","Rioja, La",
       "Lleida", "León", "Jaén", "Huesca", "Huelva", "Gipuzkoa",
       "Guadalajara","Granada","Girona","Cuenca","Coruña, A",
       "Córdoba", "Ciudad Real", "Castellón/Castelló","Cádiz",
       "Cáceres", "Burgos","Barcelona", "Balears, Illes", "Badajoz",
       "Ávila", "Almería", "Alicante/Alcant","Albacete","Araba/Álava") 
gor@data$NAMEBIEN=as.factor(prov_nom)

到目前为止,形状已与省名完美对齐。例如,如果我键入:

plot(subset(gor,gor@data$NAMEBIEN=='Barcelona'))

巴塞罗那的形状显现出来。但是在我尝试将它们合并后:

gor@data=merge(gor@data,prov,by.x='NAMEBIEN',by.y='provfact',all.x=T)

这已不再是这种情况。当我输入与之前相同的代码时:

plot(subset(gor,gor@data$NAMEBIEN=='Barcelona'))

特鲁埃尔(Teruel)的形状出现了。

问题使我发疯。有什么建议么?

亚历克斯

问题是合并会更改数据帧的顺序。在原始数据帧中,Teruel与第9个多边形相关联。但是在合并data.frame中的第9个条目之后是Barcelona,因此与Teruel的多边形相关联。添加参数sort = FALSE,它应该可以工作。

gor@data=merge(gor@data,prov,by.x='NAMEBIEN',by.y='provfact',all.x=T, sort = FALSE)
plot(subset(gor,gor@data$NAMEBIEN=='Barcelona'))

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章