Actualmente poseo un shapefile que consta de >5000 polígonos. Me gustaría saber, para cada polígono, ¿con cuántos otros polígonos se cruza y los nombres de cada polígono con el que se cruza?
Mi salida debería ser algo así:
Sobre la base de esta pregunta y @JeffreyEvans sugerencia sobre el uso de gIntersects, he intentado lo siguiente a continuación. Pero, el proceso ha estado funcionando continuamente sin parar durante las últimas 5 horas. ¿Alguna sugerencia?
Aquí está el código que he ejecutado en R:
require(rgdal)
library(maptools)
library(rgeos)
library(GISTools)
Poly <- readOGR("C:\\Users\\rameshv\\Terrestrial_dissolved_multipart.shp")
Poly_join <- gIntersects(Poly)
EDITAR
He podido resolver parte de mi propia pregunta. Sin embargo, sigo sin tener claro cómo escribir una lista de nombres separados por comas en cada fila. A partir de ahora, tengo un bucle que leer en cada shapefile, comprueba si hay una intersección con un gran polígonos espaciales marco de datos e imprime un marco de datos y el número de polígonos que se cruza con.
library(rgdal)
library(GISTools)
library(sp)
library(raster)
##List all the shapefiles
shapes <- list.files(path = "C:\\Users\\rameshv\\Desktop\\Output_All\\", pattern=".shp$", full.names=TRUE)
head(shapes)
##Read in the big spatial polygons dataframe - this contains ALL MAMMALS
Big <-readOGR("C:\\Users\\rameshv\\Desktop\\Ranges_Overlap\\multipart.shp")
for (i in 1:length(shapes)){
a <- readOGR(shapes[i])
o <- over(a, Big,returnList = T)
s <- o[[1]]
count <- length(s$binomial)-1
a$binomial <- as.character(a$binomial)
results <- data.frame(a$binomial,count)
write.table(results,file="C:\\Users\\rameshv\\Desktop\\overlapfile_Final.csv", row.names=F,append = TRUE, col.names = F, sep = ",")
}
¿Alguna idea?