Taller 1 Analisis Geoespacial

A continuacion se realizara el analisis del comportamiento de la movilidad de la ciudad de Cali en sus respectivas comunas y los diferentes tipos de vehiculos o formas de transportarse:

Tipo de Vehículo
1 Bicicleta 2 Moto 3 Automovil 4 Campero (Guala) 5 Taxi 6 Intermunicipal - Bus 7 Intermunicipal - Buseta 8 Intermunicipal - Van 9 Taxi blanco 77 Otro ¿Cuál?

Cargue de archivos:

EncuestaOrigenDestino = read_excel("~/R/Analisis Geoespacial/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_Vivienda = read_excel("~/R/Informe-1/datasets/Datos_Vivienda.xlsx")
Comunas_Nueva=shapefile("~/R/Analisis Geoespacial/mc_comunas/Comunas_Nueva.shp") # se Modifico en QGIS debido a que se tenia problemas con la proyeccion.

A. Aplicación de las técnicas apropiadas para solucionar el caso. 25%

 B. Implementación de la solución en R y limpieza del código. 25%
 C. Interpretación de los resultados. 25%
 D. Conclusiones sobre los resultados. 25%

Head de informacion cargada:

# visualizacion mapa comunas
leaflet(Comunas_Nueva) %>%addTiles() %>%addPolygons(popup = Comunas_Nueva$nombre) 
# visualizacion Informacion Origen Destino
head(EncuestaOrigenDestino)
## # 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>, …
# visualizacion Informacion de comina
head(Comunas_Nueva)
##   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

se agrego informacion de viviendas de Cali a la capa de comunas (agrupado)

# se transforma un dataframe a un spatialdataframe
Datos_Vivienda2=na.omit(Datos_Vivienda)
mapa_viviendas=SpatialPointsDataFrame(coords = Datos_Vivienda2[,11:12],data =Datos_Vivienda2 )

# se visualiza el nuevo dataframe mapa_viviendas
leaflet(mapa_viviendas) %>%addTiles() %>%addCircleMarkers(radius = 0.1,clusterOptions = markerClusterOptions())
# visualizacion de puntos sobre poligonos de viviendas vs comuna
plot(Comunas_Nueva)
points(mapa_viviendas, col ='Red')

# se realiza cambio de proyeccion para poder realizar el join espacial
crs(mapa_viviendas) ="+proj=longlat +datum=WGS84 +no_defs"
total_viviendas=over(x= Comunas_Nueva,y= mapa_viviendas[,1],fn=length)
Comunas_Nueva@data$viviendas=total_viviendas$Zona

# definicion de layers
lbls = as.character(Comunas_Nueva$comuna)
spl = list('sp.text', coordinates(Comunas_Nueva), lbls, cex=.6)
# Visualizacion del nuevo campo
g1=spplot(Comunas_Nueva[,5], col.regions= terrain.colors(20,.95,.4), sp.layout = spl)
g1

Limpieza de datos oriden destino

#limpieza de datos para volverlos numericos o caracter
# numerico el tipo de vehiculo
com1=as.numeric(EncuestaOrigenDestino$`TIPO DE VEHÍCULO`)

# volver numericos la comunidad origen y lo q tenga caracter se coloca como nulo
com=as.numeric(EncuestaOrigenDestino$`comuna origen`)
## Warning: NAs introducidos por coerción

================================================================================

seleccion de los datos a usar en origen destino

#seleccion solo de las columnas que tienen informacion
pos=which(com>=1&com<=22)
origenes=EncuestaOrigenDestino[pos,]
res=data.frame(table(origenes$`comuna origen`))

# cuando se vaya a relacionar la informacion es mejor tenerla en tipo caracter
as.character(res$Var1)
##  [1] "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" "13" "14" "15"
## [16] "16" "17" "18" "19" "20" "21" "22"
# dejar en orden en el mismo orden del shape de las comunas
#ejemplo uno, de orden
orden=Comunas_Nueva$comuna
res_orden= res[orden,]

Comunas_Nueva@data$total_Origen=res_orden$Freq

# se valida que quedo el campo creado
Comunas_Nueva@data
##    OBJECTID gid comuna    nombre viviendas total_Origen
## 1         1 107      2  Comuna 2      1445         2968
## 2         2 108      1  Comuna 1       132          794
## 3         3 109      3  Comuna 3       449         2121
## 4         4 110     19 Comuna 19      1092         2850
## 5         5 103     15 Comuna 15       106         1171
## 6         6 104     17 Comuna 17      2165         2377
## 7         7 105     18 Comuna 18       178         1536
## 8         8 106     22 Comuna 22       954         1153
## 9         9  89      6  Comuna 6        90          998
## 10       10  90      4  Comuna 4       165         1493
## 11       11  91      5  Comuna 5       331          664
## 12       12  92      7  Comuna 7        78          734
## 13       13  93      8  Comuna 8       173         1124
## 14       14  94      9  Comuna 9       196          952
## 15       15  95     21 Comuna 21        36          818
## 16       16  96     13 Comuna 13        34         1238
## 17       17  97     12 Comuna 12        36          348
## 18       18  98     14 Comuna 14        41          685
## 19       19  99     11 Comuna 11        90          925
## 20       20 100     10 Comuna 10       316         1401
## 21       21 101     20 Comuna 20        51          733
## 22       22 102     16 Comuna 16       116          993
#visualizar el nuevo campo
g2=spplot(Comunas_Nueva[,6], col.regions= heat.colors(20,.95,.4), sp.layout = spl)
g2

Caso Bicicleta

#caso Origenes Bici

pos=which(com>=1&com<=22&EncuestaOrigenDestino$`TIPO DE VEHÍCULO`==1)
origenes=EncuestaOrigenDestino[pos,]
res=data.frame(table(origenes$`comuna origen`))

orden=Comunas_Nueva$comuna
res_orden= res[orden,]

Comunas_Nueva@data$total_origen_bici=res_orden$Freq
head(Comunas_Nueva@data)
##   OBJECTID gid comuna    nombre viviendas total_Origen total_origen_bici
## 1        1 107      2  Comuna 2      1445         2968               159
## 2        2 108      1  Comuna 1       132          794                36
## 3        3 109      3  Comuna 3       449         2121                99
## 4        4 110     19 Comuna 19      1092         2850               141
## 5        5 103     15 Comuna 15       106         1171                70
## 6        6 104     17 Comuna 17      2165         2377               141
lbls = as.character(Comunas_Nueva$comuna)
spl = list('sp.text', coordinates(Comunas_Nueva), lbls, cex=.6)
spl[[2]][7,]=spl[[2]][7,]+0.005 # este es para la comuna 21 que es como una L para correr el centroide

g3=spplot(Comunas_Nueva[,7], col.regions= heat.colors(20,.95,.4), sp.layout = spl)
g3

================================================================================

Caso Moto

#caso Origenes Moto


pos=which(com>=1&com<=22&EncuestaOrigenDestino$`TIPO DE VEHÍCULO`==2)
origenes=EncuestaOrigenDestino[pos,]
res=data.frame(table(origenes$`comuna origen`))

orden=Comunas_Nueva$comuna
res_orden= res[orden,]

Comunas_Nueva@data$total_Origen_moto=res_orden$Freq
head(Comunas_Nueva@data)
##   OBJECTID gid comuna    nombre viviendas total_Origen total_origen_bici
## 1        1 107      2  Comuna 2      1445         2968               159
## 2        2 108      1  Comuna 1       132          794                36
## 3        3 109      3  Comuna 3       449         2121                99
## 4        4 110     19 Comuna 19      1092         2850               141
## 5        5 103     15 Comuna 15       106         1171                70
## 6        6 104     17 Comuna 17      2165         2377               141
##   total_Origen_moto
## 1              1414
## 2               375
## 3               970
## 4              1280
## 5               536
## 6              1136
g4=spplot(Comunas_Nueva[,8], col.regions= heat.colors(20,.95,.4), sp.layout = spl)
g4

Caso Carro

#caso Origenes Carro


pos=which(com>=1&com<=22&EncuestaOrigenDestino$`TIPO DE VEHÍCULO`==3)
origenes=EncuestaOrigenDestino[pos,]
res=data.frame(table(origenes$`comuna origen`))

orden=Comunas_Nueva$comuna
res_orden= res[orden,]

Comunas_Nueva@data$total_Origen_carro=res_orden$Freq
head(Comunas_Nueva@data)
##   OBJECTID gid comuna    nombre viviendas total_Origen total_origen_bici
## 1        1 107      2  Comuna 2      1445         2968               159
## 2        2 108      1  Comuna 1       132          794                36
## 3        3 109      3  Comuna 3       449         2121                99
## 4        4 110     19 Comuna 19      1092         2850               141
## 5        5 103     15 Comuna 15       106         1171                70
## 6        6 104     17 Comuna 17      2165         2377               141
##   total_Origen_moto total_Origen_carro
## 1              1414               1121
## 2               375                301
## 3               970                854
## 4              1280               1165
## 5               536                456
## 6              1136                899
g5=spplot(Comunas_Nueva[,9], col.regions= heat.colors(20,.95,.4), sp.layout = spl)
g5

Graficar varios mapas

# con terrain
g6=spplot(Comunas_Nueva[,7:9], col.regions= terrain.colors(20,.95,.4), sp.layout = spl)
g6

Se calculan tasas

Comunas_Nueva@data$tasa_origen_bici=Comunas_Nueva@data$total_origen_bici/Comunas_Nueva@data$total_Origen
Comunas_Nueva@data$tasa_origen_moto=Comunas_Nueva@data$total_Origen_moto/Comunas_Nueva@data$total_Origen
Comunas_Nueva@data$tasa_origen_carro=Comunas_Nueva@data$total_Origen_carro/Comunas_Nueva@data$total_Origen

g7=spplot(Comunas_Nueva[,10:12], col.regions= terrain.colors(20,.95,.4), sp.layout = spl)
g7

================================================================================

Analisis de Destino:

Limpieza de datos

com=as.numeric(EncuestaOrigenDestino$`comuna destino`)
## Warning: NAs introducidos por coerción

================================================================================

#seleccion solo de las columnas que tienen informacion
pos=which(com>=1&com<=22)
destino=EncuestaOrigenDestino[pos,]
res=data.frame(table(origenes$`comuna destino`))

# cuando se vaya a relacionar la informacion es mejor tenerla en tipo caracter
as.character(res$Var1)
##  [1] "0"             "01"            "02"            "03"           
##  [5] "04"            "05"            "06"            "07"           
##  [9] "08"            "09"            "10"            "11"           
## [13] "12"            "13"            "14"            "15"           
## [17] "16"            "17"            "18"            "19"           
## [21] "20"            "21"            "22"            "Fuera de Cali"
# dejar en orden en el mismo orden del shape de las comunas
#ejemplo uno, de orden
orden=Comunas_Nueva$comuna
res_orden= res[orden,]

Comunas_Nueva@data$total_destino=res_orden$Freq

# se valida que quedo el campo creado
Comunas_Nueva@data
##    OBJECTID gid comuna    nombre viviendas total_Origen total_origen_bici
## 1         1 107      2  Comuna 2      1445         2968               159
## 2         2 108      1  Comuna 1       132          794                36
## 3         3 109      3  Comuna 3       449         2121                99
## 4         4 110     19 Comuna 19      1092         2850               141
## 5         5 103     15 Comuna 15       106         1171                70
## 6         6 104     17 Comuna 17      2165         2377               141
## 7         7 105     18 Comuna 18       178         1536               111
## 8         8 106     22 Comuna 22       954         1153                55
## 9         9  89      6  Comuna 6        90          998                44
## 10       10  90      4  Comuna 4       165         1493                74
## 11       11  91      5  Comuna 5       331          664                38
## 12       12  92      7  Comuna 7        78          734                35
## 13       13  93      8  Comuna 8       173         1124                52
## 14       14  94      9  Comuna 9       196          952                53
## 15       15  95     21 Comuna 21        36          818                44
## 16       16  96     13 Comuna 13        34         1238                76
## 17       17  97     12 Comuna 12        36          348                14
## 18       18  98     14 Comuna 14        41          685                37
## 19       19  99     11 Comuna 11        90          925                52
## 20       20 100     10 Comuna 10       316         1401                82
## 21       21 101     20 Comuna 20        51          733                46
## 22       22 102     16 Comuna 16       116          993                73
##    total_Origen_moto total_Origen_carro tasa_origen_bici tasa_origen_moto
## 1               1414               1121       0.05357143        0.4764151
## 2                375                301       0.04534005        0.4722922
## 3                970                854       0.04667610        0.4573314
## 4               1280               1165       0.04947368        0.4491228
## 5                536                456       0.05977797        0.4577284
## 6               1136                899       0.05931847        0.4779133
## 7                746                559       0.07226562        0.4856771
## 8                515                489       0.04770165        0.4466609
## 9                473                389       0.04408818        0.4739479
## 10               720                551       0.04956463        0.4822505
## 11               319                241       0.05722892        0.4804217
## 12               350                283       0.04768392        0.4768392
## 13               552                420       0.04626335        0.4911032
## 14               413                382       0.05567227        0.4338235
## 15               378                328       0.05378973        0.4621027
## 16               554                486       0.06138934        0.4474960
## 17               176                123       0.04022989        0.5057471
## 18               310                272       0.05401460        0.4525547
## 19               431                361       0.05621622        0.4659459
## 20               675                529       0.05852962        0.4817987
## 21               339                272       0.06275580        0.4624829
## 22               450                385       0.07351460        0.4531722
##    tasa_origen_carro total_destino
## 1          0.3776954            73
## 2          0.3790932           241
## 3          0.4026403          1518
## 4          0.4087719           216
## 5          0.3894108           120
## 6          0.3782078           275
## 7          0.3639323           650
## 8          0.4241110           164
## 9          0.3897796           181
## 10         0.3690556          1098
## 11         0.3629518           596
## 12         0.3855586           208
## 13         0.3736655           224
## 14         0.4012605           325
## 15         0.4009780           131
## 16         0.3925687            71
## 17         0.3534483           204
## 18         0.3970803           189
## 19         0.3902703           291
## 20         0.3775874           382
## 21         0.3710778           926
## 22         0.3877140           199
#visualizar el nuevo campo
g2a=spplot(Comunas_Nueva[,13], col.regions= heat.colors(20,.95,.4), sp.layout = spl)
g2a

Caso Bici

#caso Origenes Bici

pos=which(com>=1&com<=22&EncuestaOrigenDestino$`TIPO DE VEHÍCULO`==1)
destino=EncuestaOrigenDestino[pos,]
res=data.frame(table(destino$`comuna destino`))

orden=Comunas_Nueva$comuna
res_orden= res[orden,]

Comunas_Nueva@data$total_destino_bici=res_orden$Freq
head(Comunas_Nueva@data)
##   OBJECTID gid comuna    nombre viviendas total_Origen total_origen_bici
## 1        1 107      2  Comuna 2      1445         2968               159
## 2        2 108      1  Comuna 1       132          794                36
## 3        3 109      3  Comuna 3       449         2121                99
## 4        4 110     19 Comuna 19      1092         2850               141
## 5        5 103     15 Comuna 15       106         1171                70
## 6        6 104     17 Comuna 17      2165         2377               141
##   total_Origen_moto total_Origen_carro tasa_origen_bici tasa_origen_moto
## 1              1414               1121       0.05357143        0.4764151
## 2               375                301       0.04534005        0.4722922
## 3               970                854       0.04667610        0.4573314
## 4              1280               1165       0.04947368        0.4491228
## 5               536                456       0.05977797        0.4577284
## 6              1136                899       0.05931847        0.4779133
##   tasa_origen_carro total_destino total_destino_bici
## 1         0.3776954            73                218
## 2         0.3790932           241                 12
## 3         0.4026403          1518                189
## 4         0.4087719           216                147
## 5         0.3894108           120                 20
## 6         0.3782078           275                115
g3a=spplot(Comunas_Nueva[,14], col.regions= heat.colors(20,.95,.4), sp.layout = spl)
g3a

================================================================================

Caso Moto

#caso Origenes moto

pos=which(com>=1&com<=22&EncuestaOrigenDestino$`TIPO DE VEHÍCULO`==2)
destino=EncuestaOrigenDestino[pos,]
res=data.frame(table(destino$`comuna destino`))

orden=Comunas_Nueva$comuna
res_orden= res[orden,]

Comunas_Nueva@data$total_destino_moto=res_orden$Freq
head(Comunas_Nueva@data)
##   OBJECTID gid comuna    nombre viviendas total_Origen total_origen_bici
## 1        1 107      2  Comuna 2      1445         2968               159
## 2        2 108      1  Comuna 1       132          794                36
## 3        3 109      3  Comuna 3       449         2121                99
## 4        4 110     19 Comuna 19      1092         2850               141
## 5        5 103     15 Comuna 15       106         1171                70
## 6        6 104     17 Comuna 17      2165         2377               141
##   total_Origen_moto total_Origen_carro tasa_origen_bici tasa_origen_moto
## 1              1414               1121       0.05357143        0.4764151
## 2               375                301       0.04534005        0.4722922
## 3               970                854       0.04667610        0.4573314
## 4              1280               1165       0.04947368        0.4491228
## 5               536                456       0.05977797        0.4577284
## 6              1136                899       0.05931847        0.4779133
##   tasa_origen_carro total_destino total_destino_bici total_destino_moto
## 1         0.3776954            73                218               2177
## 2         0.3790932           241                 12                112
## 3         0.4026403          1518                189               1734
## 4         0.4087719           216                147               1421
## 5         0.3894108           120                 20                271
## 6         0.3782078           275                115                927
g4a=spplot(Comunas_Nueva[,15], col.regions= heat.colors(20,.95,.4), sp.layout = spl)
g4a

Caso Carro

#caso Origenes carro

pos=which(com>=1&com<=22&EncuestaOrigenDestino$`TIPO DE VEHÍCULO`==3)
destino=EncuestaOrigenDestino[pos,]
res=data.frame(table(destino$`comuna destino`))

orden=Comunas_Nueva$comuna
res_orden= res[orden,]

Comunas_Nueva@data$total_destino_carro=res_orden$Freq
head(Comunas_Nueva@data)
##   OBJECTID gid comuna    nombre viviendas total_Origen total_origen_bici
## 1        1 107      2  Comuna 2      1445         2968               159
## 2        2 108      1  Comuna 1       132          794                36
## 3        3 109      3  Comuna 3       449         2121                99
## 4        4 110     19 Comuna 19      1092         2850               141
## 5        5 103     15 Comuna 15       106         1171                70
## 6        6 104     17 Comuna 17      2165         2377               141
##   total_Origen_moto total_Origen_carro tasa_origen_bici tasa_origen_moto
## 1              1414               1121       0.05357143        0.4764151
## 2               375                301       0.04534005        0.4722922
## 3               970                854       0.04667610        0.4573314
## 4              1280               1165       0.04947368        0.4491228
## 5               536                456       0.05977797        0.4577284
## 6              1136                899       0.05931847        0.4779133
##   tasa_origen_carro total_destino total_destino_bici total_destino_moto
## 1         0.3776954            73                218               2177
## 2         0.3790932           241                 12                112
## 3         0.4026403          1518                189               1734
## 4         0.4087719           216                147               1421
## 5         0.3894108           120                 20                271
## 6         0.3782078           275                115                927
##   total_destino_carro
## 1                2006
## 2                  86
## 3                1557
## 4                1302
## 5                 245
## 6                 959
g5a=spplot(Comunas_Nueva[,16], col.regions= heat.colors(20,.95,.4), sp.layout = spl)
g5a

================================================================================

Grafico destino

# con terrain
g6a=spplot(Comunas_Nueva[,14:16], col.regions= terrain.colors(20,.95,.4), sp.layout = spl)
g6a

================================================================================

Tasas Destino:

Comunas_Nueva@data$tasa_destino_bici=Comunas_Nueva@data$total_destino_bici/Comunas_Nueva@data$total_destino
Comunas_Nueva@data$tasa_destino_moto=Comunas_Nueva@data$total_destino_moto/Comunas_Nueva@data$total_destino
Comunas_Nueva@data$tasa_destino_carro=Comunas_Nueva@data$total_destino_carro/Comunas_Nueva@data$total_destino

g7a=spplot(Comunas_Nueva[,17:19], col.regions= terrain.colors(20,.95,.4), sp.layout = spl)
g7a

Todos los mapas importantes

g8a=spplot(Comunas_Nueva[,10:12], col.regions= terrain.colors(20,.95,.4), sp.layout = spl)
g9a=spplot(Comunas_Nueva[,17:19], col.regions= terrain.colors(20,.95,.4), sp.layout = spl)
g8a

g9a

Concluciones:

Se identifica que en el origen el vehiculo mas usado es la moto, pero no se identifica un patron o concentracion a diferencia del de carro que se observa una mayor concentracion en la comuna 19 y 22

Mientras que en el destino se pueden evidenciar una relacion familiar entre moto y carro.

Como conclusion en ambos analisis las comunas con mayor tasa de movilidad tanto de origen y destino son la comunca 19 y 22