ANALISIS DE CASOS

El presente trabajo corresponde a la Unidad 1 del Modulo 1 de la asignatura Analisis de Datos Geograficos y Espaciales. Se analizan desde el punto de vista geográfico varios casos de movilidad en distintos medios de transporte y entre distintas comunas de la ciudad de Cali.

Cargue de librerías y data

require(raster)
require(rgdal)
require(sp)
require(readxl)
library(dplyr)
library(leaflet)

#Cargue de Datos Vivienda
data_encuesta_od = read_excel("EncuestaOrigenDestino_1.xlsx")

# verificacion de la estructura del archivo. Se obtiene tipo DATAFRAME
class(data_encuesta_od)
## [1] "tbl_df"     "tbl"        "data.frame"
# cargue de la data geografica por comunas SHAPEFILE
# se observa que el archivo tiene definido el CRS (Coordinate Reference System)
comunas=shapefile("cali/Comunas.shp")
comunas
## 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 +b=6357748.961329674 +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(comunas)

# verificacion del contenido del shapefile comunas
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

Operaciones

Preparacion de los datos

comunas_1<-comunas
data_encuesta_od_1 <-data_encuesta_od

# Filtramos y descartamos los registros que tengan como Comuna Origen o Comuna Destino un lugar "Fuera de Cali" o no #tengan asignada una comuna valida "0".
data_encuesta_od_2<-data_encuesta_od_1[data_encuesta_od_1$`comuna origen`!= "Fuera de Cali" & data_encuesta_od_1$`comuna destino`!= "Fuera de Cali" & data_encuesta_od_1$`comuna origen`!= "0" & data_encuesta_od_1$`comuna destino`!= "0", ]

data_encuesta_od_2$`comuna origen` = as.numeric(as.character(data_encuesta_od_2$`comuna origen`))
data_encuesta_od_2$`comuna destino` = as.numeric(as.character(data_encuesta_od_2$`comuna destino`)) 

data_encuesta_od_2
## # A tibble: 22,151 × 28
##    FECHA               `ID ESTACIÓN` ESTACIÓN ACCESO MOVIM…¹ `Hora de Encuesta` 
##    <dttm>                      <dbl> <chr>    <chr>  <chr>   <dttm>             
##  1 2015-06-01 00:00:00             1 Avenida… NORTE  MOV 1   1899-12-31 06:10:00
##  2 2015-06-01 00:00:00             1 Avenida… NORTE  MOV 1   1899-12-31 06:28:00
##  3 2015-06-01 00:00:00             1 Avenida… NORTE  MOV 1   1899-12-31 06:30:00
##  4 2015-06-01 00:00:00             1 Avenida… NORTE  MOV 1   1899-12-31 07:16:00
##  5 2015-06-01 00:00:00             1 Avenida… NORTE  MOV 1   1899-12-31 07:20:00
##  6 2015-06-01 00:00:00             1 Avenida… NORTE  MOV 1   1899-12-31 07:29:00
##  7 2015-06-01 00:00:00             1 Avenida… NORTE  MOV 1   1899-12-31 07:40:00
##  8 2015-06-01 00:00:00             1 Avenida… NORTE  MOV 1   1899-12-31 07:47:00
##  9 2015-06-01 00:00:00             1 Avenida… NORTE  MOV 1   1899-12-31 07:50:00
## 10 2015-06-01 00:00:00             1 Avenida… NORTE  MOV 1   1899-12-31 07:55:00
## # … with 22,141 more rows, 22 more variables: 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>, …
#El archivo original esta en proyección Mercator, se pasa al sistema WGS84 para poder desplegarlo sobre la funcion leaflet()

proj4string(comunas_1) # Asignacion de un CRS a la data Comunas_1
## [1] "+proj=tmerc +lat_0=3.441883333 +lon_0=-76.5205625 +k=1 +x_0=1061900.18 +y_0=872364.63 +a=6379137 +b=6357748.961329674 +units=m +no_defs"
comunas_1=spTransform(comunas_1,CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")) # Convertimos a WGS84
comunas_1
## class       : SpatialPolygonsDataFrame 
## features    : 22 
## extent      : -76.59284, -76.46125, 3.331802, 3.505871  (xmin, xmax, ymin, ymax)
## crs         : +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs +towgs84=0,0,0 
## variables   : 4
## names       : OBJECTID, gid, comuna,   nombre 
## min values  :        1,  89,      1, Comuna 1 
## max values  :       22, 110,     22, Comuna 9

MAPA 1.- DESPLAZAMIENTOS POR COMUNA DE ORIGEN

#Cuenta las ocurrencias por comuna y crea un dataframe con estas dos columnas
conteos <- table(data_encuesta_od_2$`comuna origen`)
conteos_co <- data.frame(comuna = names(conteos), conteo = as.vector(conteos))
conteos_co
##    comuna conteo
## 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
# Une el shape de comunas con el dataframe de conteo de ocurrencias
comunas_1_o <- merge(comunas_1, conteos_co, by = "comuna")
#comunas_1_o

# Plot con mapa de calor del Shapefile comunas y la data
spplot(comunas_1_o[,5])

# Integracion con la capa Leaftlet
leaflet(comunas_1_o) %>% addTiles() %>% addPolygons(popup = paste(comunas_1_o$nombre,"<br>","Desplazamientos: ",comunas_1_o$conteo))

MAPA 2.- DESPLAZAMIENTOS POR COMUNA DE DESTINO

#Cuenta las ocurrencias por comuna y crea un dataframe con estas dos columnas
conteos_d <- table(data_encuesta_od_2$`comuna destino`)
conteos_cd <- data.frame(comuna = names(conteos_d), conteo = as.vector(conteos_d))
conteos_cd
##    comuna conteo
## 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
# Une el shape de comunas con el dataframe de conteo de ocurrencias
comunas_1_d <- merge(comunas_1, conteos_cd, by = "comuna")
#comunas_1_o

# Plot con mapa de calor del Shapefile comunas y la data
spplot(comunas_1_d[,5])

# Integracion con la capa Leaftlet
leaflet(comunas_1_d) %>% addTiles() %>% addPolygons(popup = paste(comunas_1_d$nombre,"<br>","Desplazamientos: ",comunas_1_d$conteo))

MAPA 3.- DESPLAZAMIENTOS POR COMUNA DE ORIGEN UTILIZANDO CARRO

#Cuenta las ocurrencias por comuna y crea un dataframe con estas dos columnas

filtro_carro <- which(data_encuesta_od_2$'TIPO DE VEHÍCULO'==3)
conteos_ocr <- table(data_encuesta_od_2$`comuna origen`[filtro_carro])
conteos_cocr <- data.frame(comuna = names(conteos_ocr), conteo = as.vector(conteos_ocr))
conteos_cocr
##    comuna conteo
## 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
# Une el shape de comunas con el dataframe de conteo de ocurrencias
comunas_1_oc <- merge(comunas_1, conteos_cocr, by = "comuna")
#comunas_1_o

# Plot con mapa de calor del Shapefile comunas y la data 
spplot(comunas_1_oc[,5])

# Integracion con la capa Leaftlet
leaflet(comunas_1_oc) %>% addTiles() %>% addPolygons(popup = paste(comunas_1_oc$nombre,"<br>","Desplazamientos: ",comunas_1_oc$conteo)) 

MAPA 4.- DESPLAZAMIENTOS POR COMUNA DE ORIGEN UTILIZANDO BICICLETA

#Cuenta las ocurrencias por comuna y crea un dataframe con estas dos columnas

filtro_bici <- which(data_encuesta_od_2$'TIPO DE VEHÍCULO'==1)
conteos_ob <- table(data_encuesta_od_2$`comuna origen`[filtro_bici])
conteos_cob <- data.frame(comuna = names(conteos_ob), conteo = as.vector(conteos_ob))
conteos_cob
##    comuna conteo
## 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
# Une el shape de comunas con el dataframe de conteo de ocurrencias
comunas_1_ob <- merge(comunas_1, conteos_cob, by = "comuna")
#comunas_1_o

# Plot con mapa de calor del Shapefile comunas y la data 
spplot(comunas_1_ob[,5])

# Integracion con la capa Leaftlet
leaflet(comunas_1_ob) %>% addTiles() %>% addPolygons(popup = paste(comunas_1_ob$nombre,"<br>","Desplazamientos: ",comunas_1_ob$conteo))

MAPA 5.- DESPLAZAMIENTOS POR COMUNA DE ORIGEN UTILIZANDO MOTO

#Cuenta las ocurrencias por comuna y crea un dataframe con estas dos columnas

filtro_moto <- which(data_encuesta_od_2$'TIPO DE VEHÍCULO'==2)
conteos_om <- table(data_encuesta_od_2$`comuna origen`[filtro_moto])
conteos_com <- data.frame(comuna = names(conteos_om), conteo = as.vector(conteos_om))
conteos_com
##    comuna conteo
## 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
# Une el shape de comunas con el dataframe de conteo de ocurrencias
comunas_1_om <- merge(comunas_1, conteos_com, by = "comuna")
#comunas_1_om

# Plot con mapa de calor del Shapefile comunas y la data
spplot(comunas_1_om[,5])

# Integracion con la capa Leaftlet
leaflet(comunas_1_om) %>% addTiles() %>% addPolygons(popup = paste(comunas_1_om$nombre,"<br>","Desplazamientos: ",comunas_1_om$conteo))

MAPA 6.- DESPLAZAMIENTOS HACIA COMUNAS DE DESTINO UTILIZANDO CARRO

#Cuenta las ocurrencias por comuna y crea un dataframe con estas dos columnas

#filtro_carro <- which(data_encuesta_od_2$'TIPO DE VEHÍCULO'==3)
conteos_dc <- table(data_encuesta_od_2$`comuna destino`[filtro_carro])
conteos_cdc <- data.frame(comuna = names(conteos_dc), conteo = as.vector(conteos_dc))
conteos_cdc
##    comuna conteo
## 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
# Une el shape de comunas con el dataframe de conteo de ocurrencias
comunas_1_dc <- merge(comunas_1, conteos_cdc, by = "comuna")
#comunas_1_om

# Plot con mapa de calor del Shapefile comunas y la data
spplot(comunas_1_dc[,5])

# Integracion con la capa Leaftlet
leaflet(comunas_1_dc) %>% addTiles() %>% addPolygons(popup = paste(comunas_1_dc$nombre,"<br>","Desplazamientos: ",comunas_1_dc$conteo))

MAPA 7.- DESPLAZAMIENTOS HACIA COMUNAS DE DESTINO UTILIZANDO BICI

#Cuenta las ocurrencias por comuna y crea un dataframe con estas dos columnas

#filtro_carro <- which(data_encuesta_od_2$'TIPO DE VEHÍCULO'==3)
conteos_db <- table(data_encuesta_od_2$`comuna destino`[filtro_bici])
conteos_cdb <- data.frame(comuna = names(conteos_db), conteo = as.vector(conteos_db))
conteos_cdb
##    comuna conteo
## 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
# Une el shape de comunas con el dataframe de conteo de ocurrencias
comunas_1_db <- merge(comunas_1, conteos_cdb, by = "comuna")
#comunas_1_om

# Plot con mapa de calor del Shapefile comunas y la data
spplot(comunas_1_db[,5])

# Integracion con la capa Leaftlet
leaflet(comunas_1_db) %>% addTiles() %>% addPolygons(popup = paste(comunas_1_db$nombre,"<br>","Desplazamientos: ",comunas_1_db$conteo))

MAPA 8.- DESPLAZAMIENTOS HACIA COMUNAS DE DESTINO UTILIZANDO MOTO

#Cuenta las ocurrencias por comuna y crea un dataframe con estas dos columnas


conteos_dm <- table(data_encuesta_od_2$`comuna destino`[filtro_moto])
conteos_cdm <- data.frame(comuna = names(conteos_dm), conteo = as.vector(conteos_dm))
conteos_cdm
##    comuna conteo
## 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
# Une el shape de comunas con el dataframe de conteo de ocurrencias
comunas_1_dm <- merge(comunas_1, conteos_cdm, by = "comuna")
#comunas_1_om

# Plot con mapa de calor del Shapefile comunas y la data
spplot(comunas_1_dm[,5])

# Integracion con la capa Leaftlet
leaflet(comunas_1_dm) %>% addTiles() %>% addPolygons(popup = paste(comunas_1_dm$nombre,"<br>","Desplazamientos: ",comunas_1_dm$conteo))

ANALISIS Y CONCLUSIONES

1.- De acuerdo con los resultados obtenidos, las 5 primeras comunas donde se originan el mayor numero de desplazamientos son en su orden: 2, 19, 17, 3, 18.
Y las 5 primeras comunas a donde se dirigen los desplazamientos son: 2, 3, 19, 17, 22.
Es interesante observar que estas comunas forman una especie de franja occidental que se extiende desde el Norte al Sur de la ciudad. Se puede inferir que esta franja constituye el polo económico y comercial de la ciudad.

2.- El medio de transporte mas utilizado es la Moto con 10307 desplazamientos, seguido por el Carro con 8605 desplazamientos y finalmente la Bicicleta con 1233 desplazamientos.
En los desplazamientos en Moto se observa que las 5 primeras comunas de origen son: 2, 19, 17, 3, 18. Y las 5 primeras comunas de destino son: 2, 3, 19, 22, 17.
En los desplazamientos en Carro se observa que las 5 primeras comunas de origen son: 19, 2, 3, 19, 4. Y las 5 primeras comunas de destino son: 2, 3, 19, 17, 4.
En los desplazamientos en Bicicleta se observa que las 5 primeras comunas de origen son: 2, 19, 17, 18, 3. Y las 5 primeras comunas de destino son: 2, 3, 19, 17, 22 .

3.- En las comunas del oriente de Cali no se observa mayor peso en esta encuesta sobre los desplazamientos. Quizá otro enfoque metodológico ubicando la encuesta en puntos estratégicos de estas comunas permita identificar otros aspectos interesantes sobre los desplazamientos en relación con la actividad económica, comercial y social de este sector oriental de la ciudad.