Eu criei 2 polígonos no QGIS. Utilizando-os em R, os polígonos se tornam automaticamente SpatialPolygonsDataFrame (SPDF). Gostaria de mesclá-los em um único SPDF (como é super fácil no ArcGis usando a ferramenta Mesclar ). Estou certo de que deve haver uma maneira simples de concluir isso em R, mas não consigo encontrar como. a função de mesclagem parece mesclar apenas data.frames, a função agregada dissolve vários polígonos em um shp, gIntersect (digitando a função de junção) retorna o valor lógico, não o SPDF.
os dados estão disponíveis aqui: http://ulozto.cz/xpoo5jfL/ab-zip
library(sp)
library(raster)
library(rgeos)
library(spatstat)
library(rgdal)
library(maptools)
setwd("C:/...")
a<-readOGR(dsn=getwd(), layer="pol.a")
b<- readOGR(dsn=getwd(), layer="pol.b")
ab<-merge(a, b) # what tool if not "merge" to use??
r
spatial-analyst
merge
maptools
maycca
fonte
fonte
Respostas:
Se você não precisar mesclar a topologia, mas apenas adicionar novos polígonos, poderá simplesmente usar:
ab <- rbind(a,b)
Se você receber um erro "Valores não exclusivos do slot de ID da Polygons", significa que os nomes de nomes de objetos dos mesmos são os mesmos. Para corrigir isso, você pode usar spChFIDs para alterar os nomes de nomes de domínio e os relacionamentos de slot associados. Como os slots no objeto usam os nomes de nomes para associá-lo, não é possível alterar row.names no slot @data.
A função union (union_sp) no pacote raster está fazendo isso e chamando gIntersects de rgeos, nos bastidores e é uma função auxiliar muito conveniente.
**** Edit 08-06-2018 Há um argumento não documentado que pode ser usado para ignorar o problema de identificação duplicada.
fonte
ab <- bind(a, b)
para evitar esse erroSolução super fácil fornecida por @mdsumner:
resultou em :
fonte
raster::union
funciona para a classe SpatialLinesDataFrame!fonte