Se requiere graficar por medio de mapas el uso de medio de transporte, origen y destino en la ciudad de Cali.
library(sf)
## Linking to GEOS 3.11.2, GDAL 3.8.2, PROJ 9.3.1; sf_use_s2() is TRUE
library(sp)
library(raster)
library(leaflet)
Despues de las librerías:
comunascali = shapefile("~/Unidad1_AnaGeoEsp/Comunascali/Comunas_up.shp")
comunascali
## 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
Nota: Es importante tener en cuenta que el sistema de coordenadas es ‘WGS84’ - (“World Geodetic System 1984”).
Se grafíca el shapefile comuna.shp
El mapa tiene 22 comunas de la ciudad de Cali.
plot(comunascali)
Graficando las comunas cali usando la función spplot.
spplot(comunascali)
Ahora se procede a cargar los datos requeridos, de la hoja con nombre “Sheet4”:
require(readxl)
## Loading required package: readxl
encuesta_od = read_excel("~/Unidad1_AnaGeoEsp/EncuestaOrigenDestino.xlsx", sheet = "Sheet4")
## 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`
comunas_ori <- encuesta_od
comunascaliOri <- comunascali
comunascali$comuna
## [1] 6 4 5 7 8 9 21 13 1 3 19 12 10 20 16 15 17 18 14 11 2 22
tablaOri=comunas_ori$comunaorigen
casos=table(tablaOri)
Se obtiene el número de comunas de la ciudad de Cali, en este caso sabemos son 22, pero se tiene en su orden específico.
Nota: se tienen dos valores diferentes a las 22 comunas, estos son ‘0’ y ‘Fueradecali’
De igual forma se hace un agrupamiento de personas por comuna origen.
comunascaliOri$TotaltrasOri=NA
tablaOri=comunas_ori$comunaorigen
casos=table(tablaOri)
comunaorigen=table(tablaOri)
comunascali$comuna[1]
## [1] 6
which(comunascali$comuna[1]==as.numeric(names(comunaorigen)))
## [1] 7
ordenorig=match(comunascali$comuna,as.numeric(names(comunaorigen)))
casos[ordenorig]
## tablaOri
## 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
comunascaliOri$TotaltrasOri=as.numeric(casos[ordenorig])
comunascaliOri
## 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, TotaltrasOri
## 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
spplot(comunascaliOri[,8])
Se puede observar el gráfico por comuna con el total de traslados desde cada una de las comunas origen.
comunascaliOri$TotalBiciOri=NA
tablaOribici <- table(comunas_ori$comunaorigen, comunas_ori$TIPODEVEHÍCULO == 1)
tablaOribici2=tablaOribici[,2]
casosbici=table(tablaOribici2)
comunascali$comuna[1]
## [1] 6
which(comunascali$comuna[1]==as.numeric(names(tablaOribici2)))
## [1] 7
ordenorig=match(comunascali$comuna,as.numeric(names(tablaOribici2)))
tablaOribici2[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
comunascaliOri$TotalBiciOri=as.numeric(tablaOribici2[ordenorig])
comunascaliOri
## 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, TotaltrasOri, TotalBiciOri
## 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
lbls = as.character(comunascaliOri$comuna)
spl = list('sp.text', coordinates(comunascaliOri), lbls, cex=.6)
spl[[2]][10,]=spl[[2]][10,]+0.005
biciOri <- spplot(comunascaliOri[,10],
col.regions = colorRampPalette(c("lightgreen", "darkgreen"))(20),
sp.layout = spl)
biciOri
comunascaliOri$TotalMotoOri=NA
tablaOriMoto <- table(comunas_ori$comunaorigen, comunas_ori$TIPODEVEHÍCULO == 2)
tablaOriMoto2=tablaOriMoto[,2]
casosMoto=table(tablaOriMoto2)
comunascali$comuna[1]
## [1] 6
which(comunascali$comuna[1]==as.numeric(names(tablaOriMoto2)))
## [1] 7
ordenorig=match(comunascali$comuna,as.numeric(names(tablaOriMoto2)))
tablaOriMoto2[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
comunascaliOri$TotalMotoOri=as.numeric(tablaOriMoto2[ordenorig])
comunascaliOri
## 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, TotaltrasOri, TotalBiciOri, TotalMotoOri
## 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
lbls = as.character(comunascaliOri$comuna)
spl = list('sp.text', coordinates(comunascaliOri), lbls, cex=.6)
spl[[2]][11,]=spl[[2]][11,]+0.005
MotoOri <- spplot(comunascaliOri[,11],
col.regions = colorRampPalette(c("lightblue", "darkblue"))(20),
sp.layout = spl)
MotoOri
### Tipo de vehículo Carro por comuna origen
comunascaliOri$TotalCarrOri=NA
tablaOriCarr <- table(comunas_ori$comunaorigen, comunas_ori$TIPODEVEHÍCULO == 3)
tablaOriCarr2=tablaOriCarr[,2]
casosCarr=table(tablaOriCarr2)
comunascali$comuna[1]
## [1] 6
which(comunascali$comuna[1]==as.numeric(names(tablaOriCarr2)))
## [1] 7
ordenorig=match(comunascali$comuna,as.numeric(names(tablaOriCarr2)))
tablaOriCarr2[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
comunascaliOri$TotalCarrOri=as.numeric(tablaOriCarr2[ordenorig])
comunascaliOri
## 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, TotaltrasOri, TotalBiciOri, TotalMotoOri, TotalCarrOri
## 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
lbls = as.character(comunascaliOri$comuna)
spl = list('sp.text', coordinates(comunascaliOri), lbls, cex=.6)
spl[[2]][12,]=spl[[2]][12,]+0.005
CarrOri <- spplot(comunascaliOri[,12],
col.regions = colorRampPalette(c("lightyellow", "darkorange"))(20),
sp.layout = spl)
CarrOri
TotalOri <- spplot(comunascaliOri[,9:12],
col.regions = terrain.colors(20,.95,.4),
sp.layout = spl)
TotalOri
Se hace un agrupamiento de personas por comuna destino
comunascaliDes <- comunascali
comunas_des <- encuesta_od
comunascaliDes$TotaltrasDes=NA
tablaDes=comunas_des$comunadestino
casos=table(tablaDes)
comunadestino=table(tablaDes)
comunascali$comuna[1]
## [1] 6
which(comunascali$comuna[1]==as.numeric(names(comunadestino)))
## [1] 7
ordendest=match(comunascali$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
comunascaliDes$TotaltrasDes=as.numeric(casos[ordendest])
comunascaliDes
## 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
spplot(comunascaliDes[,9])
comunascaliDes$TotalBiciDes=NA
tablaDesbici <- table(comunas_ori$comunadestino, comunas_des$TIPODEVEHÍCULO == 1)
tablaDesbici2=tablaDesbici[,2]
casosbici=table(tablaDesbici2)
comunascali$comuna[1]
## [1] 6
which(comunascali$comuna[1]==as.numeric(names(tablaDesbici2)))
## [1] 7
ordendest=match(comunascali$comuna,as.numeric(names(tablaDesbici2)))
tablaDesbici2[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
comunascaliDes$TotalBiciDes=as.numeric(tablaDesbici2[ordendest])
comunascaliDes
## 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, TotalBiciDes
## 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
lbls = as.character(comunascaliDes$comuna)
spl = list('sp.text', coordinates(comunascaliDes), lbls, cex=.6)
spl[[2]][10,]=spl[[2]][10,]+0.005
biciDes <- spplot(comunascaliDes[,10],
col.regions = colorRampPalette(c("lightgreen", "darkgreen"))(20),
sp.layout = spl)
biciDes
comunascaliDes$TotalMotoDes=NA
tablaDesMoto <- table(comunas_des$comunadestino, comunas_des$TIPODEVEHÍCULO == 2)
tablaDesMoto2=tablaDesMoto[,2]
casosMoto=table(tablaDesMoto2)
comunascali$comuna[1]
## [1] 6
which(comunascali$comuna[1]==as.numeric(names(tablaDesMoto2)))
## [1] 7
ordendest=match(comunascali$comuna,as.numeric(names(tablaDesMoto2)))
tablaDesMoto2[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
comunascaliDes$TotalMotoDes=as.numeric(tablaDesMoto2[ordendest])
comunascaliDes
## 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, TotalBiciDes, 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
lbls = as.character(comunascaliDes$comuna)
spl = list('sp.text', coordinates(comunascaliDes), lbls, cex=.6)
spl[[2]][11,]=spl[[2]][11,]+0.005
MotoDes <- spplot(comunascaliDes[,11],
col.regions = colorRampPalette(c("lightblue", "darkblue"))(20),
sp.layout = spl)
MotoDes
comunascaliDes$TotalCarrDes=NA
tablaDesCarr <- table(comunas_des$comunadestino, comunas_des$TIPODEVEHÍCULO == 3)
tablaDesCarr2=tablaDesCarr[,2]
casosCarr=table(tablaDesCarr2)
comunascali$comuna[1]
## [1] 6
which(comunascali$comuna[1]==as.numeric(names(tablaDesCarr2)))
## [1] 7
ordendest=match(comunascali$comuna,as.numeric(names(tablaDesCarr2)))
tablaDesCarr2[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
comunascaliDes$TotalCarrDes=as.numeric(tablaDesCarr2[ordendest])
comunascaliDes
## 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, TotalBiciDes, TotalMotoDes, TotalCarrDes
## 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
lbls = as.character(comunascaliDes$comuna)
spl = list('sp.text', coordinates(comunascaliDes), lbls, cex=.6)
spl[[2]][12,]=spl[[2]][12,]+0.005
CarrDes <- spplot(comunascaliDes[,11],
col.regions = colorRampPalette(c("lightyellow", "darkorange"))(20),
sp.layout = spl)
CarrDes
TotalDes <- spplot(comunascaliDes[,9:12],
col.regions = terrain.colors(20,.95,.4),
sp.layout = spl)
TotalDes
Las comunas origen y destino con mayor traslado de población son: 2, 19, 17 y 3.
Las comunas donde más movimiento se ve por origen y tipo de vehículo bicicleta son: 2, 17, 19 y 18.
Las comunas donde más movimiento se ve por origen y tipo de vehículo moto son: 2, 19 y 17.
Las comunas donde más movimiento se ve por origen y tipo de vehículo carro son: 2 y 19.
Las comunas con mayor población destino son: 2, 3, 19, y 17
Las comunas donde más movimiento se ve por destino y tipo de vehículo bicicleta son: 2, 3, y 19
Las comunas donde más movimiento se ve por destino y tipo de vehículo moto son: 2, 3 y 19.
Las comunas donde más movimiento se ve por destino y tipo de vehículo carro son: 2, 3 y 19
Se observa que el entendimiento por medio de gráficos y mapas es más puntual y efectivo que solo tablas o matrices o vectores.