##################################################################
# /////////////////////////////////CARGAR ESTOS PROGRAMAS
Packages <- c("sp","sf","rgdal","maptools","raster","spatialEco","dplyr", "ggplot2")
lapply(Packages, library, character.only = TRUE)
library(extrafont)
library(xkcd)
library(ggthemes)
library(scales)
# //////////////////////////////////////////CARGAR DATOS
# ARCHIVOS EN FORMATO ESRI-SHP DESCARGADOS DEL SITIO DE CONABIO
# SISTEMA DE COORDENADAS GEOGRÁFICAS LAT-LONG WGS84
proy_GCS<- "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"
# /////////////////////////////////////////////////////////////Climas
setwd('/Datos GIS varios/clima1mgw') # USA LA RUTA A TU FICHERO
climas<- readShapePoly("clima1mgw.shp", proj4string=CRS("+proj=longlat"))
projection(climas) <- proy_GCS
# ////////////////////////////////////////////////Poblaciones (2010)
setwd('/Datos GIS varios/unikloc10gw') # USA LA RUTA A TU FICHERO
CitiesPts<- readShapePoints("unikloc10gw.shp", proj4string=CRS("+proj=longlat"))
projection(CitiesPts) <- proy_GCS
# ////////////////////////////////////////////////México país polígono
setwd('/Datos GIS varios/contdv250kgw') # USA LA RUTA A TU FICHERO
mexico<- readShapePoly("contdv250kgw.shp", proj4string=CRS("+proj=longlat"))
projection(mexico) <- proy_GCS
# ////////Modificamos la ubicación de estas localidades
shapefile <- add.xy(shapefile)
# Mexicali, -115.46742,32.65982 ; -114.76273,32.47288 San Luis Ro; Saltillo -101.00058,25.43285
which(CitiesPts@data$NOM_LOC == "Mexicali")
CitiesPts@coords[3699,1] = -115.46742 ; CitiesPts@coords[3699,2] = 32.65982
# San Luis Río Colorado
CitiesPts@data[151824,]; CitiesPts@coords[151824,1] = -114.76273 ; CitiesPts@coords[151824,2] = 32.47288
# Saltillo
CitiesPts@data[14855,];CitiesPts@coords[14855,1] = -101.00058 ; CitiesPts@coords[14855,2] = 25.43285
# ////////////////////////////////////// ANALIZAMOS CLIMAS /////////
tipos_clima= unique(climas@data$CLIMA_TIPO);sort(tipos_clima) #Factor
tipos_clima=as.character(tipos_clima); sort(tipos_clima) # As string
# Climas BW y BS
pattern <- "BW|BS"
arido_semiaridos=tipos_clima[grep(pattern, tipos_clima)]
length(arido_semiaridos) # 25 categorías
### Solo BWh o Árido cálido
pattern <- "^BWh|^BW\\(h\\'"
climas_arido_calido=tipos_clima[grep(pattern, tipos_clima)]; climas_arido_calido
length(climas_arido_calido) # 6 categorías
### Solo BWk o Árido templado
pattern <- "^BWk"
climas_arido_frio=tipos_clima[grep(pattern, tipos_clima)]; climas_arido_frio
length(climas_arido_frio) # 3 categorías
### Solo BSk o Semi-árido templado
pattern <-"^(?=.*BS)(?!.*h)"
climas_semiarido_k=tipos_clima[grep(pattern, tipos_clima, perl=TRUE)]; climas_semiarido_k
length(climas_semiarido_k) # 7
### Solo BSh o Semi-árido cálido
pattern <-"^(?=.*BS)(?!.*k)"
climas_semiarido_c=tipos_clima[grep(pattern, tipos_clima, perl=TRUE)]; climas_semiarido_c
length(climas_semiarido_c) # 9
# /////////////////////////////MAPA: SUBCONJUNTO POR TIPO DE CLIMAS/////////
arido_semiaridos # Tipos de clima árido y semiárido
# BWh, BWk, BSh y BSk, respectivamente.
climas_arido_calido; climas_arido_frio; climas_semiarido_c; climas_semiarido_k
# /////////////////////////////// MAPA 1 CLIMAS ARIDOS Y SEMIARIDOS /////////
climas_aridos=climas[which(climas@data$CLIMA_TIPO %in% arido_semiaridos),]
names(climas_aridos@data) ; climas_aridos@data$CLIMA_TIPO
# //////CREAMOS UNA VARIABLE CON LA CLASIFICACIÓN SIMPLE DE Köppen–Geiger
climas_aridos@data$tipoKG = ifelse(climas_aridos@data$CLIMA_TIPO %in% climas_arido_frio, "BWk",
ifelse(climas_aridos@data$CLIMA_TIPO %in% climas_semiarido_c, "BSh",
ifelse(climas_aridos@data$CLIMA_TIPO %in% climas_semiarido_k, "BSk",
"BWh")))
# VERIFICAMOS ALGUNOS
climas_aridos@data$tipoKG
climas_aridos@data$tipoKG[307]; climas_aridos@data$CLIMA_TIPO[307]
climas_aridos@data$tipoKG[260]; climas_aridos@data$CLIMA_TIPO[260]
climas_aridos@data$tipoKG[140]; climas_aridos@data$CLIMA_TIPO[140]
climas_aridos@data$tipoKG[10]; climas_aridos@data$CLIMA_TIPO[10]
# BWh #ed462f BWk #f29494 BSh #f5a331 BSk #fddb62
climas_aridos@data$colores = ifelse(climas_aridos@data$CLIMA_TIPO %in% climas_arido_frio, "#f29494",
ifelse(climas_aridos@data$CLIMA_TIPO %in% climas_semiarido_c, "#f5a331",
ifelse(climas_aridos@data$CLIMA_TIPO %in% climas_semiarido_k, "#fddb62",
"#ed462f")))
# /////////////////////////////////////////MAPA 1 /////////
plot(mexico, axes=T, col=NA, border="gray")
plot(climas_aridos, axes=T, col=climas_aridos@data$colores, border=NA, add = TRUE)
legend("topright", as.character(unique(climas_aridos@data$tipoKG)), fill = unique(climas_aridos@data$colores),
box.col="gray", inset=.02, title="Clima (Köppen–Geiger):")
# /////////////////////////////////////////TERMINA MAPA 1 /////////
# //////////////////////////////////ANALIZAMOS EL ARCHIVO DE CIUDADES /////////
names(CitiesPts@data)
head(CitiesPts@data)
unique(CitiesPts@data$Urb_Rur)
# [1] Urbana >= 15000; Rural (< 5000 habitantes)
# 5000 <= Mixta rural<10000; 10000 <= Mixta urbana < 15000
CitiesPts@data[1,]
urbanas <- subset(CitiesPts, Urb_Rur == "Urbana" | Urb_Rur =="Mixta urbana")
names(urbanas@data); unique(urbanas@data$Urb_Rur)
table(urbanas@data$Urb_Rur) # Mixta Urbana 300; Urbana 630
aggregate(urbanas@data$POBTOT, by=list(Category=urbanas@data$Urb_Rur), FUN=sum)
# Category x
# 1 Mixta urbana 3,664,946
# 2 Urbana 70,179,136
70179136+3664946
# 73844082 o casi 74 millones de personas, vivían en zonas urbanas el año 2010
urbanas@data$punto_t = ifelse(urbanas@data$Urb_Rur == "Urbana", 19, 18)
urbanas@data$colores = ifelse(urbanas@data$Urb_Rur == "Urbana", "#663300", "#cc00cc")
# /////////////////////////////////////////MAPA 2 /////////
plot(mexico, axes=T, col=NA, border="gray")
plot(urbanas, pch=urbanas@data$punto_t, cex= 0.5, col = urbanas@data$colores, add = TRUE)
legend("topright", as.character(unique(urbanas@data$Urb_Rur)),
col =unique(urbanas@data$colores), pch=c(19,18),
box.col="gray", inset=.02, title="Localidad")
# /////////////////////////////////////////TERMINA MAPA 2 /////////
# /////////////////////////////UN MAPA PARA CADA TIPO DE CLIMA /////////
# BWh
climas_arido_calido
climas_BWh=climas_aridos[which(climas_aridos@data$CLIMA_TIPO %in% climas_arido_calido),]
urbanas_BWh = urbanas[!is.na(over(urbanas,as(climas_BWh,"SpatialPolygons"))),]
names(urbanas_BWh@data)
urbanas_BWh@data$POBTOT[47]
sum(urbanas_BWh@data$POBTOT)
table(urbanas_BWh@data$Urb_Rur) # Mixta Urbana 12; Urbana 37
aggregate(urbanas_BWh@data$POBTOT, by=list(Category=urbanas_BWh@data$Urb_Rur), FUN=sum)
# Category x
# 1 Mixta urbana 149611
# 2 Urbana 4620228
# /////////////////////////////////////////MAPA 3 /////////
plot(mexico, axes=T, col=NA, border="gray")
plot(climas_BWh, axes=T, col=unique(climas_BWh@data$colores), border=NA, add = TRUE)
plot(urbanas_BWh, col=c("#663300", "#000000"), pch=unique(urbanas_BWh@data$punto_t), cex=0.5, add = TRUE)
title(main = "Zonas urbanas con clima \u{E1}rido c\u{E1}lido")
legend("topright",
legend = c(as.character(unique(urbanas@data$Urb_Rur)), "BWh"),
col =c(unique(urbanas@data$colores), unique(climas_BWh@data$colores)),
pch=c(19,18, NA),
fill =c(NA, NA,unique(climas_BWh@data$colores) ),
border = c(NA,NA,NA),
box.col="gray", inset=.02, title="Simbología")
# /////////////////////////////////////////TERMINA MAPA 3 /////////
# BWk
climas_arido_frio
climas_BWk=climas_aridos[which(climas_aridos@data$CLIMA_TIPO %in% climas_arido_frio),]
names(climas_BWk@data)
urbanas_BWk = urbanas[!is.na(over(urbanas,as(climas_BWk,"SpatialPolygons"))),]
dim(urbanas_BSk) # 95
which(urbanas@data$NOM_LOC == "Ensenada")
urbanas@data[8,]
names(urbanas_BWk@data)
urbanas_BWk@data$NOM_LOC
table(urbanas_BWk@data$Urb_Rur) # Mixta Urbana 0; Urbana 2
aggregate(urbanas_BWk@data$POBTOT, by=list(Category=urbanas_BWk@data$Urb_Rur), FUN=sum)
# Category x
# 1 Mixta urbana 0
# 2 Urbana 1337298
# /////////////////////////////////////////MAPA 4 /////////
plot(mexico, axes=T, col=NA, border="gray")
plot(climas_BWk, axes=T, col=unique(climas_BWk@data$colores), border=NA, add = TRUE)
plot(urbanas_BWk, col=c("#663300", "#000000"), pch=unique(urbanas_BWh@data$punto_t), cex=0.5, add = TRUE)
title(main = "Zonas urbanas con clima \u{E1}rido templado")
legend("topright",
legend = c(as.character(unique(urbanas@data$Urb_Rur)), "BWk"),
col =c(unique(urbanas@data$colores), unique(climas_BWk@data$colores)),
pch=c(19,18, NA),
fill =c(NA, NA,unique(climas_BWk@data$colores) ),
border = c(NA,NA,NA),
box.col="gray", inset=.02, title="Simbología")
# /////////////////////////////////////////TERMINA MAPA 4 /////////
# BSh
climas_semiarido_c
climas_BSh=climas_aridos[which(climas_aridos@data$CLIMA_TIPO %in% climas_semiarido_c),]
names(climas_BSh@data)
urbanas_BSh = urbanas[!is.na(over(urbanas,as(climas_BSh,"SpatialPolygons"))),]
table(urbanas_BSh@data$Urb_Rur) # Mixta Urbana 36; Urbana 76
aggregate(urbanas_BSh@data$POBTOT, by=list(Category=urbanas_BSh@data$Urb_Rur), FUN=sum)
# Category x
# 1 Mixta urbana 432833
# 2 Urbana 8803147
# /////////////////////////////////////////MAPA 5 /////////
plot(mexico, axes=T, col=NA, border="gray")
plot(climas_BSh, axes=T, col=unique(climas_BSh@data$colores), border=NA, add = TRUE)
plot(urbanas_BSh, col=c("#663300", "#000000"), pch=unique(urbanas_BSh@data$punto_t), cex=0.7, add = TRUE)
title(main = "Zonas urbanas con clima Semi\u{E1}rido c\u{E1}lido ")
legend("topright",
legend = c(as.character(unique(urbanas@data$Urb_Rur)), "BSh"),
col =c(unique(urbanas@data$colores), unique(climas_BSh@data$colores)),
pch=c(19,18, NA),
fill =c(NA, NA,unique(climas_BSh@data$colores) ),
border = c(NA,NA,NA),
box.col="gray", inset=.02, title="Simbología")
# /////////////////////////////////////////TERMINA MAPA 5 /////////
# BSk
climas_semiarido_k
climas_BSk=climas_aridos[which(climas_aridos@data$CLIMA_TIPO %in% climas_semiarido_k),]
names(climas_BSk@data)
urbanas_BSk = urbanas[!is.na(over(urbanas,as(climas_BSk,"SpatialPolygons"))),]
table(urbanas_BSk@data$Urb_Rur) # Mixta Urbana 27; Urbana 68
aggregate(urbanas_BSk@data$POBTOT, by=list(Category=urbanas_BSk@data$Urb_Rur), FUN=sum)
# Category x
# 1 Mixta urbana 330038
# 2 Urbana 11150847
# /////////////////////////////////////////MAPA 6 /////////
plot(mexico, axes=T, col=NA, border="gray")
plot(climas_BSk, axes=T, col=unique(climas_BSk@data$colores), border=NA, add = TRUE)
plot(urbanas_BSk, col=c("#663300", "#000000"), pch=unique(urbanas_BSk@data$punto_t), cex=0.7, add = TRUE)
title(main = "Zonas urbanas con clima Semi\u{E1}rido templado")
legend("topright",
legend = c(as.character(unique(urbanas@data$Urb_Rur)), "BSk"),
col =c(unique(urbanas@data$colores), unique(climas_BSk@data$colores)),
pch=c(19,18, NA),
fill =c(NA, NA,unique(climas_BSk@data$colores) ),
border = c(NA,NA,NA),
box.col="gray", inset=.02, title="Simbología")
# /////////////////////////////////////////TERMINA MAPA 6 /////////
### TABLA 1
# BWh Las diez ciudades con mayor población
BWh_df <- as(urbanas_BWh, "data.frame")
class(BWh_df); names(BWh_df); dim(BWh_df) # 49 Ciudades
unique(BWh_df$Urb_Rur)
sub1_cities_BWh= BWh_df %>%
filter (Urb_Rur == "Urbana") %>%
select(NOM_ENT, NOM_MUN, NOM_LOC,ALTITUD, POBTOT) %>%
arrange_(~ desc(POBTOT)) %>%
slice(1:10)
sub1_cities_BWh
setwd('/Users/COLSON/Desktop')
write.csv(sub1_cities_BWh, file = "sub1_cities_BWh.csv")
######################################
### TABLA 1
# BWk Las diez ciudades con mayor población
BWk_df <- as(urbanas_BWk, "data.frame")
class(BWk_df); names(BWk_df); dim(BWk_df) # 2
unique(BWk_df$Urb_Rur)
sub1_cities_BWk= BWk_df %>%
filter (Urb_Rur == "Urbana") %>%
select(NOM_ENT, NOM_MUN, NOM_LOC,ALTITUD, POBTOT) %>%
arrange_(~ desc(POBTOT)) %>%
slice(1:10)
sub1_cities_BWk
setwd('/Users/COLSON/Desktop')
write.csv(sub1_cities_BWk, file = "sub1_cities_BWk.csv")
######################################
### TABLA 2
# BSh Las diez ciudades con mayor población
BSh_df <- as(urbanas_BSh, "data.frame")
class(BSh_df); names(BSh_df); dim(BSh_df) # 112
unique(BSh_df$Urb_Rur)
sub1_cities_BSh= BSh_df %>%
filter (Urb_Rur == "Urbana" | Urb_Rur == "Mixta urbana") %>%
select(NOM_ENT, NOM_MUN, NOM_LOC,ALTITUD, POBTOT) %>%
arrange_(~ desc(POBTOT)) %>%
slice(1:10)
sub1_cities_BSh
setwd('/Users/COLSON/Desktop')
write.csv(sub1_cities_BSh, file = "sub1_cities_BSh.csv")
######################################
### TABLA 3
# BSk Las diez ciudades con mayor población
BSk_df <- as(urbanas_BSk, "data.frame")
class(BSk_df); names(BSk_df); dim(BSk_df) # 95
unique(BSk_df$Urb_Rur)
sub1_cities_BSk= BSk_df %>%
filter (Urb_Rur == "Urbana" | Urb_Rur == "Mixta urbana") %>%
select(NOM_ENT, NOM_MUN, NOM_LOC,ALTITUD, POBTOT) %>%
arrange_(~ desc(POBTOT)) %>%
slice(1:10)
sub1_cities_BSk
setwd('/Users/COLSON/Desktop')
write.csv(sub1_cities_BSk, file = "sub1_cities_BSk.csv")
######################################
BWh_df$clima="BWh"
BWk_df$clima="BWk"
BSh_df$clima="BSh"
BSk_df$clima="BSk"
pob_arids= rbind(BWh_df,BWk_df, BSh_df,BSk_df)
sum(pob_arids$POBTOT)
max(pob_arids$POBTOT); min(pob_arids$POBTOT)
dim(pob_arids)
df <- aggregate(formula=POBTOT~clima, data=pob_arids, FUN=sum)
df$colores=unique(climas_aridos@data$colores)
df$Pob_000=df$POBTOT/1000
df$Pob_000
### Eliminamos notación científica
options(scipen=999)
### XKCD theme
### Creamos el estilo de la gráfica
######## DESCARGAR FONTS PARA MAC
download.file("http://simonsoftware.se/other/xkcd.ttf", dest="xkcd.ttf", mode="wb")
system("mkdir ~/.fonts")
system("cp xkcd.ttf ~/.fonts")
font_import(paths = "~/.fonts", pattern = "[X/x]kcd", prompt=FALSE)
fonts()
fonttable()
if(.Platform$OS.type != "unix") {
## Register fonts for Windows bitmap output
loadfonts(device="win")
} else {
loadfonts()
}
### Humor Sans font descargado de: http://antiyawn.com/uploads/humorsans.html
### Se deben de instalar los Fonts en tu Mac, dejar archivo en el directorio de trabajo
### Explora en Internet la forma y procedimientos para instalar y usar los "fonts" de
### acuerdo a tu sistema operativo. Hoy en día es fácil conseguir gratis muchos tipos
### de "fonts"
font_import(".")
##################################
theme_xkcd <- theme(
panel.background = element_rect(fill="white"),
axis.ticks = element_line(colour=NA),
panel.grid = element_line(colour="white"),
axis.text.y = element_text(colour= "black"),
axis.text.x = element_text(colour="black"),
text = element_text(size=16, family="Humor Sans"),
plot.margin = margin(1, 1, 1, 1, "cm")
)
################################## Gráfica 1
ggplot(data=df, aes(reorder(clima, Pob_000),y=Pob_000)) +
geom_bar(stat="identity", color=NA, fill=df$colores[order(-df$Pob_000)]) + coord_flip() +
ggtitle("Habitantes en zonas urbanas por tipo de clima (2010)") +
xlab("Climas") + ylab("Personas x 1000") + scale_y_continuous(labels = comma) +
geom_text(aes(label = comma(Pob_000), y = Pob_000/2), size = 5, family="Humor Sans") +
theme_xkcd
################################## Gráfica 2
df1=aggregate(formula=POBTOT~clima+Urb_Rur, data=pob_arids, FUN=sum, na.rm=TRUE)
df1$Pob_000=df1$POBTOT/1000
df1
ggplot(data=df1, aes(reorder(clima, Pob_000),y=Pob_000, fill = factor(Urb_Rur))) +
geom_bar(stat="identity", color=NA, position=position_dodge()) + coord_flip() +
scale_fill_manual(values=c('#999999','#E69F00'), labels=c("Mixta-urbana", "Urbana"))+
ggtitle("Habitantes en zonas urbanas/mixtas por tipo de clima (2010)") +
guides(fill=guide_legend(title="tipo"))+
xlab("Climas") + ylab("Personas x 1000") + scale_y_continuous(labels = comma) +
geom_text(aes(label = comma(Pob_000), y = Pob_000 + 500), position = position_dodge(0.9),
vjust = -0.25, color = "black", family="Humor Sans", size = 5)+ theme_xkcd
#####################################################################
Ciudades áridas y semiáridas de méxico
Dr. Luis Alan Navarro Navarro
Centro de Estudios en Gobierno y Asuntos Públicos
El Colegio de Sonora




