Caso específico:

Se requiere graficar por medio de mapas el uso de medio de transporte, origen y destino en la ciudad de Cali.

Cargar el mapa de 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)

Despues de las librerías:

cali = shapefile("C:/Users/User/Documents/Unidad1_AnaGeoEsp/Cali/Comunas.shp")

cali
## 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(cali)

Ahora se procede a cargar los datos requeridos:

require(readxl)
## Loading required package: readxl
encuesta_od = read_excel("C:/Users/User/Documents/Unidad1_AnaGeoEsp/EncuestaOrigenDestino.xlsx", sheet = "Hoja1")
## 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`

Limpieza de los datos origen:

# Crear un nuevo dataframe llamado comunas_ori
comunas_ori <- encuesta_od
cali2 <- cali

# Filtrar comunas_ori y asignar el resultado a comunas_ori2
comunas_ori2 <- comunas_ori[comunas_ori$`comuna origen` != "Fuera de Cali" & comunas_ori$`comuna origen` != "0", ]

comunas_ori2$`comuna origen` <- as.integer(comunas_ori2$`comuna origen`)


head(comunas_ori2)
## # A tibble: 6 × 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     
## # ℹ 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>,
## #   `ESTRATO EN SU VIVIENDA` <dbl>, …

Mapa conteo general por comunas

conteo <- table(comunas_ori2$`comuna origen`)
conteoGene <- data.frame(comuna = names(conteo), conteo = as.vector(conteo))

conteoGene
##    comuna conteo
## 1       1    794
## 2       2   2968
## 3       3   2121
## 4       4   1493
## 5       5    664
## 6       6    998
## 7       7    734
## 8       8   1124
## 9       9    952
## 10     10   1401
## 11     11    925
## 12     12    348
## 13     13   1238
## 14     14    685
## 15     15   1171
## 16     16    993
## 17     17   2377
## 18     18   1536
## 19     19   2850
## 20     20    733
## 21     21    818
## 22     22   1153

Procedemos a graficar:

conteoGene1 <- merge(cali2, conteoGene, by = "comuna")

spplot(conteoGene1[,5])

Mapa por tipo de vehículo bicicleta por origen

bici_ori <- which(comunas_ori2$'TIPO DE VEHÍCULO' == 1)
conteos_bicori <- table(comunas_ori2$`comuna origen`[bici_ori])
conteos_bior <- data.frame(comuna = names(conteos_bicori), conteo = as.vector(conteos_bicori))

conteos_bior
##    comuna conteo
## 1       1     36
## 2       2    159
## 3       3     99
## 4       4     74
## 5       5     38
## 6       6     44
## 7       7     35
## 8       8     52
## 9       9     53
## 10     10     82
## 11     11     52
## 12     12     14
## 13     13     76
## 14     14     37
## 15     15     70
## 16     16     73
## 17     17    141
## 18     18    111
## 19     19    141
## 20     20     46
## 21     21     44
## 22     22     55
bici_origr <- merge(cali2, conteos_bior, by = "comuna")

spplot(bici_origr[,5])

### Mapa por tipo de vehículo moto por origen

moto_ori <- which(comunas_ori2$'TIPO DE VEHÍCULO' == 2)
conteos_motori <- table(comunas_ori2$`comuna origen`[moto_ori])
conteos_moor <- data.frame(comuna = names(conteos_motori), conteo = as.vector(conteos_motori))

conteos_moor
##    comuna conteo
## 1       1    375
## 2       2   1414
## 3       3    970
## 4       4    720
## 5       5    319
## 6       6    473
## 7       7    350
## 8       8    552
## 9       9    413
## 10     10    675
## 11     11    431
## 12     12    176
## 13     13    554
## 14     14    310
## 15     15    536
## 16     16    450
## 17     17   1136
## 18     18    746
## 19     19   1280
## 20     20    339
## 21     21    378
## 22     22    515
moto_origr <- merge(cali2, conteos_moor, by = "comuna")

spplot(moto_origr[,5])

### Mapa por tipo de vehículo carro por origen

carr_ori <- which(comunas_ori2$'TIPO DE VEHÍCULO' == 3)
conteos_carori <- table(comunas_ori2$`comuna origen`[carr_ori])
conteos_caor <- data.frame(comuna = names(conteos_carori), conteo = as.vector(conteos_carori))

conteos_caor
##    comuna conteo
## 1       1    301
## 2       2   1121
## 3       3    854
## 4       4    551
## 5       5    241
## 6       6    389
## 7       7    283
## 8       8    420
## 9       9    382
## 10     10    529
## 11     11    361
## 12     12    123
## 13     13    486
## 14     14    272
## 15     15    456
## 16     16    385
## 17     17    899
## 18     18    559
## 19     19   1165
## 20     20    272
## 21     21    328
## 22     22    489
carr_origr <- merge(cali2, conteos_caor, by = "comuna")

spplot(carr_origr[,5])

Limpieza de los datos destino:

# Crear un nuevo dataframe llamado comunas_ori
comunas_des <- encuesta_od
cali2 <- cali

# Filtrar comunas_ori y asignar el resultado a comunas_ori2
comunas_des2 <- comunas_des[comunas_des$`comuna destino` != "Fuera de Cali" & comunas_des$`comuna destino` != "0", ]

comunas_des2$`comuna destino` <- as.integer(comunas_des2$`comuna destino`)


head(comunas_des2)
## # A tibble: 6 × 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     
## # ℹ 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>,
## #   `ESTRATO EN SU VIVIENDA` <dbl>, …

Mapa conteo general por comunas destino

conteo <- table(comunas_des2$`comuna destino`)
conteoGene <- data.frame(comuna = names(conteo), conteo = as.vector(conteo))

conteoGene
##    comuna conteo
## 1       1    230
## 2       2   4810
## 3       3   3859
## 4       4   1856
## 5       5    522
## 6       6    716
## 7       7    748
## 8       8   1025
## 9       9   1279
## 10     10    927
## 11     11    564
## 12     12    246
## 13     13    673
## 14     14    379
## 15     15    579
## 16     16    743
## 17     17   2164
## 18     18    662
## 19     19   3158
## 20     20    351
## 21     21    515
## 22     22   1860

Procedemos a graficar:

conteoGene1 <- merge(cali2, conteoGene, by = "comuna")

spplot(conteoGene1[,5])

Mapa por tipo de vehículo bicicleta por destino

bici_des <- which(comunas_des2$'TIPO DE VEHÍCULO' == 1)
conteos_bicdes <- table(comunas_des2$`comuna destino`[bici_des])
conteos_bide <- data.frame(comuna = names(conteos_bicdes), conteo = as.vector(conteos_bicdes))

conteos_bide
##    comuna conteo
## 1       1     12
## 2       2    218
## 3       3    189
## 4       4     85
## 5       5     41
## 6       6     34
## 7       7     41
## 8       8     54
## 9       9     65
## 10     10     43
## 11     11     29
## 12     12     15
## 13     13     33
## 14     14     22
## 15     15     20
## 16     16     35
## 17     17    115
## 18     18     31
## 19     19    147
## 20     20     25
## 21     21     26
## 22     22    100
bici_desgr <- merge(cali2, conteos_bide, by = "comuna")

spplot(bici_desgr[,5])

Mapa por tipo de vehículo moto por destino

moto_des <- which(comunas_des2$'TIPO DE VEHÍCULO' == 2)
conteos_motdes <- table(comunas_des2$`comuna destino`[moto_des])
conteos_mode <- data.frame(comuna = names(conteos_motdes), conteo = as.vector(conteos_motdes))

conteos_mode
##    comuna conteo
## 1       1    112
## 2       2   2177
## 3       3   1734
## 4       4    846
## 5       5    215
## 6       6    323
## 7       7    353
## 8       8    470
## 9       9    608
## 10     10    419
## 11     11    254
## 12     12    128
## 13     13    346
## 14     14    188
## 15     15    271
## 16     16    327
## 17     17    927
## 18     18    302
## 19     19   1421
## 20     20    151
## 21     21    243
## 22     22    911
moto_desgr <- merge(cali2, conteos_mode, by = "comuna")

spplot(moto_desgr[,5])

Mapa por tipo de vehículo carro por destino

carr_des <- which(comunas_des2$'TIPO DE VEHÍCULO' == 3)
conteos_cardes <- table(comunas_des2$`comuna destino`[carr_des])
conteos_cade <- data.frame(comuna = names(conteos_cardes), conteo = as.vector(conteos_cardes))

conteos_cade
##    comuna conteo
## 1       1     86
## 2       2   2006
## 3       3   1557
## 4       4    757
## 5       5    225
## 6       6    275
## 7       7    286
## 8       8    403
## 9       9    489
## 10     10    384
## 11     11    239
## 12     12     85
## 13     13    226
## 14     14    138
## 15     15    245
## 16     16    321
## 17     17    959
## 18     18    276
## 19     19   1302
## 20     20    144
## 21     21    198
## 22     22    694
carr_desgr <- merge(cali2, conteos_cade, by = "comuna")

spplot(carr_desgr[,5])

Conclusiones: