Se busca crear 8 mapas:
El primer mapa que permita ver de dónde sale o se origina los viajes de las personas encuestadas.
El segundo, que permita ver cuántos viajes se originaron en bicicleta por comuna.
El tercero, que permita ver cuántos viajes se originaron en moto por comuna
El cuarto, que permita ver cuántos viajes se originaron en auto por comuna.
El quinto mapa que permita ver el destino de los viajes de las personas encuestadas.
El sexto, que permita ver a cuantos destinos se llega en bicicleta por comuna.
El séptimo, que permita ver a cuantos destinos se llega en moto por comuna
El octavo, que permita ver a cuantos destinos se llega en auto por comuna.
Se carga el archivo shapefile, con los polígonos de las comunas en la ciudad de Cali y se carga la base de datos con la información de los datos obtenidos en la encuesta.
#Cargar las librerias a necesitar
library(raster)
library(rgdal)
library(sp)
library(readxl)
library(dplyr)
library(tmap)
#Traer el archivo comunas
comunas = shapefile("~/ESTUDIO/Maestria ciencia de datos/Segundo_semestre/electiva/Casos/Casos/cali/Comunas.shp")
comunas
## class : SpatialPolygonsDataFrame
## features : 22
## extent : 1053868, 1068492, 860190.2, 879441.5 (xmin, xmax, ymin, ymax)
## crs : +proj=tmerc +lat_0=3.441883333 +lon_0=-76.5205625 +k=1 +x_0=1061900.18 +y_0=872364.63 +a=6379137 +rf=298.257222101 +units=m +no_defs
## variables : 4
## names : OBJECTID, gid, comuna, nombre
## min values : 1, 89, 1, Comuna 1
## max values : 22, 110, 22, Comuna 9
plot(comunas)
#traer la base de datos encuestaOrigenDestino
datos_viajeros = read_excel("~/ESTUDIO/Maestria ciencia de datos/Segundo_semestre/electiva/Casos/Casos/EncuestaOrigenDestino.xlsx")
datos_viajeros
## # A tibble: 35,054 × 28
## FECHA `ID ESTACIÓN` ESTACIÓN ACCESO MOVIMIENTO
## <dttm> <dbl> <chr> <chr> <chr>
## 1 2015-06-01 00:00:00 1 Avenida 6N X Calle 70N NORTE MOV 1
## 2 2015-06-01 00:00:00 1 Avenida 6N X Calle 70N NORTE MOV 1
## 3 2015-06-01 00:00:00 1 Avenida 6N X Calle 70N NORTE MOV 1
## 4 2015-06-01 00:00:00 1 Avenida 6N X Calle 70N NORTE MOV 1
## 5 2015-06-01 00:00:00 1 Avenida 6N X Calle 70N NORTE MOV 1
## 6 2015-06-01 00:00:00 1 Avenida 6N X Calle 70N NORTE MOV 1
## 7 2015-06-01 00:00:00 1 Avenida 6N X Calle 70N NORTE MOV 1
## 8 2015-06-01 00:00:00 1 Avenida 6N X Calle 70N NORTE MOV 1
## 9 2015-06-01 00:00:00 1 Avenida 6N X Calle 70N NORTE MOV 1
## 10 2015-06-01 00:00:00 1 Avenida 6N X Calle 70N NORTE MOV 1
## # ℹ 35,044 more rows
## # ℹ 23 more variables: `Hora de Encuesta` <dttm>, MUNICIPIO...7 <chr>,
## # `DEPARTAMENTO / LOCALIDAD / COMUNA / DISTRITO / BARRIO / VEREDA / HITO / DIRECCIÓN...8` <chr>,
## # `Codigo Origen_SDG` <chr>, `¿QUE ESTABA HACIENDO EN ESE LUGAR?` <dbl>,
## # MUNICIPIO...11 <chr>,
## # `DEPARTAMENTO / LOCALIDAD / COMUNA / DISTRITO / BARRIO / VEREDA / HITO / DIRECCIÓN...12` <chr>,
## # `Codigo Destino_SDG` <chr>, `¿QUE VA HACER A ESE LUGAR?` <dbl>, …
Se realiza una revisión de la base de datos, para conocer el tipo de datos y datos faltantes según lo que necesitamos que son los orígenes y destino de los viajes.
Nombre de las columnas:#Conocer los nombres de la variables
colnames(datos_viajeros)
## [1] "FECHA"
## [2] "ID ESTACIÓN"
## [3] "ESTACIÓN"
## [4] "ACCESO"
## [5] "MOVIMIENTO"
## [6] "Hora de Encuesta"
## [7] "MUNICIPIO...7"
## [8] "DEPARTAMENTO / LOCALIDAD / COMUNA / DISTRITO / BARRIO / VEREDA / HITO / DIRECCIÓN...8"
## [9] "Codigo Origen_SDG"
## [10] "¿QUE ESTABA HACIENDO EN ESE LUGAR?"
## [11] "MUNICIPIO...11"
## [12] "DEPARTAMENTO / LOCALIDAD / COMUNA / DISTRITO / BARRIO / VEREDA / HITO / DIRECCIÓN...12"
## [13] "Codigo Destino_SDG"
## [14] "¿QUE VA HACER A ESE LUGAR?"
## [15] "ESTRATO EN SU VIVIENDA"
## [16] "¿DISPONIA DE UN VEHÍCULO PARA REALIZAR ESTE DESPLAZAMIENTO?"
## [17] "OTRO ¿CUÁL?...17"
## [18] "ANTES"
## [19] "DESPUES"
## [20] "EDAD"
## [21] "SEXO"
## [22] "PERSONAS EN EL VEHÍCULO"
## [23] "TIPO DE VEHÍCULO"
## [24] "OTRO ¿CUÁL?...24"
## [25] "TIPO DE VIAJERO"
## [26] "comuna origen"
## [27] "comuna destino"
## [28] "Intracomuna"
#tipos de datos
str(datos_viajeros)
## tibble [35,054 × 28] (S3: tbl_df/tbl/data.frame)
## $ FECHA : POSIXct[1:35054], format: "2015-06-01" "2015-06-01" ...
## $ ID ESTACIÓN : num [1:35054] 1 1 1 1 1 1 1 1 1 1 ...
## $ ESTACIÓN : chr [1:35054] "Avenida 6N X Calle 70N" "Avenida 6N X Calle 70N" "Avenida 6N X Calle 70N" "Avenida 6N X Calle 70N" ...
## $ ACCESO : chr [1:35054] "NORTE" "NORTE" "NORTE" "NORTE" ...
## $ MOVIMIENTO : chr [1:35054] "MOV 1" "MOV 1" "MOV 1" "MOV 1" ...
## $ Hora de Encuesta : POSIXct[1:35054], format: "1899-12-31 06:10:00" "1899-12-31 06:11:00" ...
## $ MUNICIPIO...7 : chr [1:35054] "CALI" "CALIMA" "YUMBO" "YUMBO" ...
## $ DEPARTAMENTO / LOCALIDAD / COMUNA / DISTRITO / BARRIO / VEREDA / HITO / DIRECCIÓN...8 : chr [1:35054] "B CHIPICHAPE" "DARIEN" "VALLE DEL CAUCA" "VALLE DEL CAUCA" ...
## $ Codigo Origen_SDG : chr [1:35054] "218" "4102" "3102" "3102" ...
## $ ¿QUE ESTABA HACIENDO EN ESE LUGAR? : num [1:35054] 5 6 6 6 8 6 6 6 6 6 ...
## $ MUNICIPIO...11 : chr [1:35054] "CALI" "CALI" "CALI" "CALI" ...
## $ DEPARTAMENTO / LOCALIDAD / COMUNA / DISTRITO / BARRIO / VEREDA / HITO / DIRECCIÓN...12: chr [1:35054] "B PANCE" "TEQUENDAMA" "B EL PEÑON" "B OBRERO" ...
## $ Codigo Destino_SDG : chr [1:35054] "2216" "1904" "302" "910" ...
## $ ¿QUE VA HACER A ESE LUGAR? : num [1:35054] 1 4 1 1 1 1 2 1 1 2 ...
## $ ESTRATO EN SU VIVIENDA : num [1:35054] 3 2 3 2 3 2 3 3 3 3 ...
## $ ¿DISPONIA DE UN VEHÍCULO PARA REALIZAR ESTE DESPLAZAMIENTO? : num [1:35054] 0 NA NA NA NA NA NA NA NA NA ...
## $ OTRO ¿CUÁL?...17 : logi [1:35054] NA NA NA NA NA NA ...
## $ ANTES : num [1:35054] NA NA NA NA NA NA NA NA NA NA ...
## $ DESPUES : logi [1:35054] NA NA NA NA NA NA ...
## $ EDAD : num [1:35054] 35 40 33 28 25 31 50 37 36 35 ...
## $ SEXO : num [1:35054] 2 2 2 2 2 2 2 2 2 2 ...
## $ PERSONAS EN EL VEHÍCULO : num [1:35054] 1 4 1 1 2 3 2 1 1 2 ...
## $ TIPO DE VEHÍCULO : num [1:35054] 2 3 2 2 2 3 3 2 2 3 ...
## $ OTRO ¿CUÁL?...24 : logi [1:35054] NA NA NA NA NA NA ...
## $ TIPO DE VIAJERO : chr [1:35054] "1" "1" "1" "1" ...
## $ comuna origen : chr [1:35054] "02" "Fuera de Cali" "Fuera de Cali" "Fuera de Cali" ...
## $ comuna destino : chr [1:35054] "22" "19" "03" "09" ...
## $ Intracomuna : chr [1:35054] "0" "0" "0" "0" ...
#datos faltantes
#colSums(is.na(datos_viajeros))
sum(is.na(datos_viajeros))
## [1] 161637
Se eliminaran las columnas con mas del 50% de datos faltantes
Se imputaran por la moda las columnas : estrato, sexo, tipo vehiculo, tipo viajero, que estaba haciendo y que va hacer
Se imputara utilizando la media en las columnas: edad, personas en el vehiculo
#eliminar las columnas con mas del 50% de los datos faltantes
umbral_eliminar = 0.5
datos_viajeros = datos_viajeros[, colSums(is.na(datos_viajeros)) / nrow(datos_viajeros) < umbral_eliminar]
#imputaciones moda
#utilizar la moda para imputar valores categoricos estrato
moda_categorica = as.character(names(sort(table(datos_viajeros$`ESTRATO EN SU VIVIENDA`), decreasing = TRUE)[1]))
datos_viajeros$`ESTRATO EN SU VIVIENDA`[is.na(datos_viajeros$`ESTRATO EN SU VIVIENDA`)] <- moda_categorica
#utilizar la moda para imputar valores categoricos sexo
moda_sexo = as.character(names(sort(table(datos_viajeros$SEXO), decreasing = TRUE)[1]))
datos_viajeros$SEXO[is.na(datos_viajeros$SEXO)] <- moda_sexo
#utilizar la moda para imputar valores categoricos que estaba haciendo en ese lugar?
moda_qehl = as.character(names(sort(table(datos_viajeros$`¿QUE ESTABA HACIENDO EN ESE LUGAR?`), decreasing = TRUE)[1]))
datos_viajeros$`¿QUE ESTABA HACIENDO EN ESE LUGAR?`[is.na(datos_viajeros$`¿QUE ESTABA HACIENDO EN ESE LUGAR?`)] <- moda_qehl
#utilizar la moda para imputar valores categoricos que va hacer en ese lugar?
moda_qvhl = as.character(names(sort(table(datos_viajeros$`¿QUE VA HACER A ESE LUGAR?`), decreasing = TRUE)[1]))
datos_viajeros$`¿QUE VA HACER A ESE LUGAR?`[is.na(datos_viajeros$`¿QUE VA HACER A ESE LUGAR?`)] <- moda_qvhl
#utilizar la moda para imputar valores categoricos tipo de vehiculo
moda_vehiculo = as.character(names(sort(table(datos_viajeros$`TIPO DE VEHÍCULO`), decreasing = TRUE)[1]))
datos_viajeros$`TIPO DE VEHÍCULO`[is.na(datos_viajeros$`TIPO DE VEHÍCULO`)] <- moda_vehiculo
#utilizar la moda para imputar valores categoricos tipo de viajero
moda_viajero = as.character(names(sort(table(datos_viajeros$`TIPO DE VIAJERO`), decreasing = TRUE)[1]))
datos_viajeros$`TIPO DE VIAJERO`[is.na(datos_viajeros$`TIPO DE VIAJERO`)] <- moda_viajero
#imputacion por la mediana
#imputacion de atributo edad usando la mediana por ser una variable numerica
mediana_edad = median(datos_viajeros$EDAD, na.rm = TRUE)
datos_viajeros$EDAD[is.na(datos_viajeros$EDAD)] = mediana_edad
#imputacion de atributo personas en vehiculo usando la mediana por ser una variable numerica
mediana_personas_vehiculo = median(datos_viajeros$`PERSONAS EN EL VEHÍCULO`, na.rm = TRUE)
datos_viajeros$`PERSONAS EN EL VEHÍCULO`[is.na(datos_viajeros$`PERSONAS EN EL VEHÍCULO`)] = mediana_personas_vehiculo
datos_viajeros = na.omit(datos_viajeros)
#Retificacion de que no haya ningun dato faltante
sum(is.na(datos_viajeros))
## [1] 0
#graficar los datos faltantes
mice::md.pattern(datos_viajeros, rotate.names = TRUE)
## /\ /\
## { `---' }
## { O O }
## ==> V <== No need for mice. This data set is completely observed.
## \ \|/ /
## `-----'
## FECHA ID ESTACIÓN ESTACIÓN ACCESO MOVIMIENTO Hora de Encuesta
## 34974 1 1 1 1 1 1
## 0 0 0 0 0 0
## MUNICIPIO...7
## 34974 1
## 0
## DEPARTAMENTO / LOCALIDAD / COMUNA / DISTRITO / BARRIO / VEREDA / HITO / DIRECCIÓN...8
## 34974 1
## 0
## Codigo Origen_SDG ¿QUE ESTABA HACIENDO EN ESE LUGAR? MUNICIPIO...11
## 34974 1 1 1
## 0 0 0
## DEPARTAMENTO / LOCALIDAD / COMUNA / DISTRITO / BARRIO / VEREDA / HITO / DIRECCIÓN...12
## 34974 1
## 0
## Codigo Destino_SDG ¿QUE VA HACER A ESE LUGAR? ESTRATO EN SU VIVIENDA EDAD
## 34974 1 1 1 1
## 0 0 0 0
## SEXO PERSONAS EN EL VEHÍCULO TIPO DE VEHÍCULO TIPO DE VIAJERO
## 34974 1 1 1 1
## 0 0 0 0
## comuna origen comuna destino Intracomuna
## 34974 1 1 1 0
## 0 0 0 0
#Agrupamos por la comuna de origen
origen_viajes = datos_viajeros %>%
group_by(datos_viajeros$`comuna origen`) %>%
summarise(numero_viajes = n())
mapa_origen_viajeros = merge(comunas,
origen_viajes,
by.x = "comuna",
by.y = "datos_viajeros$`comuna origen`",
all.x = TRUE)
# Establecer el modo interactivo
tmap_mode("view")
# Crear el mapa interactivo
mapa_interactivo <- tm_shape(mapa_origen_viajeros) +
tm_polygons("numero_viajes", style = "quantile", palette = "YlGnBu", title = "Número de Viajeros") +
tm_text(text = "numero_viajes", size = 0.7, col = "black",
shadow = TRUE) +
tm_layout(
title = "Comuna de origen de las personas encuestadas",
title.size = 1.2,
legend.outside = TRUE)+
tm_borders()
# Mostrar el mapa interactivo
mapa_interactivo
#agrupamos los datos por origen de viajeros por bici
origen_viajes_bici = datos_viajeros %>%
filter(`TIPO DE VEHÍCULO`== 1) %>%
group_by(`comuna origen`) %>%
summarise(numero_viajes = n())
mapa_origen_viajeros_1 = merge(comunas,
origen_viajes_bici,
by.x = "comuna",
by.y = "comuna origen",
all.x = TRUE)
# Establecer el modo interactivo
tmap_mode("view")
# Crear el mapa interactivo
mapa_interactivo <- tm_shape(mapa_origen_viajeros_1) +
tm_polygons("numero_viajes", style = "quantile", palette = "YlGnBu", title = "Número de Viajeros") +
tm_text(text = "numero_viajes", size = 0.7, col = "black") +
tm_layout(
title = "Comuna de origen de las personas que utilizan bicicleta",
title.size = 1.2,
legend.outside = TRUE)+
tm_borders()
# Mostrar el mapa interactivo
mapa_interactivo
origen_viajes_moto = datos_viajeros %>%
filter(`TIPO DE VEHÍCULO`== 2) %>%
group_by(`comuna origen`) %>%
summarise(numero_viajes = n())
mapa_origen_viajeros_2 = merge(comunas,
origen_viajes_moto,
by.x = "comuna",
by.y = "comuna origen",
all.x = TRUE)
# Establecer el modo interactivo
tmap_mode("view")
# Crear el mapa interactivo
mapa_interactivo = tm_shape(mapa_origen_viajeros_2) +
tm_polygons("numero_viajes", style = "quantile", palette = "YlGnBu", title = "Número de Viajeros") +
tm_text(text = "numero_viajes", size = 0.7, col = "black") +
tm_layout(
title = "Comuna de origen de las personas que utilizan moto",
title.size = 1.2,
legend.outside = TRUE)+
tm_borders()
# Mostrar el mapa interactivo
mapa_interactivo
#agrupamos los datos por origen de viajeros por automovil
origen_viajes_auto = datos_viajeros %>%
filter(`TIPO DE VEHÍCULO`== 3) %>%
group_by(`comuna origen`) %>%
summarise(numero_viajes = n())
mapa_origen_viajeros_3 = merge(comunas,
origen_viajes_auto,
by.x = "comuna",
by.y = "comuna origen",
all.x = TRUE)
# Establecer el modo interactivo
tmap_mode("view")
# Crear el mapa interactivo
mapa_interactivo <- tm_shape(mapa_origen_viajeros_3) +
tm_polygons("numero_viajes", style = "quantile", palette = "YlGnBu", title = "Número de Viajeros") +
tm_text(text = "numero_viajes", size = 0.7, col = "black") +
tm_layout(
title = "Comuna de origen de las personas que utilizan auto",
title.size = 1.2,
legend.outside = TRUE)+
tm_borders()
# Mostrar el mapa interactivo
mapa_interactivo
En el mapa de origen de los viajes, se observa que las comunas con el mayor número de personas viajeras son la 19, la 18 y la 17, con un total de 2,848, 2,374 y 1,533 viajes, respectivamente. Por otro lado, las comunas con menor cantidad de viajes son la 12, la 14 y la 20, registrando 348, 684 y 732 viajes, respectivamente. Estos datos sugieren que, en general, los residentes de las comunas con menos viajes tienen menos necesidad de desplazarse frecuentemente a otras comunas, posiblemente debido a que pueden acceder a sus lugares de trabajo o realizar sus actividades diarias dentro de su propia comuna.
En los mapas que muestran el uso de diferentes tipos de transporte (bicicleta, moto y auto), se observa que la bicicleta es el medio de transporte menos utilizado para los desplazamientos desde el sitio de origen. Le sigue el auto, mientras que la moto es la opción más común en todas las comunas. Esto sugiere que la moto es un medio de transporte popular debido a su economía y accesibilidad, lo que facilita su adquisición y uso por parte de la población.
#agrupamos los datos por destino de viajeros
destino_viajes = datos_viajeros %>%
group_by(datos_viajeros$`comuna destino`) %>%
summarise(numero_viaje = n())
mapa_destino_viajeros = merge(comunas,
destino_viajes,
by.x = "comuna",
by.y = "datos_viajeros$`comuna destino`",
all.x = TRUE)
# Establecer el modo interactivo
tmap_mode("view")
# Crear el mapa interactivo
mapa_interactivo <- tm_shape(mapa_destino_viajeros) +
tm_polygons("numero_viaje", style = "quantile", palette = "YlOrRd", title = "Número de Viajeros") +
tm_text(text = "numero_viaje", size = 0.7, col = "black") +
tm_layout(
title = "Comuna de destino de las personas encuestadas",
title.size = 1.2,
legend.outside = TRUE)+
tm_borders()
# Mostrar el mapa interactivo
mapa_interactivo
#agrupamos los datos por destino de viajeros pero por tipo de vehiculo
destino_viajes_bici = datos_viajeros %>%
filter(`TIPO DE VEHÍCULO`== 1) %>%
group_by(`comuna destino`) %>%
summarise(numero_viaje = n())
mapa_destino_viajeros_1 = merge(comunas,
destino_viajes_bici,
by.x = "comuna",
by.y = "comuna destino",
all.x = TRUE)
# Establecer el modo interactivo
tmap_mode("view")
# Crear el mapa interactivo
mapa_interactivo <- tm_shape(mapa_destino_viajeros_1) +
tm_polygons("numero_viaje", style = "quantile", palette = "YlOrRd", title = "Número de Viajeros") +
tm_text(text = "numero_viaje", size = 0.7, col = "black") +
tm_layout(
title = "Comuna de destino de las personas que utilizan bicicleta",
title.size = 1.2,
legend.outside = TRUE)+
tm_borders()
# Mostrar el mapa interactivo
mapa_interactivo
#agrupamos los datos por destino de viajeros por moto
destino_viajes_moto = datos_viajeros %>%
filter(`TIPO DE VEHÍCULO`== 2) %>%
group_by(`comuna destino`) %>%
summarise(numero_viaje = n())
mapa_destino_viajeros_2 = merge(comunas,
destino_viajes_moto,
by.x = "comuna",
by.y = "comuna destino",
all.x = TRUE)
# Establecer el modo interactivo
tmap_mode("view")
# Crear el mapa interactivo
mapa_interactivo <- tm_shape(mapa_destino_viajeros_2) +
tm_polygons("numero_viaje", style = "quantile", palette = "YlOrRd", title = "Número de Viajeros") +
tm_text(text = "numero_viaje", size = 0.7, col = "black") +
tm_layout(
title = "Comuna de destino de las personas que utilizan moto",
title.size = 1.2,
legend.outside = TRUE)+
tm_borders()
# Mostrar el mapa interactivo
mapa_interactivo
#agrupamos los datos por destino de viajeros por automovil
destino_viajes_auto = datos_viajeros %>%
filter(`TIPO DE VEHÍCULO`== 3) %>%
group_by(`comuna destino`) %>%
summarise(numero_viaje = n())
mapa_destino_viajeros_3 = merge(comunas,
destino_viajes_auto,
by.x = "comuna",
by.y = "comuna destino",
all.x = TRUE)
# Establecer el modo interactivo
tmap_mode("view")
# Crear el mapa interactivo
mapa_interactivo <- tm_shape(mapa_destino_viajeros_3) +
tm_polygons("numero_viaje", style = "quantile", palette = "YlOrRd", title = "Número de Viajeros") +
tm_text(text = "numero_viaje", size = 0.7, col = "black") +
tm_layout(
title = "Comuna de destino de las personas que utilizan auto",
title.size = 1.2,
legend.outside = TRUE)+
tm_borders()
# Mostrar el mapa interactivo
mapa_interactivo
En el mapa de destino de los viajeros, se observa que las comunas que menos reciben visitantes son las comunas 12, 14 y 20. Por el contrario, las comunas más visitadas son la 17, 19 y 22, con cifras de 1,860, 2,164 y 3,154 viajes, respectivamente. Esto sugiere que estas comunas podrían ser zonas comerciales o áreas con alta demanda laboral, atrayendo personas tanto de otras comunas como de fuera de Cali para sus actividades diarias.
Además, al analizar los mapas de medios de transporte, se aprecia que las comunas 17, 19 y 22 son también los destinos principales para quienes viajan en bicicleta, moto y auto. Entre estos, la moto destaca como el medio de transporte más utilizado para llegar a estas comunas, lo que podría atribuirse a su economía y facilidad de acceso para los usuarios.
Este análisis permite comprender las dinámicas de movilidad diaria de los habitantes de Cali, reflejando los patrones de desplazamiento en la ciudad. A través de los mapas generados, se identifica claramente que las comunas 17 y 19 son puntos clave de movilización, ya que concentran tanto el origen como el destino de un gran número de viajes. Esto sugiere que estas comunas podrían tener una mayor actividad económica o laboral, lo que atrae un flujo constante de viajeros. Asimismo, se observa que la moto es el medio de transporte predominante entre los caleños, lo cual puede atribuirse a su accesibilidad económica y a la ventaja de maniobrabilidad que ofrece en el tráfico urbano. La preferencia por este medio de transporte resalta también posibles retos y oportunidades en términos de infraestructura vial, ya que su uso extenso podría estar vinculado con la necesidad de opciones de transporte más ágiles y flexibles en la ciudad. Este trabajo también destaca la utilidad de los mapas interactivos como herramientas de análisis. La capacidad de integrar y visualizar diferentes variables espaciales, como el tipo de medio de transporte y los destinos de viaje, facilita la identificación de patrones geográficos y comportamientos de movilidad. Al relacionar estos datos con los polígonos de cada comuna, podemos obtener una representación visual que aporta valor para comprender la dinámica urbana y en la toma de decisiones de informadas, en este caso podría ser en planificación y políticas de transporte en Cali.