You are on page 1of 7

Taller: Creaci on de mapas en formato shape.

shp
de ESRI, con
paul.dassori@lavabit.com
9 de octubre de 2013
Resumen
El proyecto R-cran[1] provee diferentes paquetes y funciones geoespa-
ciales que permiten la elaboraci on de mapas con las capas en formato
shape de ESRI. En este manual desarrollamos paso a paso, las lneas de
comandos adecuadas para obtener cada elemento b asico de un mapa (Le-
yenda, Titulo, Norte, Escala, etc.). El programa R permite crear mapas
desde niveles b asicos hasta otros muy complejos, conform andose como una
herramienta alternativa de software libre en el ambiente de los Sistemas
de Informacion Geogr aca (S.I.G.).
Palabras Claves: software libre, R, SIG, shape.shp, estadstico
1. Requerimientos
1. Nivel en R: Conocimientos primarios que permitan instalar libreras, y el
concepto de capa vectorial.
2. Nivel en S.I.G.: Familiaridad con el formato vectorial (*.shp) y sus com-
ponentes asociados.
3. Datos: Capas en formato shape (*.shp) con sus archivos asociados (*.dbf ),
(*.shx), como mmino para que puedan ser ledos en R.
4. Paquetes (libreras): se deben tener instaladas las siguientes,
class
classInt: Creador de clases/categoras ordinales separadas por quantiles.
e1071
maptools[2] : Herramientas para leer y editar objetos espaciales.
RColorBrewer[3]: Paletas de colores especiales para mapas tematicos.
rgdal[4]: interface a GDAL analisis de datos geogracos.
1
Creacion de mapas en formato shape de ESRI, con R paul.dassori@gmail.com 2
sp[5]: librera base para cualquiera otro paquete de analisis espacial de
datos.
2. Archivos en formato vectorial Shape
Un archivo en formato shape.shp representa una lista de objetos espaciales
- puntos, lneas o polgonos- y cada objeto de la lista puede tener asociada una
serie de tipos diferentes de variables.
El conjunto de archivos de un shape esta formado por una coleccion de ar-
chivos de textos, por ejemplo:
misdatos.shp
misdatos.prj
misdatos.sbn
misdatos.dbf
misdatos.shx
Todos los componentes de la lista se presentan con el mismo nombre como
el ejemplo anterior misdatos, pero con diferentes extensiones. Para referirse a
esta coleccion de archivos se usa el nombre con la extension (*.shp), por ejemplo
misdatos.shp.
3. Objetivo
Desarrollar un mapa de tipo Choropleth, representando alguna de las va-
riables relacionadas a las subcuencas para las regiones de Los Ros y Los Lagos,
Chile.
Para esto se debe realizaran algunos calculos de las mismas, por ejemplo el

Indice
de compacidad: Tambien denominado coeciente de compacidad o de Graveli us,
denida como la relacion entre el permetro de la cuenca y el permetro de un
crculo de area equivalente.
Cuya formula es:
k
c
=
P
2

A
Donde:
P = Permetro de la cuenca
A =

Area de la cuenca
4. Archivos requeridos
En este ejemplo se va a nesecitar un archivos en formato shape, a continua-
cion una breve descripcion:
Nombre Objeto Espacial Registros Campos
subcuencas(SIARX) Polgonos 70 9
Creacion de mapas en formato shape de ESRI, con R paul.dassori@gmail.com 3
5. Lneas de comandos en R

Inicie el programa R o en su defecto alg un otro que entregue una inter-


face mas amigable que la terminal o shell propia de R, se recomienda RS-
tudio (version 0.98el cual puedes bajar e instalar desde el siguiente enlace
http://www.rstudio.org para las diferentes plataformas de sistemas opera-
tivos.
Cada serie de comandos seran numerados correlativamente, precedidos por co-
mentarios ndicados por el smbolo (#).
Antes de comenzar a crear un scrip en R, es recomendable mediante una
cabezera de comentarios identicarlos con algunos parametros para mantener
una organizacion de nuestros scrips a futuro.
#title : Mapas de

Indices de Compacidad, Regiones de Los Ros y Los
Lagos. Chile
#purpose : Dise~nar mapa tipo Choropleth para diferentes polgonos
analizados.
#author : paul.dassori@gmail.com (iv, 2013)
#input : Shapes en formato Esri (.shp).
#output : Mapas formato (pdf o png).
#reference: https://sites.google.com/site/eospansite/alobotips/spatial_
r_tips/rshp_xls
#1. Nos posicionamos en el directorio de trabajo, donde esta el
conjunto de archivos -*.shp
> setwd("/Directorio/SIG/donde/estan/archivos/shapes")
#2. Cargamos las libreras o paquetes necesari@s
> library(classInt)
> library(maptools)
> library(RColorBrewer)
> library(rgdal)
> library(sp)
#3. Leer shapes ESRI y se asigna a una variable.
> Scuenca = readOGR(dsn = ".", layer = "subcuencas(SIARX)")
Si R lee sin errores los archivos shape, entregara un mensaje como el siguiente,
tomando como ejemplo el shape al cual le hemos asignado la variable de nombre
Scuenca:
OGR data source with driver: ESRI Shapefile
Source: ".", layer: "subcuencas(SIARX)"
with 70 features and 7 fields
Feature type: wkbPolygon with 2 dimensions
Claramente nos se nala que el archivo esta formado por 70 registros y 7 campos,
los cuales corresponden a polgonos de dos dimensiones.
Creacion de mapas en formato shape de ESRI, con R paul.dassori@gmail.com 4
#4. Ver la estructura de la base de datos asociada a cada capa shape.
Ejemplo para el shape Scuenca.
> str(Scuenca@data)
data.frame: 70 obs. of 7 variables:
$ AREA : num 495000 864400 341000 290900 646000 ...
$ PERIMETER : num 303433 115054 287874 123979 194423 ...
$ SUBCUEN : num 2 3 4 5 6 7 8 9 10 11 ...
$ SUBCUEN ID: num 1 2 3 4 5 6 7 8 9 10 ...
$ CODCUEN : Factor w/ 11 levels "0100","0101",..: 2 1 2 1 2 2 2 3 4
3 ...
$ CODSUBC : Factor w/ 51 levels "01000","010010",..: 6 1 3 2 4 5 7
8 12 9 ...
$ NOMSUB : Factor w/ 51 levels "Afluentes Lago Ranco",..: 33 36 48
3 47 28 49 14 1 29 ...
#5. Ver los primeros seis registros de la base de datos. Ejemplo
para el shape Scuenca.
> head(Scuenca@data)
AREA PERIMETER SUBCUEN SUBCUEN ID CODCUEN
0 495000 303433.0 2 1 0101
1 864400 115053.6 3 2 0100
2 341000 287874.1 4 3 0101
3 290900 123979.3 5 4 0100
4 646000 194422.8 6 5 0101
5 638000 190511.8 7 6 0101
CODSUBC NOMSUB
0 01013 Rio Cruces
1 01000 Rio Lingue
2 01010 Rio Valdivia Alto (hasta desague Lago Panguipulli
3 010010 Costera entre Rio Lingue y Rio Valdivia
4 01011 Rio San Pedro (L Panguipulli y Bajo R Quinchilca)
5 01012 Rio Calle Calle
#6. Mas informacion se puede ver con la funcion ogrInfo(), como la
proyeccion geografica, datum, CRS y lmites.
> ogrInfo(".", "subcuencas(SIARX)")
Source: ".", layer: "subcuencas(SIARX)"
Driver: ESRI Shapefile number of rows 70
Feature type: wkbPolygon with 2 dimensions
Extent: (513404 5147965) - (792692.9 5649714)
CRS: +proj=utm +zone=18 +south +ellps=intl +units=m +no defs
LDID: 87
Number of fields: 7
Creacion de mapas en formato shape de ESRI, con R paul.dassori@gmail.com 5
name type length typeName
1 AREA 2 13 Real
2 PERIMETER 2 13 Real
3 SUBCUEN 2 11 Real
4 SUBCUEN ID 2 11 Real
5 CODCUEN 4 12 String
6 CODSUBC 4 10 String
7 NOMSUB 4 59 String
A continuacion se obtienen las coordenadas (x,y) del centrode de los polgo-
nos, se destaca que esta misma funcion se puede aplicar a una base de puntos,
dicha informacion nos permite ubicar etiquetas, smbolos u otro elemento dentro
de los polgonos.
#7. Obtener las coordenadas de los centrodes de cada polgono, agregamos
una columna de nombre centroids.
> Scuenca$centroids <- coordinates(Scuenca)
#8.

Indice de compacidad: (Relacion entre Permetro y

Area)
https://es.wikipedia.org/wiki/Cuenca_hidrogr%C3%A1fica
> Scuenca$Kc <- (Scuenca$PERIMETER)/(2*sqrt(pi*Scuenca$AREA))
#9 Asignamos la paleta de colores, en este caso "Oranges", opciones:
Blues, BuGn, BuPu, GnBu, Greens, Greys, Oranges, OrRd, PuBu, PuBuGn,
PuRd, Purples, RdPu, Reds, YlGn, YlGnBu, YlOrBr, YlOrRd
> colors <- rev(brewer.pal(9, "Oranges"))
#10 Asignamos el quiebre (9 rangos) del campo a mostrar, en este caso
Kc (I. compacidad), y elegimos el metodo "quantile"
> brks <- classIntervals(Scuenca$Kc, n=9, style = "quantile")
> brks <- brks$brks
6. Mapa nal o (Layout)
A continuacion ya estamos en condiciones de desplegar el mapa nal, si
deseamos guardar el mapa en formato de *.pdf solo debemos eliminar el smbo-
lo de comentario (#) ubicado antes de la funcion pdf() donde se le da nombre
y ubicacion al mismo, y la funcion dev.o() en la lnea nal de codigo.
#11 Guardar el mapa para tama~no de hoja en formato *.PDF o *.PNG, en
ese caso levantamos el smbolo de comentarios que corresponda.
> #pdf(file = "/home/Escritorio/Mi primer mapa100213.pdf")
Creacion de mapas en formato shape de ESRI, con R paul.dassori@gmail.com 6
> #png(file = "/home/Escritorio/Mi primer mapa100213.png")
> plot.new()
> par(new=T)
> plot(Scuenca, border = TRUE, col = colors[findInterval(Scuenca$Kc,
brks, all.inside=TRUE)], axes = T, xlim = c(600000, 790000), ylim =
c(5150000, 5650000))
# 11.a Este plot es una opcion si se quieren los bordes del mismo color
interno de los polgonos, o tambien puede ser border = "gray69".
> #plot(Scuenca, border = colors[findInterval(CHL$AREA, brks,all.inside=TRUE)],col=
colors[findInterval(CHL$AREA, brks,all.inside=TRUE)], axes = F, xlim
=c(600000, 790000), ylim= c(5450000, 5650000))
#12 Sobreponer puntos en funcion del tama~no de las superficies, util
para representar variables como tama~no de poblacion, aca se da tan
solo como ejemplo.
> points(Scuenca$centroids, cex=sqrt(Scuenca$AREA/1000000), col="red",
pch=19, xlim = c(600000, 790000), ylim = c(5150000, 5650000))
#12.a Otro ejemplo :P
> #points(Scuenca$centroids, cex=(Scuenca$Kc/100000), col="red", pch=19,
xlim = c(600000, 790000), ylim = c(5150000, 5650000))
# 13 Agregamos la Leyenda, Ttulo, Norte y Escala
> text(460000, 5430000, "

Indice de Compacidad")
> legend(x=400000, y=5428000, legend=leglabs(round(brks), under="<",
over=">"), fill=colors, bty="n", x.intersp = 1, y.intersp = 1)
> title("Subcuencas de la Region de los Ros y Los Lagos,Chile (abril,
2013)", cex.main = 1, font.main= 3, col.main= "black")
> SpatialPolygonsRescale(layout.north.arrow(1), offset= c(775000,5635000),
scale = 30000, plot.grid=F)
> SpatialPolygonsRescale(layout.scale.bar(), offset= c(775000,5194000),
scale= 50000, fill=c("transparent", "black"), plot.grid= F)
> text(798000, 5188000, "50 kilometros", cex= 0.8)
> text(Scuenca$centroids[, 1], Scuenca$centroids[, 2], Scuenca$NOMSUB,
cex=0.4)
# 14 Otros elementos del mapa.
> text(590500, 5160000, "Datum: WGS84 18H Sur; Coordenadas UTM", cex=
0.444)
> text(590500, 5150000, "Autor: paul.dassori@gmail.com (Abril, 2013)",
cex= 0.444)
Creacion de mapas en formato shape de ESRI, con R paul.dassori@gmail.com 7
> text(590300, 5140000, "Software: R Core Team (2013)", cex= 0.444)
#15 Ahora guarda en *.pdf o *.png, se debe eliminar el smbolo de comentarios.
> # dev.off()
Salida plot de todo el ejercicio anterioR.
Referencias
[1] R Core Team. 2013. R: A languaje and Environment for Statisical Com-
puting. R Foundation for Statistical Computing. Vienna, Austria. http:
//www.R-project.org
[2] Roger Bivand and Nicholas Lewin-Koh. 2013. maptools: Tools for reading
and handling spatial objects. R package version 0.8-26. http://CRAN.
R-project.org/package=maptools
[3] Erich Neuwirth. 2011. RColorBrewer: ColorBrewer palettes. R package ver-
sion 1.0-5. http://CRAN.R-project.org/package=RColorBrewer
[4] Roger Bivand, Tim Keitt and Barry Rowlingson. 2013. rgdal: Bindings for
the Geospatial Data Abstraction Library. R package version 0.8-9. http:
//CRAN.R-project.org/package=rgdal
[5] Pebesma, E.J., R.S. Bivand. 2005. Classes and methods for spatial data in
R. R News 5 (2), http://cran.r-project.org/doc/Rnews/.

You might also like