Obrigado. Mas o ID da coluna possui valores exclusivos que podem ser usados como o campo de junção. As entradas do campo devem ter o mesmo comprimento?
user3915459
Você poderia postar uma amostra do seu mapa e CSV?
Cengel
@cengel É um enorme conjunto de dados e uma captura de tela não será suficiente para mostrar as variações. O campo "ID" no shapefile "map" é uma sequência de números (com vários números de dígitos).
user3915459
Talvez salve o CSV em uma tabela, para que você saiba que os campos de junção são do mesmo tipo de dados.
klewis
Respostas:
7
Aqui está como você pode fazer isso em R usando sp::merge
library(raster)# read data
p <- shapefile("path/file.shp")
d <- read.csv("path/file.csv")# merge on common variable, here called 'key'
m <- merge(p, d, by='key')# perhaps save as shapefile again
shapefile(m,"path/merged.shp")
Olá @RobertH, fui enviado aqui da pergunta que publiquei ontem. Quando mesclo pela variável comum, puxo essa variável do shapefile ou do CSV? As duas variáveis estão correspondendo no conteúdo, mas não pelo nome. Eu tentei brincar com ele um pouco e continuo recebendo erros (principalmente: Erro no [.data.frame(x @ dados, by.x, gota = false): Colunas indefinidos selecionado)
Lauren
1
Descobri isso. Como eu precisava juntar as duas camadas que tinham nomes diferentes, tive que alterar um pouco o formato. Parecia mais merge (p, d, by.x = "chave", by.y = "matching.key")
Lauren
3
Eu não sei como fazer com R para ingressar em um shapefile com um CSV. No entanto, se isso puder ajudá-lo, você também poderá fazer isso no QGIS usando o pluggin MMQGIS.
Obrigado. Eu tentei com o ArcGIS antes, mas o conjunto de dados é enorme e eu prefiro fazer isso em R.
user3915459
2
Se você estiver trabalhando no R, seu shapefile e .csv precisam ser carregados como data.frame ou data.table. Você pode usar join () para mesclá-los.
Você tem mais informações sobre que tipo de shapefile você possui?
Tive sorte ao fazer o seguinte quando mesclo shapefiles e dados. Observe que você precisa deixar a extensão .shp no argumento "layer". Eu usei "GEOID" onde você colocaria qualquer que seja o nome da "forma" em interesse.
library("rgdal")
library("data.table")
shapefile = readOGR(dsn ="DIRECTORY WITH SHAPEFILES", layer ="THE ACTUAL SHAPEFILE")
shapefile@data$id = rownames(shapefile@data)
shapefile.points = fortify(shapefile, region ="id")
shapefile.df = join(shapefile.points, shapefile@data, by ="id")
shapefile.df = subset(shapefile.df, select = c(long, lat, group, GEOID))
names(shapefile.df)= c("long","lat","group","GEOID")
Em seguida, você pode mesclar seus dados usando algo como
full.data = join(mydata, shapefile.df, by ="GEOID", type ="full")
Se você estiver trabalhando em R, a mesclagem não é realmente necessária. Você pode usar o ggplot para exibir seus dados em um mapa. Veja, meu exemplo. Este forro faz maravilhas com arquivo de forma bangladesh = fortify(p1, region = "ADM1_EN"). E então você pode usar
ggplot()+ geom_map(data = br2016a, aes(map_id = ADM1_EN, fill = HectareLocal),
map =bangladesh)+
expand_limits(x = bangladesh$long, y = bangladesh$lat)+
coord_fixed(.96)+
scale_fill_gradient(low="thistle2", high="darkred",
guide="colorbar", na.value="white")+
labs(title ="Bangladesh Boro Rice (Local variety), 2016", x = element_blank(), y = element_blank(),
fill='Hectares')+ theme(legend.position ="bottom")
Respostas:
Aqui está como você pode fazer isso em R usando
sp::merge
fonte
[.data.frame
(x @ dados, by.x, gota = false): Colunas indefinidos selecionado)Eu não sei como fazer com R para ingressar em um shapefile com um CSV. No entanto, se isso puder ajudá-lo, você também poderá fazer isso no QGIS usando o pluggin MMQGIS.
fonte
Se você estiver trabalhando no R, seu shapefile e .csv precisam ser carregados como data.frame ou data.table. Você pode usar join () para mesclá-los.
Você tem mais informações sobre que tipo de shapefile você possui?
Tive sorte ao fazer o seguinte quando mesclo shapefiles e dados. Observe que você precisa deixar a extensão .shp no argumento "layer". Eu usei "GEOID" onde você colocaria qualquer que seja o nome da "forma" em interesse.
Em seguida, você pode mesclar seus dados usando algo como
fonte
Se você estiver trabalhando em R, a mesclagem não é realmente necessária. Você pode usar o ggplot para exibir seus dados em um mapa. Veja, meu exemplo. Este forro faz maravilhas com arquivo de forma
bangladesh = fortify(p1, region = "ADM1_EN")
. E então você pode usarE o mapa que recebo está aqui.
fonte