簡體   English   中英

將spanish shapefile與dataframe合並

[英]Merging spanish shapefile with dataframe

我在將西班牙省份的shapefile與特定數據幀合並時遇到問題。 合並后,不知何故形狀與假省份相關聯(巴塞羅那回歸特魯埃爾的形狀)。 我搜索了一些例子,但我無法理解我做錯了什么。

所有必需的文件都存儲在此文件夾中: 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與第9個多邊形相關聯。 但是在合並data.frame中的第9個條目之后是巴塞羅那,因此與特魯埃爾的多邊形相關聯。 添加參數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'))

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM