Actividad

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.

Desarrollo

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:

  • Se crea un DataFrame que solo contega 5 columnas
    • Columna 1: Comuna
    • Columna 2: Númerto total de viajes originados en cada comuna
    • Columna 3: Número total de viajes originados en cada comuna en bicicleta
    • Columna 4: Número total de viajes originados en cada comuna en moto
    • Columna 5: Número total de viajes originados en cada comuna en automóvil
# 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:

  • Para los viajes totales que tienen origen en las comunas, la comuna 2 con 2250 viajes y la comuna 19 con 2241 son las mayores generadoras.
  • A diferencia de las comunas 2 y 19 las comunas 12 y 14 son las que menos originan viajes de acuerdo con la encuesta.
  • Para los viajes generados en bicicleta se presenta el mismo comportamiento que en el total de los viajes ya que la comuna 2 y 19 son las que mas generan, sin embargo, en la cantidad total hay una diferencia importante ya que aquí la comuna 2 origina 122 viajes y la comuna 19 origina 113.
  • Para las que generan menos viajes en bicicleta coincide la comuna 12, sin embargo, aparece en este caso la comuna 5 descartando la comuna 14 que en el total si se ve representada.
  • En los viajes originados en moto aparece nuevamente la comuna 2 como origen de viajes con 1063 seguido por la comuna 19 con 995 viajes. Respecto a las comunas que menos viajes en moto generan estan la comuna 12 y la comuna 14.
  • Por último las comunas que más originan viajes en automóvil son la comuna 19 y la comunda 2, aparecen las mismas comunas pero en este caso particular con mayor presencia de la 19, caso contrario de lo que sucedía en los casos anteriores. Respecto a las comunas que menores viajes como origen con automóvil están la comuna 12 y la comuna 5.

Posterior a la información expuesta para el origen se realiza el mismo ejercicio para el destino de los viajes.

  • Se crea un DataFrame que solo contega 5 columnas ** Columna 1: Comuna ** Columna 2: Númerto total de viajes con destino en cada comuna ** Columna 3: Número total de viajes con destino en cada comuna en bicicleta ** Columna 4: Número total de viajes con destino en cada comuna en moto ** Columna 5: Número total de viajes con destino en cada comuna en automóvil
## 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
  • Respecto a los destinos, las comunas donde se genera la mayor cantidad de viajes que tienen este destino es la comuna 2 y la comuna 3, en este caso la comuna también genera un número importante de viajes a ese destino, sin embargo, no es la segunda comuna como si lo fue en los orígenes.
  • Los viajes en bicicleta tienen como destino también la comuna 2 y 3 y en tercer lugar la comuna 19.
  • Los viajes en moto muestran el mismo comportamiento al estar la comuna 2 y 3 como los destinos principales para los que se transportan en moto.
  • Para quienes viajan en automóvil las comunas 2 y3 continúan siendo el destino.

CONCLUSIONES

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:

  • Las comunas 2 y 19 son las mayores generadoras de viajes en los diferentes modos de transporte (bicicleta, moto, automóvil) lo que indica que una de estas comunas debe ser en su mayoría residencial con actividad comercial no tan fuerte como la comuna 2.
  • La comuna 2 se ve fuertemente representada tanto en el origen de los viajes como en el destino por lo que la misma debe tener una fuerte actividad comercial, de empresas y con actividad residencial en algunas zonas.
  • Esta comunas son un indicador fuerte de movilidad para la ciudad por lo menos en los aspectos aquí evaluados por lo que sería importante tener estrategias de control y movilidad para facilitar los tiempos de desplazamiento.
  • Como generador de viajes aparece la comuna 3 que no es un originador de viales lo que indica que esta comuna en su mayoría debe estar organizada alrededor de empresas e industria generadora de empleo con muy poca actividad residencial.
  • La comuna 3 debe ser un punto de atención para las autoridades principalmente en hora pico por temas de aseguramiento de la movilidad por parte de la institución encargada.