Caso:

Es necesario elaborar mapas que representen el uso de medios de transporte, así como los puntos de origen y destino dentro de la ciudad de Cali.

Cargar mapa

## Loading required package: sp
## Linking to GEOS 3.9.3, GDAL 3.5.2, PROJ 8.2.1; sf_use_s2() is TRUE

Una vez cargadas las librerias realizamos la carga de archivos

##Carga de Archivos

ComunasUp <- shapefile("comunas_up.shp")

ComunasUp
## class       : SpatialPolygonsDataFrame 
## features    : 22 
## extent      : -76.59284, -76.46125, 3.331802, 3.505871  (xmin, xmax, ymin, ymax)
## crs         : +proj=longlat +datum=WGS84 +no_defs 
## variables   : 8
## names       : casos, comuna,   nombre, zona_recol,         area, perimetro, covid, viajes 
## min values  :     1,      1, Comuna 1,         NA,  2329397.941,  7983.949,     5,    348 
## max values  :    39,     22, Comuna 9,         NA, 12555929.024, 26480.361,    54,   2968

Se graficó el shape de comuna.shp y se descubrio que la ciudad de cali posee 22 comunas.

#plot(ComunasUp)

library(sf)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
ComunasUp_sf <- st_as_sf(ComunasUp)

ComunasUp_sf$color <- as.factor(ComunasUp_sf$comuna)  # Usar una columna para diferenciar los colores, por ejemplo ID

# Graficar el mapa con colores
ggplot(data = ComunasUp_sf) +
  geom_sf(aes(fill = color)) +
  scale_fill_viridis_d(option = "plasma") +  # Puedes elegir una paleta de colores diferente si lo prefieres
  theme_minimal() +
  labs(title = "Mapa de las Comunas de Cali",
       fill = "Comuna")

Se cargar los datos de la hoja 4 de excel:

EncuestaOrigen <- read.xlsx("EncuestaOrigenDestino.xlsx", sheet = "Sheet4")

Asegurar Datos Originales

Comunas_Origen <- EncuestaOrigen
Comunas_Origen_Cali <- ComunasUp

ComunasUp$comuna
##  [1]  6  4  5  7  8  9 21 13  1  3 19 12 10 20 16 15 17 18 14 11  2 22
Origen <- Comunas_Origen$Comunas_Origen

Numero_Casos <- table(Origen)

Se obtuvieron algunos valores como “0” y “Fueradecali” que no coinciden con el valor de las demás comunas.

Origen

Comunas_Origen_Cali$Total=NA

Origen=Comunas_Origen$comunaorigen

casos=table(Origen)

Comunas_Origen_2=table(Origen)

ComunasUp$comuna[1]
## [1] 6
which(ComunasUp$comuna[1]==as.numeric(names(Comunas_Origen_2)))
## [1] 7
ordenorig=match(ComunasUp$comuna,as.numeric(names(Comunas_Origen_2)))

casos[ordenorig]
## Origen
##   06   04   05   07   08   09   21   13   01   03   19   12   10   20   16   15 
##  998 1493  664  734 1124  952  818 1238  794 2121 2850  348 1401  733  993 1171 
##   17   18   14   11   02   22 
## 2377 1536  685  925 2968 1153
Comunas_Origen_Cali$Total=as.numeric(casos[ordenorig])

Comunas_Origen_Cali
## class       : SpatialPolygonsDataFrame 
## features    : 22 
## extent      : -76.59284, -76.46125, 3.331802, 3.505871  (xmin, xmax, ymin, ymax)
## crs         : +proj=longlat +datum=WGS84 +no_defs 
## variables   : 9
## names       : casos, comuna,   nombre, zona_recol,         area, perimetro, covid, viajes, Total 
## min values  :     1,      1, Comuna 1,         NA,  2329397.941,  7983.949,     5,    348,   348 
## max values  :    39,     22, Comuna 9,         NA, 12555929.024, 26480.361,    54,   2968,  2968

Mapa Origen

spplot(Comunas_Origen_Cali[,"Total"])

Se puede visualizar en el gráfico por comuna el total de traslados desde cada una de las comunas origen.

Bicicleta-Origen

Comunas_Origen_Cali$Total_Bicicletas_Origen=NA

Origen_bicicleta <- table(Comunas_Origen$comunaorigen, Comunas_Origen$TIPODEVEHÍCULO == 1)

Origen_bicicleta2=Origen_bicicleta[,2]

casosbici=table(Origen_bicicleta2)

ComunasUp$comuna[1]
## [1] 6
which(ComunasUp$comuna[1]==as.numeric(names(Origen_bicicleta2)))
## [1] 7
ordenorig=match(ComunasUp$comuna,as.numeric(names(Origen_bicicleta2)))

Origen_bicicleta2[ordenorig]
##  06  04  05  07  08  09  21  13  01  03  19  12  10  20  16  15  17  18  14  11 
##  44  74  38  35  52  53  44  76  36  99 141  14  82  46  73  70 141 111  37  52 
##  02  22 
## 159  55
Comunas_Origen_Cali$Total_Bicicletas_Origen=as.numeric(Origen_bicicleta2[ordenorig])

Comunas_Origen_Cali
## class       : SpatialPolygonsDataFrame 
## features    : 22 
## extent      : -76.59284, -76.46125, 3.331802, 3.505871  (xmin, xmax, ymin, ymax)
## crs         : +proj=longlat +datum=WGS84 +no_defs 
## variables   : 10
## names       : casos, comuna,   nombre, zona_recol,         area, perimetro, covid, viajes, Total, Total_Bicicletas_Origen 
## min values  :     1,      1, Comuna 1,         NA,  2329397.941,  7983.949,     5,    348,   348,                      14 
## max values  :    39,     22, Comuna 9,         NA, 12555929.024, 26480.361,    54,   2968,  2968,                     159

Mapa origen-Bicicleta

lbls <- as.character(Comunas_Origen_Cali$comuna)
spl <- list('sp.text', coordinates(Comunas_Origen_Cali), lbls, cex=.6)
spl[[2]][10,]=spl[[2]][10,]+0.005 

Bicicleta_Origen <- spplot(Comunas_Origen_Cali[,10], 
             col.regions = colorRampPalette(c("lightblue", "darkblue"))(20), 
             sp.layout = spl)
Bicicleta_Origen

Moto-origen

Comunas_Origen_Cali$Total_Moto_Origen=NA

Origen_Moto <- table(Comunas_Origen$comunaorigen, Comunas_Origen$TIPODEVEHÍCULO == 2)

Origen_Moto2=Origen_Moto[,2]

casos_Moto=table(Origen_Moto2)

ComunasUp$comuna[1]
## [1] 6
which(ComunasUp$comuna[1]==as.numeric(names(Origen_Moto2)))
## [1] 7
ordenorig=match(ComunasUp$comuna,as.numeric(names(Origen_Moto2)))

Origen_Moto2[ordenorig]
##   06   04   05   07   08   09   21   13   01   03   19   12   10   20   16   15 
##  473  720  319  350  552  413  378  554  375  970 1280  176  675  339  450  536 
##   17   18   14   11   02   22 
## 1136  746  310  431 1414  515
Comunas_Origen_Cali$Total_Moto_Origen=as.numeric(Origen_Moto2[ordenorig])

Comunas_Origen_Cali
## class       : SpatialPolygonsDataFrame 
## features    : 22 
## extent      : -76.59284, -76.46125, 3.331802, 3.505871  (xmin, xmax, ymin, ymax)
## crs         : +proj=longlat +datum=WGS84 +no_defs 
## variables   : 11
## names       : casos, comuna,   nombre, zona_recol,         area, perimetro, covid, viajes, Total, Total_Bicicletas_Origen, Total_Moto_Origen 
## min values  :     1,      1, Comuna 1,         NA,  2329397.941,  7983.949,     5,    348,   348,                      14,               176 
## max values  :    39,     22, Comuna 9,         NA, 12555929.024, 26480.361,    54,   2968,  2968,                     159,              1414

Mapa Moto_Origen

lbls = as.character(Comunas_Origen_Cali$comuna)
spl = list('sp.text', coordinates(Comunas_Origen_Cali), lbls, cex=.6)
spl[[2]][11,]=spl[[2]][11,]+0.005 

Moto_Origen <- spplot(Comunas_Origen_Cali[,11], 
             col.regions = colorRampPalette(c("pink", "red"))(20), 
             sp.layout = spl)
Moto_Origen

### Carro-Origen

Comunas_Origen_Cali$Total_Carro_Origen=NA

OrigenCarr <- table(Comunas_Origen$comunaorigen, Comunas_Origen$TIPODEVEHÍCULO == 3)

OrigenCarr2=OrigenCarr[,2]

casosCarr=table(OrigenCarr2)

ComunasUp$comuna[1]
## [1] 6
which(ComunasUp$comuna[1]==as.numeric(names(OrigenCarr2)))
## [1] 7
ordenorig=match(ComunasUp$comuna,as.numeric(names(OrigenCarr2)))

OrigenCarr2[ordenorig]
##   06   04   05   07   08   09   21   13   01   03   19   12   10   20   16   15 
##  389  551  241  283  420  382  328  486  301  854 1165  123  529  272  385  456 
##   17   18   14   11   02   22 
##  899  559  272  361 1121  489
Comunas_Origen_Cali$Total_Carro_Origen=as.numeric(OrigenCarr2[ordenorig])

Comunas_Origen_Cali
## class       : SpatialPolygonsDataFrame 
## features    : 22 
## extent      : -76.59284, -76.46125, 3.331802, 3.505871  (xmin, xmax, ymin, ymax)
## crs         : +proj=longlat +datum=WGS84 +no_defs 
## variables   : 12
## names       : casos, comuna,   nombre, zona_recol,         area, perimetro, covid, viajes, Total, Total_Bicicletas_Origen, Total_Moto_Origen, Total_Carro_Origen 
## min values  :     1,      1, Comuna 1,         NA,  2329397.941,  7983.949,     5,    348,   348,                      14,               176,                123 
## max values  :    39,     22, Comuna 9,         NA, 12555929.024, 26480.361,    54,   2968,  2968,                     159,              1414,               1165

Mapa Carro-Origen

lbls = as.character(Comunas_Origen_Cali$comuna)
spl = list('sp.text', coordinates(Comunas_Origen_Cali), lbls, cex=.6)
spl[[2]][12,]=spl[[2]][12,]+0.005 

Carro_Origen <- spplot(Comunas_Origen_Cali[,12], 
             col.regions = colorRampPalette(c("lightyellow", "darkorange"))(20), 
             sp.layout = spl)
Carro_Origen

Comunas Destino

Se realiza el agrupamiento de personas a partir del destino

ComunasUpDestino <- ComunasUp
Comunas_destino <- Comunas_Origen
ComunasUpDestino$TotaltrasDes=NA

tablaDes=Comunas_destino$comunadestino

casos=table(tablaDes)

comunadestino=table(tablaDes)

ComunasUp$comuna[1]
## [1] 6
which(ComunasUp$comuna[1]==as.numeric(names(comunadestino)))
## [1] 7
ordendest=match(ComunasUp$comuna,as.numeric(names(comunadestino)))

casos[ordendest]
## tablaDes
##   06   04   05   07   08   09   21   13   01   03   19   12   10   20   16   15 
##  716 1856  522  748 1025 1279  515  673  230 3859 3158  246  927  351  743  579 
##   17   18   14   11   02   22 
## 2164  662  379  564 4810 1860
ComunasUpDestino$TotaltrasDes=as.numeric(casos[ordendest])

ComunasUpDestino
## class       : SpatialPolygonsDataFrame 
## features    : 22 
## extent      : -76.59284, -76.46125, 3.331802, 3.505871  (xmin, xmax, ymin, ymax)
## crs         : +proj=longlat +datum=WGS84 +no_defs 
## variables   : 9
## names       : casos, comuna,   nombre, zona_recol,         area, perimetro, covid, viajes, TotaltrasDes 
## min values  :     1,      1, Comuna 1,         NA,  2329397.941,  7983.949,     5,    348,          230 
## max values  :    39,     22, Comuna 9,         NA, 12555929.024, 26480.361,    54,   2968,         4810

Mapa destino

spplot(ComunasUpDestino[,9])

Bicicleta-Destino

ComunasUpDestino$Total_Bicicleta_Destino=NA

tabla_Destino_bicicleta <- table(Comunas_Origen$comunadestino, Comunas_destino$TIPODEVEHÍCULO == 1)

tabla_Destino_bicicleta2=tabla_Destino_bicicleta[,2]

casosbici=table(tabla_Destino_bicicleta2)

ComunasUp$comuna[1]
## [1] 6
which(ComunasUp$comuna[1]==as.numeric(names(tabla_Destino_bicicleta2)))
## [1] 7
ordendest=match(ComunasUp$comuna,as.numeric(names(tabla_Destino_bicicleta2)))

tabla_Destino_bicicleta2[ordendest]
##  06  04  05  07  08  09  21  13  01  03  19  12  10  20  16  15  17  18  14  11 
##  34  85  41  41  54  65  26  33  12 189 147  15  43  25  35  20 115  31  22  29 
##  02  22 
## 218 100
ComunasUpDestino$Total_Bicicleta_Destino=as.numeric(tabla_Destino_bicicleta2[ordendest])

ComunasUpDestino
## class       : SpatialPolygonsDataFrame 
## features    : 22 
## extent      : -76.59284, -76.46125, 3.331802, 3.505871  (xmin, xmax, ymin, ymax)
## crs         : +proj=longlat +datum=WGS84 +no_defs 
## variables   : 10
## names       : casos, comuna,   nombre, zona_recol,         area, perimetro, covid, viajes, TotaltrasDes, Total_Bicicleta_Destino 
## min values  :     1,      1, Comuna 1,         NA,  2329397.941,  7983.949,     5,    348,          230,                      12 
## max values  :    39,     22, Comuna 9,         NA, 12555929.024, 26480.361,    54,   2968,         4810,                     218

Mapa Bicicleta-Destino

lbls = as.character(ComunasUpDestino$comuna)
spl = list('sp.text', coordinates(ComunasUpDestino), lbls, cex=.6)
spl[[2]][10,]=spl[[2]][10,]+0.005 

Bicicleta_Destino <- spplot(ComunasUpDestino[,10], 
             col.regions = colorRampPalette(c("lightblue", "darkblue"))(20), 
             sp.layout = spl)
Bicicleta_Destino

Moto-Destino

ComunasUpDestino$TotalMotoDes=NA

tabla_Destino_Moto <- table(Comunas_destino$comunadestino, Comunas_destino$TIPODEVEHÍCULO == 2)

tabla_Destino_Moto2=tabla_Destino_Moto[,2]

casos_Moto=table(tabla_Destino_Moto2)

ComunasUp$comuna[1]
## [1] 6
which(ComunasUp$comuna[1]==as.numeric(names(tabla_Destino_Moto2)))
## [1] 7
ordendest=match(ComunasUp$comuna,as.numeric(names(tabla_Destino_Moto2)))

tabla_Destino_Moto2[ordendest]
##   06   04   05   07   08   09   21   13   01   03   19   12   10   20   16   15 
##  323  846  215  353  470  608  243  346  112 1734 1421  128  419  151  327  271 
##   17   18   14   11   02   22 
##  927  302  188  254 2177  911
ComunasUpDestino$TotalMotoDes=as.numeric(tabla_Destino_Moto2[ordendest])

ComunasUpDestino
## class       : SpatialPolygonsDataFrame 
## features    : 22 
## extent      : -76.59284, -76.46125, 3.331802, 3.505871  (xmin, xmax, ymin, ymax)
## crs         : +proj=longlat +datum=WGS84 +no_defs 
## variables   : 11
## names       : casos, comuna,   nombre, zona_recol,         area, perimetro, covid, viajes, TotaltrasDes, Total_Bicicleta_Destino, TotalMotoDes 
## min values  :     1,      1, Comuna 1,         NA,  2329397.941,  7983.949,     5,    348,          230,                      12,          112 
## max values  :    39,     22, Comuna 9,         NA, 12555929.024, 26480.361,    54,   2968,         4810,                     218,         2177

Mapa Moto-Destino

lbls = as.character(ComunasUpDestino$comuna)
spl = list('sp.text', coordinates(ComunasUpDestino), lbls, cex=.6)
spl[[2]][11,]=spl[[2]][11,]+0.005 

MotoDes <- spplot(ComunasUpDestino[,11], 
             col.regions = colorRampPalette(c("pink", "red"))(20), 
             sp.layout = spl)
MotoDes

Carro-Destino

ComunasUpDestino$TotalCarro_Destino=NA

tabla_Destino_Carro <- table(Comunas_destino$comunadestino, Comunas_destino$TIPODEVEHÍCULO == 3)

tabla_Destino_Carro2=tabla_Destino_Carro[,2]

casosCarr=table(tabla_Destino_Carro2)

ComunasUp$comuna[1]
## [1] 6
which(ComunasUp$comuna[1]==as.numeric(names(tabla_Destino_Carro2)))
## [1] 7
ordendest=match(ComunasUp$comuna,as.numeric(names(tabla_Destino_Carro2)))

tabla_Destino_Carro2[ordendest]
##   06   04   05   07   08   09   21   13   01   03   19   12   10   20   16   15 
##  275  757  225  286  403  489  198  226   86 1557 1302   85  384  144  321  245 
##   17   18   14   11   02   22 
##  959  276  138  239 2006  694
ComunasUpDestino$TotalCarro_Destino=as.numeric(tabla_Destino_Carro2[ordendest])

ComunasUpDestino
## class       : SpatialPolygonsDataFrame 
## features    : 22 
## extent      : -76.59284, -76.46125, 3.331802, 3.505871  (xmin, xmax, ymin, ymax)
## crs         : +proj=longlat +datum=WGS84 +no_defs 
## variables   : 12
## names       : casos, comuna,   nombre, zona_recol,         area, perimetro, covid, viajes, TotaltrasDes, Total_Bicicleta_Destino, TotalMotoDes, TotalCarro_Destino 
## min values  :     1,      1, Comuna 1,         NA,  2329397.941,  7983.949,     5,    348,          230,                      12,          112,                 85 
## max values  :    39,     22, Comuna 9,         NA, 12555929.024, 26480.361,    54,   2968,         4810,                     218,         2177,               2006

Mapa Carro-Destino

lbls = as.character(ComunasUpDestino$comuna)
spl = list('sp.text', coordinates(ComunasUpDestino), lbls, cex=.6)
spl[[2]][12,]=spl[[2]][12,]+0.005 

Carro_Destino <- spplot(ComunasUpDestino[,11], 
             col.regions = colorRampPalette(c("lightyellow", "darkorange"))(20), 
             sp.layout = spl)
Carro_Destino

Conclusiones:

Teniendo en cuenta el origen el mayor movimiento se ve en las comunas El aguacatal(2), Valle de Lili (17) y El ingenio (19), si lo agrupamos por el número de personas que usan bicicleta y moto continuan siendo estas mismas comunas liderando, y en el caso del carro continua el mismo movimiento salvo por valle de Lili.

Teniendo en cuenta el Destino el mayor movimiento se ve en las comunas El aguacatal(2), San Antonio (3) y Valle de Lili (17), al agruparlo teniendo en cuenta el número de personas que usan bicicleta, moto y carro tenemos El aguacatal(2), San Antonio (3) y El ingenio (19).