【发布时间】:2016-10-29 04:55:45
【问题描述】:
我在将西班牙省份的 shapefile 与特定数据框合并时遇到问题。合并它们后,形状以某种方式与虚假省份相关联(例如,巴塞罗那返回特鲁埃尔的形状)。我已经搜索了示例,但我无法理解我做错了什么。
所有必要的文件都存储在此文件夹中: Dropbox folder
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'))
特鲁埃尔的形状出现了。
这个问题快把我逼疯了。有什么建议?
【问题讨论】:
标签: r merge gis spatial shapefile