De acuerdo con la información proporcionada con la encuesta origen destino de movilidad de la ciudad de Cali, se solicita hacer una análisis de los origenes y destinos de la población encuestada y registrada en las bases de datos proporcionadas, con esta información se solicita hacer un análisis espacial de la información teniendo en cuenta principalmente.
Se deben presentar cada uno de los mapas (en total 8) en donde se logre evidenciar la zona más representativa por cada uno de los items solicitados y un análisis por cada uno, al final se debe hacer una conclusión del trabajo realizado.
Lo primero que realizamos en el desarrollo de esta actividad es cargar el archivo geoespacial que tiene las comunas de la ciudad de Cali, posteriormente se realiza el cargue de la base de Excel de la encuesta origen destino de movilidad.
comunas = shapefile("C:/Users/ACER/Downloads/Casos/cali/Comunas.shp")
comunas
EncuestaOrigenDestino <- read_excel("C:/Users/ACER/Downloads/Casos/EncuestaOrigenDestino.xlsx")
## New names:
## • `MUNICIPIO` -> `MUNICIPIO...7`
## • `DEPARTAMENTO / LOCALIDAD / COMUNA / DISTRITO / BARRIO / VEREDA / HITO /
## DIRECCIÓN` -> `DEPARTAMENTO / LOCALIDAD / COMUNA / DISTRITO / BARRIO / VEREDA
## / HITO / DIRECCIÓN...8`
## • `MUNICIPIO` -> `MUNICIPIO...11`
## • `DEPARTAMENTO / LOCALIDAD / COMUNA / DISTRITO / BARRIO / VEREDA / HITO /
## DIRECCIÓN` -> `DEPARTAMENTO / LOCALIDAD / COMUNA / DISTRITO / BARRIO / VEREDA
## / HITO / DIRECCIÓN...12`
## • `OTRO ¿CUÁL?` -> `OTRO ¿CUÁL?...17`
## • `OTRO ¿CUÁL?` -> `OTRO ¿CUÁL?...24`
datos = EncuestaOrigenDestino
Posteriormente se realiza una verificación de los datos y entendiendo que el ejercicio aplica solo para las comunas de Cali se eliminan de las columnas tanto de origen como destino los valores que dicen “Fueda de Cali” y la comuna “0” ya que no existe ninguna comuna que inicie con ese valor.
Teniendo en cuenta que el valor de la comuna origen y la comuna destino son caracteres se cambian a formato número y se le asigna un nombre a los valores 1, 2 y 3 para Bicicleta, Moto y Automóvil respectivamente teniendo en cuenta que es nuestro enfoque de estudio.
df <- subset(datos, !(datos$`comuna destino` == "Fuera de Cali" | datos$`comuna origen` == "Fuera de Cali" | datos$`comuna origen` == "0" | datos$`comuna destino` == "0"))
df$`comuna origen` <- as.numeric(df$`comuna origen`)
df$`comuna destino` <- as.numeric(df$`comuna destino`)
df_final <- df[!is.na(df$`comuna origen`) | !is.na(df$`comuna destino`),]
df_final$`TIPO DE VEHÍCULO`[df_final$`TIPO DE VEHÍCULO` == 1] <- "Bicicleta"
df_final$`TIPO DE VEHÍCULO`[df_final$`TIPO DE VEHÍCULO` == 2] <- "Moto"
df_final$`TIPO DE VEHÍCULO`[df_final$`TIPO DE VEHÍCULO` == 3] <- "Automovil"
Para la obtención de los datos del origen se realizan los siguientes pasos:
# Contar datos en origen
contar_origen <- df_final %>%
group_by(`comuna origen`) %>%
summarise(
bicicleta = sum(`TIPO DE VEHÍCULO` == "Bicicleta", na.rm = TRUE),
moto = sum(`TIPO DE VEHÍCULO` == "Moto", na.rm= TRUE),
automovil = sum(`TIPO DE VEHÍCULO` == "Automovil", na.rm = TRUE),
total = n(),
.groups = 'drop')
Después de generado el DataFrame se cambia el nombre a una columna para poder unir con la información del archivo geoespacial comuna.shp
colnames(contar_origen)[1] <- "comuna"
# Agregar las columnas al archivo .shp
data_unida <- merge(comunas, contar_origen, by = "comuna", all.x=TRUE)
class(data_unida)
## [1] "SpatialPolygonsDataFrame"
## attr(,"package")
## [1] "sp"
comunas@data
## OBJECTID gid comuna nombre
## 1 1 107 2 Comuna 2
## 2 2 108 1 Comuna 1
## 3 3 109 3 Comuna 3
## 4 4 110 19 Comuna 19
## 5 5 103 15 Comuna 15
## 6 6 104 17 Comuna 17
## 7 7 105 18 Comuna 18
## 8 8 106 22 Comuna 22
## 9 9 89 6 Comuna 6
## 10 10 90 4 Comuna 4
## 11 11 91 5 Comuna 5
## 12 12 92 7 Comuna 7
## 13 13 93 8 Comuna 8
## 14 14 94 9 Comuna 9
## 15 15 95 21 Comuna 21
## 16 16 96 13 Comuna 13
## 17 17 97 12 Comuna 12
## 18 18 98 14 Comuna 14
## 19 19 99 11 Comuna 11
## 20 20 100 10 Comuna 10
## 21 21 101 20 Comuna 20
## 22 22 102 16 Comuna 16
data_unida@data
## comuna OBJECTID gid nombre bicicleta moto automovil total
## 2 2 1 107 Comuna 2 122 1063 860 2250
## 1 1 2 108 Comuna 1 32 296 234 626
## 3 3 3 109 Comuna 3 84 702 679 1610
## 19 19 4 110 Comuna 19 113 995 923 2241
## 15 15 5 103 Comuna 15 55 455 377 974
## 17 17 6 104 Comuna 17 103 853 662 1762
## 18 18 7 105 Comuna 18 85 593 433 1208
## 22 22 8 106 Comuna 22 52 430 424 985
## 6 6 9 89 Comuna 6 29 377 314 797
## 4 4 10 90 Comuna 4 58 571 443 1193
## 5 5 11 91 Comuna 5 28 260 185 521
## 7 7 12 92 Comuna 7 30 272 229 583
## 8 8 13 93 Comuna 8 46 421 319 862
## 9 9 14 94 Comuna 9 36 317 295 737
## 21 21 15 95 Comuna 21 35 323 272 693
## 13 13 16 96 Comuna 13 62 453 412 1031
## 12 12 17 97 Comuna 12 10 133 88 257
## 14 14 18 98 Comuna 14 32 258 236 575
## 11 11 19 99 Comuna 11 42 339 268 717
## 10 10 20 100 Comuna 10 71 535 404 1094
## 20 20 21 101 Comuna 20 33 278 228 599
## 16 16 22 102 Comuna 16 65 383 320 836
Se generan los mapas por cada una de las solicitudes realizadas.
# El total para el origen por las comunas
spplot(data_unida, zcol="total",
main = "Cantidad de viajes (Origen) por comuna",
colorkey = TRUE,
col.regions = rev(viridis(100)))
# Imprimir la tabla de datos
comuna_t <- data_unida@data[,c("comuna","total")]
ct_ordenada <- comuna_t[order(comuna_t$comuna),]
print(ct_ordenada)
## comuna total
## 1 1 626
## 2 2 2250
## 3 3 1610
## 4 4 1193
## 5 5 521
## 6 6 797
## 7 7 583
## 8 8 862
## 9 9 737
## 10 10 1094
## 11 11 717
## 12 12 257
## 13 13 1031
## 14 14 575
## 15 15 974
## 16 16 836
## 17 17 1762
## 18 18 1208
## 19 19 2241
## 20 20 599
## 21 21 693
## 22 22 985
# El total para el origen por bicicletas
spplot(data_unida, zcol="bicicleta",
main = "Cantidad de viajes (Origen) en bicicleta por comuna",
colorkey = TRUE,
col.regions = rev(viridis(100)))
# Imprimir la tabla de datos
comuna_t <- data_unida@data[,c("comuna","bicicleta")]
ct_ordenada <- comuna_t[order(comuna_t$comuna),]
print(ct_ordenada)
## comuna bicicleta
## 1 1 32
## 2 2 122
## 3 3 84
## 4 4 58
## 5 5 28
## 6 6 29
## 7 7 30
## 8 8 46
## 9 9 36
## 10 10 71
## 11 11 42
## 12 12 10
## 13 13 62
## 14 14 32
## 15 15 55
## 16 16 65
## 17 17 103
## 18 18 85
## 19 19 113
## 20 20 33
## 21 21 35
## 22 22 52
# El total para el origen por moto
spplot(data_unida, zcol="moto",
main = "Cantidad de viajes (Origen) en moto por comuna",
colorkey = TRUE,
col.regions = rev(viridis(100)))
# Imprimir la tabla de datos
comuna_t <- data_unida@data[,c("comuna","moto")]
ct_ordenada <- comuna_t[order(comuna_t$comuna),]
print(ct_ordenada)
## comuna moto
## 1 1 296
## 2 2 1063
## 3 3 702
## 4 4 571
## 5 5 260
## 6 6 377
## 7 7 272
## 8 8 421
## 9 9 317
## 10 10 535
## 11 11 339
## 12 12 133
## 13 13 453
## 14 14 258
## 15 15 455
## 16 16 383
## 17 17 853
## 18 18 593
## 19 19 995
## 20 20 278
## 21 21 323
## 22 22 430
# EL total para el origen por automovil
spplot(data_unida, zcol="automovil",
main = "Cantidad de viajes (Origen) en automóvil por comuna",
colorkey = TRUE,
col.regions = rev(viridis(100)))
# Imprimir la tabla de datos
comuna_t <- data_unida@data[,c("comuna","automovil")]
ct_ordenada <- comuna_t[order(comuna_t$comuna),]
print(ct_ordenada)
## comuna automovil
## 1 1 234
## 2 2 860
## 3 3 679
## 4 4 443
## 5 5 185
## 6 6 314
## 7 7 229
## 8 8 319
## 9 9 295
## 10 10 404
## 11 11 268
## 12 12 88
## 13 13 412
## 14 14 236
## 15 15 377
## 16 16 320
## 17 17 662
## 18 18 433
## 19 19 923
## 20 20 228
## 21 21 272
## 22 22 424
De acuerdo con la información de cada uno de los mapas podemos analizar lo siguiente:
Posterior a la información expuesta para el origen se realiza el mismo ejercicio para el destino de los viajes.
## Contar en el destino
# Contar datos en destino
contar_destino <- df_final %>%
group_by(`comuna destino`) %>%
summarise(
bicicleta = sum(`TIPO DE VEHÍCULO` == "Bicicleta", na.rm = TRUE),
moto = sum(`TIPO DE VEHÍCULO` == "Moto", na.rm= TRUE),
automovil = sum(`TIPO DE VEHÍCULO` == "Automovil", na.rm = TRUE),
total = n(),
.groups = 'drop')
Después de generado el DataFrame se cambia el nombre a una columna para poder unir con la información del archivo geoespacial comuna.shp
colnames(contar_destino)[1] <- "comuna"
# Agregar las columnas al archivo .shp
data_unida1 <- merge(comunas, contar_destino, by = "comuna", all.x=TRUE)
class(data_unida1)
## [1] "SpatialPolygonsDataFrame"
## attr(,"package")
## [1] "sp"
comunas@data
## OBJECTID gid comuna nombre
## 1 1 107 2 Comuna 2
## 2 2 108 1 Comuna 1
## 3 3 109 3 Comuna 3
## 4 4 110 19 Comuna 19
## 5 5 103 15 Comuna 15
## 6 6 104 17 Comuna 17
## 7 7 105 18 Comuna 18
## 8 8 106 22 Comuna 22
## 9 9 89 6 Comuna 6
## 10 10 90 4 Comuna 4
## 11 11 91 5 Comuna 5
## 12 12 92 7 Comuna 7
## 13 13 93 8 Comuna 8
## 14 14 94 9 Comuna 9
## 15 15 95 21 Comuna 21
## 16 16 96 13 Comuna 13
## 17 17 97 12 Comuna 12
## 18 18 98 14 Comuna 14
## 19 19 99 11 Comuna 11
## 20 20 100 10 Comuna 10
## 21 21 101 20 Comuna 20
## 22 22 102 16 Comuna 16
data_unida1@data
## comuna OBJECTID gid nombre bicicleta moto automovil total
## 2 2 1 107 Comuna 2 194 1734 1518 3773
## 1 1 2 108 Comuna 1 9 90 73 187
## 3 3 3 109 Comuna 3 169 1333 1098 2887
## 19 19 4 110 Comuna 19 131 1152 926 2441
## 15 15 5 103 Comuna 15 17 232 199 481
## 17 17 6 104 Comuna 17 95 744 650 1616
## 18 18 7 105 Comuna 18 28 240 216 526
## 22 22 8 106 Comuna 22 95 766 564 1561
## 6 6 9 89 Comuna 6 31 255 208 570
## 4 4 10 90 Comuna 4 80 678 596 1497
## 5 5 11 91 Comuna 5 38 183 181 440
## 7 7 12 92 Comuna 7 36 279 224 598
## 8 8 13 93 Comuna 8 46 382 325 830
## 9 9 14 94 Comuna 9 56 512 382 1055
## 21 21 15 95 Comuna 21 24 202 164 434
## 13 13 16 96 Comuna 13 28 285 189 560
## 12 12 17 97 Comuna 12 13 106 71 207
## 14 14 18 98 Comuna 14 20 150 120 316
## 11 11 19 99 Comuna 11 26 217 204 483
## 10 10 20 100 Comuna 10 34 353 291 741
## 20 20 21 101 Comuna 20 22 124 131 303
## 16 16 22 102 Comuna 16 31 290 275 645
Se generan los mapas por cada una de las solicitudes realizadas.
# El total para el destino por las comunas
spplot(data_unida1, zcol="total",
main = "Cantidad de viajes (destino) por comuna",
colorkey = TRUE,
col.regions = rev(viridis(100)))
# Imprimir la tabla de datos
comuna_t <- data_unida1@data[,c("comuna","total")]
ct_ordenada <- comuna_t[order(comuna_t$comuna),]
print(ct_ordenada)
## comuna total
## 1 1 187
## 2 2 3773
## 3 3 2887
## 4 4 1497
## 5 5 440
## 6 6 570
## 7 7 598
## 8 8 830
## 9 9 1055
## 10 10 741
## 11 11 483
## 12 12 207
## 13 13 560
## 14 14 316
## 15 15 481
## 16 16 645
## 17 17 1616
## 18 18 526
## 19 19 2441
## 20 20 303
## 21 21 434
## 22 22 1561
# El total para el destino por bicicletas
spplot(data_unida1, zcol="bicicleta",
main = "Cantidad de viajes (destino) por comuna en bicicleta",
colorkey = TRUE,
col.regions = rev(viridis(100)))
# Imprimir la tabla de datos
comuna_t <- data_unida1@data[,c("comuna","bicicleta")]
ct_ordenada <- comuna_t[order(comuna_t$comuna),]
print(ct_ordenada)
## comuna bicicleta
## 1 1 9
## 2 2 194
## 3 3 169
## 4 4 80
## 5 5 38
## 6 6 31
## 7 7 36
## 8 8 46
## 9 9 56
## 10 10 34
## 11 11 26
## 12 12 13
## 13 13 28
## 14 14 20
## 15 15 17
## 16 16 31
## 17 17 95
## 18 18 28
## 19 19 131
## 20 20 22
## 21 21 24
## 22 22 95
# El total para el destino por moto
spplot(data_unida1, zcol="moto",
main = "Cantidad de viajes (destino) por comuna en moto",
colorkey = TRUE,
col.regions = rev(viridis(100)))
# Imprimir la tabla de datos
comuna_t <- data_unida1@data[,c("comuna","moto")]
ct_ordenada <- comuna_t[order(comuna_t$comuna),]
print(ct_ordenada)
## comuna moto
## 1 1 90
## 2 2 1734
## 3 3 1333
## 4 4 678
## 5 5 183
## 6 6 255
## 7 7 279
## 8 8 382
## 9 9 512
## 10 10 353
## 11 11 217
## 12 12 106
## 13 13 285
## 14 14 150
## 15 15 232
## 16 16 290
## 17 17 744
## 18 18 240
## 19 19 1152
## 20 20 124
## 21 21 202
## 22 22 766
# EL total para el destino por automovil
spplot(data_unida1, zcol="automovil",
main = "Cantidad de viajes (destino) por comuna en automovil",
colorkey = TRUE,
col.regions = rev(viridis(100)))
# Imprimir la tabla de datos
comuna_t <- data_unida1@data[,c("comuna","automovil")]
ct_ordenada <- comuna_t[order(comuna_t$comuna),]
print(ct_ordenada)
## comuna automovil
## 1 1 73
## 2 2 1518
## 3 3 1098
## 4 4 596
## 5 5 181
## 6 6 208
## 7 7 224
## 8 8 325
## 9 9 382
## 10 10 291
## 11 11 204
## 12 12 71
## 13 13 189
## 14 14 120
## 15 15 199
## 16 16 275
## 17 17 650
## 18 18 216
## 19 19 926
## 20 20 131
## 21 21 164
## 22 22 564
Los mapas de intensidad nos permiten identificar claramente en este ejercicio dónde se están generando la mayor cantidad de viajes y el destino de estos, como conclusiones de este ejercicio resalto los siguientes puntos: