Mapas en el paquete de “Métodos para datos espaciales” (sp) en R

Para trabajar con este paquete podemos descargar la información georeferenciada de http://gadm.org/ de cualquier país, lo malo es que a mayor nivel de detalle tal como distritos existen discrepancias con la realidad. De todas maneras este paquete resulta interesante y útil a la hora de trabajar con datos georeferenciados y mucho más si son datos propios. A continuación se muestra un código para obtener el mapa de Lima por provincias directo desde el Software R.

library(sp)
peru <- readRDS("PER_adm2.rds")
# Para descargar el mapa http://gadm.org/country
# En la misma página también se puede descargar para departamentos y provincias
# solo se cambia PER_adm2.RData por PER_adm0.RData,PER_adm1.RData o PER_adm3.RData
names(peru)
# Hasta ahora el mapa y sus características están cargados en gadm por provincias
mapalima <- peru[peru@data$NAME_1 == "Lima",] # Seleccionamos las provincias de lima (polígonos y datos) Aquí tu indicaste otros números pero la data ha cambiado y esos son los actuales que tienen las provincias de lima.
datalima <- data.frame(mapalima) # Seleccionamos solo los datos de la provincias
# Los nombres de las provincias pueden ser obtenidas de 2 maneras:
datalima[7];mapalima$NAME_2;
#creamos el factor según los nombres de las provincias elegidas
mapalima$provincias <- factor(mapalima$NAME_2)
#la función factor es para eliminar los niveles que no existen
col <- rainbow(length(levels(mapalima$provincias ))) # asignamos los colores según los niveles
# mostramos el mapa
spplot(mapalima, "provincias", col.regions = col, main = "Lima Provincias")
# Además lo siguiente es por si se desea el mapa con texto (puede ser en vectores)
d1 <- list("sp.text",c(-75.99853,-11.),"Estadística")
spplot(
  mapalima, "provincias", col.regions = col, main = "Lima Provincias",sp.layout =
    list(d1)
)

El resultado del mapa es el siguiente (Por supuesto que puede ser mejorado según sus intereses):

Hecho en R con el paquete sp

Por otro lado, también se muestra ,a continuación, el código para obtener los distritos del departamento de Lima:

library(sp)
#descargamos los datos por distritos
gadm <- readRDS("PER_adm3.rds")

names(gadm)
# elegimos solo los distritos de lima
mapalima <- gadm[(gadm@data$NAME_2  == "Lima") |
                  gadm@data$NAME_3  == "Callao" | gadm@data$NAME_3  == "Ventanilla",]
dataprovlima <- data.frame(mapalima)
limageo <- mapalima[1]

distritos <- factor(mapalima$NAME_3) #la función factor es para eliminar los niveles que no existen
mapalima$distritos <- distritos# asignamos el factor

col <- rainbow(length(levels(mapalima$distritos))) # asignamos los colores según los niveles
# mostramos el mapa

spplot(mapalima, "distritos", col.regions = col, main = "Distritos del Departamento de Lima")

Espero que les sea útil =).

Advertisements

2 thoughts on “Mapas en el paquete de “Métodos para datos espaciales” (sp) en R

  1. Hola:
    He tenido problemas desde la línea spplot. Te adjunto mi código y espero que me puedas ayudar. ¡Muchas gracias!
    ############################################################
    library(sp)
    peru=readRDS(“PER_adm2.rds”)
    # Para descargar el mapa http://gadm.org/country
    # En la misma página también se puede descargar para departamentos y provincias
    # solo se cambia PER_adm2.RData por PER_adm0.RData,PER_adm1.RData o PER_adm3.RData
    str(peru)
    # Hasta ahora el mapa y sus características están cargados en gadm por provincias
    mapalima=peru[44:53,] # Seleccionamos las provincias de lima (polígonos y datos) Aquí tu indicaste otros números pero la data ha cambiado y esos son los actuales que tienen las provincias de lima.
    datalima=data.frame(mapalima) # Seleccionamos solo los datos de la provincias
    # Los nombres de las provincias pueden ser obtenidas de 2 maneras:
    datalima[7];mapalima$NAME_2;
    #creamos el factor según los nombres de las provincias elegidas
    provincias=factor(mapalima$NAME_2); provincias
    #la función factor es para eliminar los niveles que no existen
    col = rainbow(length(levels(provincias))) # asignamos los colores según los niveles
    ############################################################
    #Hasta aquí todo bien, el problema es al generar el mapa
    # mostramos el mapa
    spplot(mapalima, “provincias”, col.regions=col, main=”Lima Provincias”)
    ############################################################
    #La ssalida es
    #Error in `[.data.frame`(obj@data, zcol) : undefined columns selected
    d1=list(“sp.text”,c(-75.99853,-11.),”Estadística”)
    ############################################################
    #Pasa lo mismo con la línea:
    spplot(mapalima, “provincias”, col.regions=col, main=”Lima Provincias”,sp.layout=list(d1))
    #Error in `[.data.frame`(obj@data, zcol) : undefined columns selected

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s