Para abordar este caso de estudio, se necesita utilizar el archivo Shapefile de las Comunas de Cali junto con la base de datos que contiene el número de viajes realizados por cada persona, ya sea desde su comuna de origen dentro de Cali o desde otros municipios hacia las comunas destino dentro de Cali. Con la finalidad de calcular el total de viajes por comuna de origen y destino, así como los viajes específicos realizados en bicicleta, motocicleta y automóvil desde la comuna de origen hacia la comuna de destino.
Identificar las comunas de las cuáles se realizan los desplazamiento por tipo de vehículo de la ciudad de Cali.
En el proceso de identificación del total de viajes realizados a las comunas de la ciudad de Cali, se divide en dos etapas: la primera consiste en determinar los viajes desde la comuna de origen hacia cualquier comuna de destino dentro de la ciudad, y la segunda etapa implica identificar los viajes específicamente hacia las distintas comunas de destino dentro de Cali.
En el proceso de identificación de los desplazamientos que se realizan en la comuna de origen de acuerdo al tipo de vehículo, es necesario cargar las librerías para empezar la ejecución del caso de estudio.
Ahora, se procede a la cargar del archivo shapefile llamado comunas, en donde se encuentran los polígonos de las comunas de la ciudad de Cali, este shapefile cuenta con un sistema de coordenadas proyectado Magna Colombia Cali con un total de 22 comunas.
library(raster)
comunas = shapefile("C:/Maria Camila/Maestría Ciencia de datos/2do semestre/Análisis de información geográfica/Modulo 1/Casos/Casos/cali/Comunas.shp")
plot(comunas)Luego, se carga el archivo de Excel, que contiene 28 atributos y 35054 registros; donde se encuentra la información del número de viajes que se realizan desde las comunas de origen con un tipo de vehiculo (Bicicleta, Moto, Automóvil) y hasta las comunas de destino.
library(readxl)
library(dplyr)
comunas_excel <- read_excel("C:/Maria Camila/Maestría Ciencia de datos/2do semestre/Análisis de información geográfica/Modulo 1/Casos/Casos/EncuestaOrigenDestino.xlsx")
head(comunas_excel[,23:27])Como podemos ver en la tabla, estás son las variables de interés que responden al objetivo planteado. A continuación, se muestra la codificación de la variable Tipo de Vehículo.
tipo_vehiculos <- data.frame(
Código = c(1, 2, 3),
Tipo = c("Bicicleta", "Moto", "Automóvil")
)
tipo_vehiculosComo se observa en la tabla de excel, existe un registro en el atributo comuna origen que es “Fuera de Cali”, que no es pertinente para el estudio de acuerdo a los tipo de vehículos y que el desplazamiento debe hacerse dentro de la ciudad. Por esto, se filtraran estos datos para hacer una nueva tabla que no contengan estos registros.
comunas_filtradas <- filter(comunas_excel,`comuna origen` != "Fuera de Cali")
head(comunas_filtradas[23:27])De acuerdo con la tabla anterior, en la comuna origen ya no se tienen los valores “Fuera de Cali”, ahora solo están los códigos a los que pertenece cada comuna. Aunque, está variable aparece como tipo carácter y esto hace que no se haga una unión con el shapefile para mostrar cuántos viajes se hacen desde la comuna de origen.
comunas_filtradas$`comuna origen` <- as.integer(comunas_filtradas$`comuna origen`)
head(comunas_filtradas[23:27])Así, la comuna de origen ya es un valor entero o integer lo que permite continuar con los procedimientos siguientes.
Al momento de realizar el análisis de la totalidad de viajes que se hacen desde la comuna de origen y poder representarlos geográficamente, es necesario hacer una unión o lo que se conoce como un join, que permite que estás características queden en el shapefile.
Para esto, primero se debe pasar el shapefile de comunas a una dataframe para unirlo con la tabla de la información del tipo de vehiculo y la comuna origen
En segundo lugar, como el requerimientos es conocer cuántos viajes se hacen desde la comuna de origen, se hace una variable de conteo para que almacene la cantidad de viajes hechos desde cada comuna.
library(dplyr)
total_viajes_por_comuna <- comunas_filtradas %>%
group_by(comunas_filtradas$`comuna origen`) %>%
summarise(total_viajes = n())
head(total_viajes_por_comuna)Con relación a la tabla generada, podemos observar que se creó una variable de total de viajes por cada comuna, por ejemplo en la comuna 2, se llevaron a cabo 2968 viajes y desde la 4 1493 viajes que se realizaron en bicicleta, moto o automóvil. Con esto, se procede a realizar el join con esta variable y el dataframe que contiene la información del shapefile.
comunas_origen2 <- left_join(comuna_df, total_viajes_por_comuna, by = c("comuna" = "comunas_filtradas$`comuna origen`"))
head(comunas_origen2)Ahora lo fusionamos por medio de la herramienta merge con la tabla generada en el paso anterior
comunas_merged <- merge(comunas, comunas_origen2, by.x = "comuna", by.y = "comuna", all.x = TRUE)
plot(comunas_merged)Obteniendo el gráfico de las comunas, confirmamos que el shapefile ya tiene toda la información necesaria para generar la salida gráfica de todos los viajes realizados desde la comuna de origen
library(sf)
comunas_merged_sf <- st_as_sf(comunas_merged)
library(ggplot2)
ggplot() +
geom_sf(data = comunas_merged_sf, aes(fill = total_viajes)) +
scale_fill_viridis_c(name = "Total de Viajes en Comunas", limits = c(330, 3000)) +
labs(title = "Total de Viajes desde Comuna de Origen") +
theme_minimal() +
theme(axis.text = element_text(size = 4)) +
coord_sf(xlim = NULL, ylim = NULL) +
xlab("Longitud") +
ylab("Latitud")Como podemos observar, la comuna 2 contiene 25 barriios y limita al norte con el municipio de Yumbo se realizan más desplazamiento con un total de 2968 y en la comuna 12 se encuentra en el oriente de la ciudad tiene 12 barrios y se realizan un total de 348 desplazamientos.
Teniendo el total de viajes realizados desde las comunas de origen, se procede a realizar la identificación de cuántos viajes se hacen en bicicleta desde las comunas de origen
Se deben calcular el total de viajes que se hacen en bicicleta desde cada comuna filtrando primero por la codificación del tipo de vehiculo.
library(dplyr)
viajes_bicicleta <- comunas_filtradas %>%
filter(comunas_filtradas$`TIPO DE VEHÍCULO` == 1) library(dplyr)
viajes_bicicleta_comunaori <- viajes_bicicleta %>%
group_by(viajes_bicicleta$`comuna origen`) %>%
summarise(total_viajes_bicicleta_ori = n())
head(viajes_bicicleta_comunaori)Ahora se ejecuta el Join con el shapefile
comunasori_bicicleta <- left_join(comuna_df, viajes_bicicleta_comunaori, by = c("comuna" = "viajes_bicicleta$`comuna origen`"))
comunas_bicicleta_origen <- merge(comunas, comunasori_bicicleta, by.x = "comuna", by.y = "comuna", all.x = TRUE)
plot(comunas_bicicleta_origen)Obteniendo el gráfico de las comunas, confirmamos que el shapefile ya tiene toda la información necesaria para generar la salida gráfica de todos los viajes realizados en bicicleta desde la comuna de origen
library(sf)
comunas_bicicleta_origen_sf <- st_as_sf(comunas_bicicleta_origen)
library(ggplot2)
ggplot() +
geom_sf(data = comunas_bicicleta_origen_sf, aes(fill = total_viajes_bicicleta_ori)) +
scale_fill_viridis_c(name = "Total de Viajes en Bicicleta", limits = c(10, 160)) +
labs(title = "Total de Viajes en Bicicleta desde la Comuna de Origen") +
theme_minimal() +
theme(axis.text = element_text(size = 4)) +
coord_sf(xlim = NULL, ylim = NULL) +
xlab("Longitud") +
ylab("Latitud")Según el mapa de comunas generado, se observa que la mayor cantidad de desplazamientos en bicicleta se origina en la comuna 2, con un total de 159. En contraste, desde la comuna 12 se registran solo 14 desplazamientos en bicicleta.
Teniendo el total de viajes realizados desde las comunas de origen, se procede a realizar la identificación de cuántos viajes se hacen en Moto desde las comunas de origen en la ciudad de Cali.
Se procede a calcular el total de viajes que se hacen en moto desde cada comuna filtrando primero por la codificación del tipo de vehiculo.
library(dplyr)
viajes_moto <- comunas_filtradas %>%
filter(comunas_filtradas$`TIPO DE VEHÍCULO` == 2) library(dplyr)
viajes_moto_comunaori <- viajes_moto %>%
group_by(viajes_moto$`comuna origen`) %>%
summarise(total_viajes_moto_ori = n())
# Muestra del resultado
head(viajes_moto_comunaori)Ahora se ejecuta el Join con el shapefile
comunasori_moto <- left_join(comuna_df, viajes_moto_comunaori, by = c("comuna" = "viajes_moto$`comuna origen`"))
comunas_moto_origen <- merge(comunas, comunasori_moto, by.x = "comuna", by.y = "comuna", all.x = TRUE)
plot(comunas_moto_origen)Obteniendo el gráfico de las comunas, confirmamos que el shapefile ya tiene toda la información necesaria para generar la salida gráfica de todos los viajes realizados en bicicleta desde la comuna de origen
library(sf)
comunas_moto_origen_sf <- st_as_sf(comunas_moto_origen)
library(ggplot2)
ggplot() +
geom_sf(data = comunas_moto_origen_sf, aes(fill = total_viajes_moto_ori)) +
scale_fill_viridis_c(name = "Total de Viajes en Moto", limits = c(150, 1500)) +
labs(title = "Total de Viajes en Moto desde la Comuna de Origen") +
theme_minimal() +
theme(axis.text = element_text(size = 4)) +
coord_sf(xlim = NULL, ylim = NULL) +
xlab("Longitud") +
ylab("Latitud")Según el mapa de comunas generado, se observa que la mayor cantidad de desplazamientos en moto se originan en la comuna 2, con un total de 1414, esto puede ser influenciado por la cercanía al municipio de Yumbo. En contraste, desde la comuna 12 se registran solo 176 desplazamientos en moto.
Teniendo el total de viajes realizados desde las comunas de origen, se procede a realizar la identificación de cuántos viajes se hacen en Automóvil desde las comunas de origen en la ciudad de Cali.
Se procede a calcular el total de viajes que se hacen en automóvil desde cada comuna filtrando primero por la codificación del tipo de vehiculo.
library(dplyr)
viajes_automovil <- comunas_filtradas %>%
filter(comunas_filtradas$`TIPO DE VEHÍCULO` == 3) library(dplyr)
viajes_auto_comunaori <- viajes_automovil %>%
group_by(viajes_automovil$`comuna origen`) %>%
summarise(total_viajes_auto_ori = n())
# Muestra del resultado
head(viajes_auto_comunaori)Ahora se ejecuta el Join con el shapefile
comunasori_auto <- left_join(comuna_df, viajes_auto_comunaori, by = c("comuna" = "viajes_automovil$`comuna origen`"))
comunas_auto_origen <- merge(comunas, comunasori_auto, by.x = "comuna", by.y = "comuna", all.x = TRUE)
plot(comunas_auto_origen)Obteniendo el gráfico de las comunas, confirmamos que el shapefile ya tiene toda la información necesaria para generar la salida gráfica de todos los viajes realizados en bicicleta desde la comuna de origen
library(sf)
comunas_auto_origen_sf <- st_as_sf(comunas_auto_origen)
library(ggplot2)
ggplot() +
geom_sf(data = comunas_auto_origen_sf, aes(fill = total_viajes_auto_ori)) +
scale_fill_viridis_c(name = "Total de Viajes en Automóvil", limits = c(120, 1180)) +
labs(title = "Total de Viajes en Automóvil desde la Comuna de Origen") +
theme_minimal() +
theme(axis.text = element_text(size = 4)) +
coord_sf(xlim = NULL, ylim = NULL) +
xlab("Longitud") +
ylab("Latitud")Según el mapa de comunas generado, se observa que la mayor cantidad de desplazamientos en automóvil se originan en la comuna 19, con un total de 1165 ubicada en el oeste de la ciudad con un total de 33 barrios. En contraste, desde la comuna 12 se registran solo 123 desplazamientos en automóvil.
En el proceso de identificación de los desplazamientos que llegan a una comuna de destino de acuerdo al tipo de vehículo, se usan los archivos shapefile y excel para la ejecución de estudio caso en este segundo momento con las comunas de destino.
Del mismo modo que sucede con las comunas de origen, en la tabla de Excel existe un registro en el atributo “comuna de destino” que indica “Fuera de Cali”, el cual no es relevante para el estudio, dado que los desplazamientos deben llegar a una ubicación dentro de la ciudad. Por lo tanto, se procederá a filtrar estos datos para crear una nueva tabla que excluya dichos registros y queden en valores enteros.
comunas_filtradas_dst <- filter(comunas_excel,`comuna destino` != "Fuera de Cali")
comunas_filtradas_dst$`comuna destino` <- as.integer(comunas_filtradas_dst$`comuna destino`)Al momento de realizar el análisis de la totalidad de viajes que se llegan a las comunas de destino para epresentarlos geográficamente, es necesario hacer una unión o lo que se conoce como un join, que permite que estás características queden en el shapefile.
Como el requerimientos es conocer cuántos viajes se llegan a la comuna de destino, se hace una variable de conteo para que almacene la cantidad de viajes hechos.
library(dplyr)
total_viajes_por_comuna_dst <- comunas_filtradas_dst %>%
group_by(comunas_filtradas_dst$`comuna destino`) %>%
summarise(total_viajes = n())
head(total_viajes_por_comuna_dst)Con relación a la tabla generada, podemos observar que se creó una variable de total de viajes por cada comuna, por ejemplo en la comuna 1, se llevaron a cabo 230 viajes y desde la 3 3859 viajes que se realizaron en bicicleta, moto o automóvil. Con esto, se procede a realizar el join con esta variable y el dataframe que contiene la información del shapefile.
comunas_destino <- left_join(comuna_df, total_viajes_por_comuna_dst, by = c("comuna" = "comunas_filtradas_dst$`comuna destino`"))
comunas_mer_dst <- merge(comunas, comunas_destino, by.x = "comuna", by.y = "comuna", all.x = TRUE)
plot(comunas_mer_dst) Obteniendo el gráfico de las comunas, confirmamos que el shapefile ya tiene toda la información necesaria para generar la salida gráfica de todos los viajes de la comuna de destino.
library(sf)
comunas_mer_dst <- st_as_sf(comunas_mer_dst)
library(ggplot2)
ggplot() +
geom_sf(data = comunas_mer_dst, aes(fill = total_viajes)) +
scale_fill_viridis_c(name = "Total de Viajes en Comunas", limits = c(200, 4850)) +
labs(title = "Total de Viajes por Comuna de Destino") +
theme_minimal() +
theme(axis.text = element_text(size = 4)) +
coord_sf(xlim = NULL, ylim = NULL) +
xlab("Longitud") +
ylab("Latitud")Como podemos observar, la comuna 2 es la comuna destino donde llegan más viajes realizados por los ciudadanos con un total de 4810 y en la comuna 1 que se encuentra en el occidente de la ciudad y tiene 4 barrios se realizan un total de 230 desplazamientos.
Teniendo el total de viajes realizados desde las comunas de Destino, se procede a realizar la identificación de cuántos viajes se hacen en bicicleta a las comunas de destino.
Se deben calcular el total de viajes que se hacen en bicicleta desde cada comuna filtrando primero por la codificación del tipo de vehiculo.
library(dplyr)
viajes_bicicleta_dst <- comunas_filtradas_dst %>%
filter(comunas_filtradas_dst$`TIPO DE VEHÍCULO` == 1) library(dplyr)
viajes_bicicleta_comunadest <- viajes_bicicleta_dst %>%
group_by(viajes_bicicleta_dst$`comuna destino`) %>%
summarise(total_viajes_bicicleta_dst = n())
head(viajes_bicicleta_comunadest)Ahora se ejecuta el Join con el shapefile
comunasdest_bicicleta <- left_join(comuna_df, viajes_bicicleta_comunadest, by = c("comuna" = "viajes_bicicleta_dst$`comuna destino`"))
comunas_bicicleta_destino <- merge(comunas, comunasdest_bicicleta, by.x = "comuna", by.y = "comuna", all.x = TRUE)
plot(comunas_bicicleta_origen)Obteniendo el gráfico de las comunas, confirmamos que el shapefile ya tiene toda la información necesaria para generar la salida gráfica de todos los viajes realizados en bicicleta desde la comuna de destino
library(sf)
comunas_bicicleta_destino_sf <- st_as_sf(comunas_bicicleta_destino)
library(ggplot2)
ggplot() +
geom_sf(data = comunas_bicicleta_destino_sf, aes(fill = total_viajes_bicicleta_dst)) +
scale_fill_viridis_c(name = "Total de Viajes en Bicicleta", limits = c(10, 250)) +
labs(title = "Total de Viajes en Bicicleta desde la Comuna de Destino") +
theme_minimal() +
coord_sf(xlim = NULL, ylim = NULL) +
theme(axis.text = element_text(size = 4)) +
xlab("Longitud") +
ylab("Latitud")Según el mapa de comunas generado, se observa que la mayor cantidad de desplazamientos en bicicleta se hacen desde la comuna 2, con un total de 218. En contraste, desde la comuna 1 se registran solo 12 desplazamientos en bicicleta.
Teniendo el total de viajes realizados de las comunas de destino, se procede a realizar la identificación de cuántos viajes se hacen en Moto a las comunas de destino en la ciudad de Cali.
Se procede a calcular el total de viajes que se hacen en moto cada comuna filtrando primero por la codificación del tipo de vehiculo.
library(dplyr)
viajes_moto_dst <- comunas_filtradas_dst %>%
filter(comunas_filtradas_dst$`TIPO DE VEHÍCULO` == 2) library(dplyr)
viajes_moto_comunadst <- viajes_moto_dst %>%
group_by(viajes_moto_dst$`comuna destino`) %>%
summarise(total_viajes_moto_dst = n())Ahora se ejecuta el Join con el shapefile
comunasdst_moto <- left_join(comuna_df, viajes_moto_comunadst, by = c("comuna" = "viajes_moto_dst$`comuna destino`"))
comunas_moto_destino <- merge(comunas, comunasdst_moto, by.x = "comuna", by.y = "comuna", all.x = TRUE)
plot(comunas_moto_destino)Obteniendo el gráfico de las comunas, confirmamos que el shapefile ya tiene toda la información necesaria para generar la salida gráfica de todos los viajes en bicicleta a las comunas de destino.
library(sf)
comunas_moto_destino_sf <- st_as_sf(comunas_moto_destino)
library(ggplot2)
ggplot() +
geom_sf(data = comunas_moto_destino_sf, aes(fill = total_viajes_moto_dst)) +
scale_fill_viridis_c(name = "Total de Viajes en Moto", limits = c(100, 2200)) +
labs(title = "Total de Viajes en Moto desde la Comuna de Destino") +
theme_minimal() +
theme(axis.text = element_text(size = 4)) +
coord_sf(xlim = NULL, ylim = NULL) +
xlab("Longitud") +
ylab("Latitud")Según el mapa de comunas generado, se observa que la mayor cantidad de desplazamientos en moto llegan a la comuna 2, con un total de 2177, esto puede ser influenciado por la cercanía al municipio de Yumbo. En contraste, desde la comuna 1 se registran solo 112 desplazamientos en moto.
Una vez obtenido el total de viajes realizados hacia las comunas de destino, se procede a identificar cuántos de estos viajes se realizan en automóvil en las comunas de destino dentro de la ciudad de Cali.
Se procede a calcular el total de viajes que se hacen en automóvil a cada comuna filtrando primero por la codificación del tipo de vehiculo.
library(dplyr)
viajes_automovil_dst <- comunas_filtradas_dst %>%
filter(comunas_filtradas_dst$`TIPO DE VEHÍCULO` == 3) library(dplyr)
viajes_auto_comunadst <- viajes_automovil_dst %>%
group_by(viajes_automovil_dst$`comuna destino`) %>%
summarise(total_viajes_auto_dst = n())Ahora se ejecuta el Join con el shapefile
comunasdst_auto <- left_join(comuna_df, viajes_auto_comunadst, by = c("comuna" = "viajes_automovil_dst$`comuna destino`"))
comunas_auto_destino <- merge(comunas, comunasdst_auto, by.x = "comuna", by.y = "comuna", all.x = TRUE)
plot(comunas_auto_origen)Obteniendo el gráfico de las comunas, confirmamos que el shapefile ya tiene toda la información necesaria para generar la salida gráfica de todos los viajes realizados en automóvil a la comuna de origen
library(sf)
comunas_auto_destino_sf <- st_as_sf(comunas_auto_destino)
library(ggplot2)
ggplot() +
geom_sf(data = comunas_auto_destino_sf, aes(fill = total_viajes_auto_dst)) +
scale_fill_viridis_c(name = "Total de Viajes en Automóvil", limits = c(80, 2010)) +
labs(title = "Total de Viajes en Automóvil desde la Comuna de Destino") +
theme_minimal() +
theme(axis.text = element_text(size = 4)) +
coord_sf(xlim = NULL, ylim = NULL) +
xlab("Longitud") +
ylab("Latitud")De acuerdo con el mapa de comunas generado, se destaca que la mayor cantidad de desplazamientos en automóvil se dirige hacia la comuna 2, totalizando 2006 viajes. En contraste, desde la comuna 12 se registra un total de apenas 85 desplazamientos en automóvil.