#### TENGO DOS ARCHIVOS EN FORMATO SHAPEFILE QUE #### QUIERO COMBINAR EN UNO SOLO ################################################################## # 1. COMO CARGAR UN SHAPEFILE DESDE UN URL # 2. INSTALAR wget EN TU MAC # 3. COMBINAR 3 SHAPEFILES # 4. MODIFICAR LA TABLA DE CONTENIDOS DEL SHAPEFILE COMPILADO ################################################################## library(sp) # vector data library(raster) # raster data library(rgdal) # input/output, projections library(rgeos) # geometry ops library(spdep) # spatial dependence library(maptools) library(lattice) ################################################################## # tomado de: # https://stackoverflow.com/questions/19961898/append-combine-shape-files library(devtools) install_git("git://github.com/gsk3/taRifx.geo.git") library(taRifx.geo) ################################################################## # voy a leer los dos shapefiles, esto fuera mas facil si ya los # tuvieramos todos en una carpeta en nuestra computadora, en este # caso los vamos a descargar desde mi sitio Web # hago uso de este tutorial de: # http://climvis.de/how-to-use-r-package-maptools-to-read-and-display-shapefiles/ # Download Shapefile a url.a='https://alanphd.com/shapefiles/parques_hermosillo/001_at.zip' dfile='001_at.zip' download.file(url.a, destfile=dfile, method='wget') # en mi caso no tenia instalado el "wget" (soy usuario Mac) # este tutorial fue util # https://wilsonmar.github.io/macos-homebrew/ # Unzip Shapefile unzip('001_at.zip', exdir='parques') #Remove .zip file file.remove('001_at.zip') # Read Shapefile of Parques a<- readShapePoly('parques/001_at',proj4string=CRS("+proj=utm +zone=12 +north +ellps=WGS84")) # repito el procedimiento para el segundo shapefile url.b='https://alanphd.com/shapefiles/parques_hermosillo/002_at.zip' dfile='002_at.zip' download.file(url.b, destfile=dfile, method='wget') unzip('002_at.zip', exdir='parques'); file.remove('002_at.zip') b<- readShapePoly('parques/002_at',proj4string=CRS("+proj=utm +zone=12 +north +ellps=WGS84")) # repito el procedimiento para el tercer shapefile url.c='https://alanphd.com/shapefiles/parques_hermosillo/003_at.zip' dfile='003_at.zip' download.file(url.c, destfile=dfile, method='wget') unzip('003_at.zip', exdir='parques'); file.remove('003_at.zip') c1<- readShapePoly('parques/003_at',proj4string=CRS("+proj=utm +zone=12 +north +ellps=WGS84")) ################################################################## ### Ahora si combino los los shapefiles en uno solo a_b=rbind(a,b, fix.duplicated.IDs=TRUE) # graficar plot(a_b, col = 'green', axes = TRUE) ### un vistazo a los datos para ver como se identifican los poligonos a_b@data #### Combinamos ahora los dos poligonos anteriores con el tercer poligono a_b_c1=rbind(a_b,c1, fix.duplicated.IDs=TRUE) a_b_c1@data a_b_c1@polygons # cambiar nombre a poligonos a_b_c1@polygons[[1]]@ID = "a" a_b_c1@polygons[[2]]@ID = "b" a_b_c1@polygons[[3]]@ID = "c" # adiciono una variable con el area en metros cuadrados a_b_c1@data$area=as.numeric(c(a_b_c1@polygons[[1]]@area, a_b_c1@polygons[[2]]@area, a_b_c1@polygons[[3]]@area)) # elimino las variables que no necesito para simplificar # la tabla de contenidos a_b_c1@data[1:11]=NULL;a_b_c1@data # renombrar las hileras de la tabla de contenidos row.names(a_b_c1)<-c("a", "b", "c") ### Graficar plot(a_b_c1, col = 'green', axes = TRUE) ##################################################################
Combinar shapefiles
Dr. Luis Alan Navarro Navarro
Centro de Estudios en Gobierno y Asuntos Públicos
El Colegio de Sonora
El siguiente es un tutorial muy sencillo, surgió de la necesidad de querer combinar varios archivos del tipo ESRI shapefile. Aquellos familiarizados con los Sistemas de Información Geográfica, saben que este es el formato más común para almacenar datos georeferenciados. El problema fue que recibí una carpeta con 112 shapefiles, cada archivo contenía un polígono que representaba el área total de un parque urbano de la ciudad de Hermosillo, Sonora. Aunque desde un principio se pudieron haber creado dentro de un mismo archivo, no siempre es el caso.
El siguiente tutorial muestra el poder de R para el manejo de datos, lo que no deja de sorprenderme y es la razón por la que publico este tutorial, es que, en más de 10 años que llevo manejando este programa, siempre he encontrado la respuesta y solución a todas mis dudas, gratuitamente en Internet. Por lo que es importante que todos contribuyamos a este acervo libre y gratuito de conocimiento.
R code