He creado 2 polígonos en QGIS. Al usarlos en R, los polígonos se convierten automáticamente en SpatialPolygonsDataFrame (SPDF). Me gustaría fusionarlos en un solo SPDF (como es muy fácil en ArcGis usando Tool Merge ). Estoy seguro de que debería haber una manera simple de cómo completar eso en R, pero no puedo encontrar cómo. la función de fusión parece fusionar solo data.frames, la función de agregado disuelve múltiples polígonos en un shp, gIntersect (al escribir la función de unión) devuelve un valor lógico, en absoluto el SPDF.
Los datos están disponibles aquí: 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
fuente
fuente
Respuestas:
Si no necesita fusionar la topología, pero solo agrega nuevos polígonos, simplemente puede usar:
ab <- rbind(a,b)
Si obtiene un error de "valores de ranura de ID de polígonos no únicos", significa que los nombres de fila de los objetos son los mismos. Para solucionar esto, puede usar spChFID para cambiar los nombres de fila y las relaciones de ranura asociadas. Dado que las ranuras en el objeto usan los nombres de fila para asociar el objeto, no puede simplemente cambiar row.names en la ranura @data.
La función union (union_sp) en el paquete ráster está haciendo esto y llamando a gIntersects desde rgeos, detrás de escena y es una función auxiliar muy conveniente.
**** Editar 08-06-2018 Hay un argumento no documentado que se puede utilizar para omitir el problema de la ID duplicada.
fuente
ab <- bind(a, b)
para evitar ese errorSolución súper fácil proporcionada por @mdsumner:
resultó en :
fuente
raster::union
funciona para la clase SpatialLinesDataFrame!fuente