Recordemos que nuestra intención es mostrar en un mapa de la Ciudad de Buenos Aires las tres estaciones de medición con los valores de los contaminantes. Para eso debemos ir por pasos. Lo primero será cargar la librería readr que facilita la lectura de datos rectangulares (como los de archivos CSV), y luego el dataset con la ubicación de las estaciones de medición. Luego renombramos la columna NOMBRE como ESTACION para poder identificarlas mejor:
library(tidyverse)
library(readr)
estaciones_ambientales <- read.csv("./calidad-del-aire/estaciones-ambientales.csv", sep = ";", dec = ",")
estaciones_ambientales <- estaciones_ambientales %>% rename (ESTACION = NOMBRE)
estaciones_ambientales
## X Y ESTACION DIRECCION
## 1 -58.36637 -34.62526 LA BOCA AV. BRASIL 100
## 2 -58.43207 -34.60661 CENTENARIO RAMOS MEJÍA 800
## 3 -58.39155 -34.59956 CORDOBA AV. CORDOBA Y RODRIGUEZ PEÑA
## 4 -58.40536 -34.58345 PALERMO AV. LAS HERAS Y ORTIZ DE OCAMPO
## INICIO_DE_ACTIVIDAD
## 1 01/05/2009
## 2 01/01/2005
## 3 01/05/2009
## 4 01/01/2002
## ZONA_DE_EMPLAZAMIENTO
## 1 ZONA MIXTA CON FLUJO VEHICULAR MEDIO-BAJO E INCIDENCIA DE FUENTES FIJAS. EMPLAZADA DENTRO DEL AREA DE INCIDENCIA DE LA CUENCA MATANZA- RIACHUELO
## 2 (PARQUE CENTENARIO) AREA RESIDENCIAL-COMERCIAL CON FLUJO VEHICULAR MEDIO Y MUY ESCASA INCIDENCIA DE FUENTES FIJAS. PROXIMA A UN ESPACIO ARBOREO UBICADO EN EL CENTRO GEOGRAFICO
## 3 AREA RESIDENCIAL-COMERCIAL CON FLUJO VEHICULAR ALTO Y MUY ESCASA INCIDENCIA DE FUENTES FIJAS. REPRESENTATIVA DE UN CONJUNTO DE ZONAS DE SIMILARES CARACTERISTICAS C
## 4 ESTACION DESACTIVADA DESDE 30/06/2010 AREA RESIDENCIAL-COMERCIAL, CON FLUJO VEHICULAR ALTO Y ESCASA INCIDENCIA DE FUENTES FIJAS. REPRESENTATIVA DE ZONAS DE SIMILA
## EN_RED PARAMETROS_MEDIDOS CALLE ALTURA
## 1 01/09/2009 CO, NO, NO2, NOX, PM10 BRASIL AV. 100
## 2 CO, NO, NO2, NOX, PM10 RAMOS MEJIA 800
## 3 CO, NO, NO2, NOX, PM10 CORDOBA AV. NA
## 4 CO, NO, NO2, NOX, PM10 LAS HERAS GENERAL AV. NA
## CRUCE CP CPA
## 1 1063 C1063AAB
## 2 1405 C1405CAD
## 3 RODRIGUEZ PE�A NA
## 4 ORTIZ DE OCAMPO NA
Ahora que ya tenemos los datos de las estaciones de medición, lo que haremos es mostrar el mapa de la Ciudad con las tres estaciones de medición geolocalizadas. Para eso primero instalamos el paquete sf que es para trabajar con “shape files” que son los archivos que contienen los datos para que R pueda dibujar un mapa. Luego de instalar dicho paquete/librería lo llamamos y luego asignamos a la variable “barrios” el dataset con los datos de los barrios de la Ciudad:
install.packages("sf")
library(sf)
barrios <- st_read('https://data.buenosaires.gob.ar/dataset/19/resource/1c3d185b-fdc9-474b-b41b-9bd960a3806e/download/barrios.geojson')
## Reading layer `OGRGeoJSON' from data source `https://data.buenosaires.gob.ar/dataset/19/resource/1c3d185b-fdc9-474b-b41b-9bd960a3806e/download/barrios.geojson' using driver `GeoJSON'
## Simple feature collection with 48 features and 4 fields
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: -58.53092 ymin: -34.70574 xmax: -58.33455 ymax: -34.52799
## epsg (SRID): 4326
## proj4string: +proj=longlat +datum=WGS84 +no_defs
Ahora que ya tenemos los datos de los barrios vamos a dibujar el mapa con las estaciones coloreadas utilizando nuestra ya vieja conocida función ggplot:
ggplot(barrios) +
geom_sf() +
geom_point(data=estaciones_ambientales, aes(x=X, y=Y, color = ESTACION)) #colorea directamente por estación!!!
Ahora vamos a tener que construir una tabla donde tenga las columnas de latitud y longitud de cada estación y los valores del contaminante para ese mes. Para probar, lo primero que tenemos que hacer es unir las tablas para tener los valores de PM10 de las tres estaciones para el año 2017 (aunque antes tenemos que recrear nuestras tablas):
q_aire2017 <- read.csv("./calidad-del-aire/calidad-del-aire-2017.csv")
q_aire2017 <- mutate(q_aire2017, MES=factor(MES,
levels = c("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"),
ordered=TRUE))
Tabla_Prom_PM10_Cent2017xMes <- group_by(q_aire2017, MES)%>%summarise(Prom_PM10_Cent = mean(PM10_CENTENARIO, na.rm = TRUE))
Tabla_Prom_PM10_Cent2017xMes <- na.omit(Tabla_Prom_PM10_Cent2017xMes)
Tabla_Prom_PM10_Boc2017xMes <- group_by(q_aire2017, MES)%>%summarise(Prom_PM10_Boc = mean(PM10_LA_BOCA, na.rm = TRUE))
Tabla_Prom_PM10_Boc2017xMes <- na.omit(Tabla_Prom_PM10_Boc2017xMes)
Tabla_Prom_PM10_Cor2017xMes <- group_by(q_aire2017, MES)%>%summarise(Prom_PM10_Cor = mean(PM10_CORDOBA, na.rm = TRUE))
Tabla_Prom_PM10_Cor2017xMes <- na.omit(Tabla_Prom_PM10_Cor2017xMes)
Tabla_Prom_PM10_2017 <- left_join(Tabla_Prom_PM10_Cent2017xMes, Tabla_Prom_PM10_Cor2017xMes, by = NULL)
Tabla_Prom_PM10_2017 <- left_join(Tabla_Prom_PM10_2017, Tabla_Prom_PM10_Boc2017xMes, by = NULL)
Ahora queremos ver esta tabla de arriba en un gráfico de barras:
ggplot(Tabla_Prom_PM10_2017) +
geom_col(aes(x = MES, y = Prom_PM10_Cent)) +ggtitle("Promedio mensual de PM10 en la Ciudad de Buenos Aires")
Ahora vamos a calcular los promedio anuales para cada estación:
Tabla_Prom_PM10_2017_Anual <- Tabla_Prom_PM10_2017 %>% summarise(promedio_anual_Cent = mean(Prom_PM10_Cent), promedio_anual_Cor = mean(Prom_PM10_Cor), promedio_anual_Boc = mean(Prom_PM10_Boc))
Tabla_Prom_PM10_2017_Anual
## # A tibble: 1 x 3
## promedio_anual_Cent promedio_anual_Cor promedio_anual_Boc
## <dbl> <dbl> <dbl>
## 1 23.9 25.5 32.7
Veamos cómo es nuestra tabla de las estaciones:
estaciones_ambientales$PM10 <- c(Tabla_Prom_PM10_2017_Anual$promedio_anual_Boc, Tabla_Prom_PM10_2017_Anual$promedio_anual_Cent, Tabla_Prom_PM10_2017_Anual$promedio_anual_Cor, 0) # Le asignamos a la columna PM10 los valores de la tabla y valor 0 a la estación Palermo
estaciones_ambientales_ppales <- estaciones_ambientales[1:3,] # Tomamos solo las 3 primeras estaciones
estaciones_ambientales_ppales
## X Y ESTACION DIRECCION
## 1 -58.36637 -34.62526 LA BOCA AV. BRASIL 100
## 2 -58.43207 -34.60661 CENTENARIO RAMOS MEJÍA 800
## 3 -58.39155 -34.59956 CORDOBA AV. CORDOBA Y RODRIGUEZ PEÑA
## INICIO_DE_ACTIVIDAD
## 1 01/05/2009
## 2 01/01/2005
## 3 01/05/2009
## ZONA_DE_EMPLAZAMIENTO
## 1 ZONA MIXTA CON FLUJO VEHICULAR MEDIO-BAJO E INCIDENCIA DE FUENTES FIJAS. EMPLAZADA DENTRO DEL AREA DE INCIDENCIA DE LA CUENCA MATANZA- RIACHUELO
## 2 (PARQUE CENTENARIO) AREA RESIDENCIAL-COMERCIAL CON FLUJO VEHICULAR MEDIO Y MUY ESCASA INCIDENCIA DE FUENTES FIJAS. PROXIMA A UN ESPACIO ARBOREO UBICADO EN EL CENTRO GEOGRAFICO
## 3 AREA RESIDENCIAL-COMERCIAL CON FLUJO VEHICULAR ALTO Y MUY ESCASA INCIDENCIA DE FUENTES FIJAS. REPRESENTATIVA DE UN CONJUNTO DE ZONAS DE SIMILARES CARACTERISTICAS C
## EN_RED PARAMETROS_MEDIDOS CALLE ALTURA CRUCE CP
## 1 01/09/2009 CO, NO, NO2, NOX, PM10 BRASIL AV. 100 1063
## 2 CO, NO, NO2, NOX, PM10 RAMOS MEJIA 800 1405
## 3 CO, NO, NO2, NOX, PM10 CORDOBA AV. NA RODRIGUEZ PE�A NA
## CPA PM10
## 1 C1063AAB 32.68805
## 2 C1405CAD 23.89806
## 3 25.54197
Ahora vamos a realizar nuestro gráfico estadístico. Para eso, primero vamos a instalar (y luego cargar) la librería viridis, la cual nos asegura visibilidad de los colores aún para todos los tipos de daltonismo. Luego de cargar la librería, utilizamos el comando ggplot con los modificadores correspondientes para realizar el gráfico de burbuja. El modificador geom_sf dibuja el mapa usando la “shape file” de los barrios. geom_ploygon dibuja un polígono que incluye las estaciones de medición; geom_point dibuja un punto del tamaño según la variable especificada en “size” y scale_size y scale_color_viridis completan la función:
install.packages("viridis")
library(viridis)
ggplot(barrios) +
geom_sf() +
geom_polygon(data = estaciones_ambientales_ppales, aes(x=X, y = Y), fill="grey", alpha=0.3) +
geom_point( data=estaciones_ambientales_ppales, aes(x=X, y=Y, size=PM10, color=PM10)) +
scale_size_continuous(range=c(1,12)) +
scale_color_viridis(trans="log")
Lo que nos muestra este mapa es una mayor concentración anual para la estación La Boca, luego la de Córdoba y en último lugar la de Centenario. ¿Qué ocurrirá con los demás contaminantes? Veamos:
El pensamiento computacional está entre las prioridades de la agenda educativa, tanto a nivel jurisdiccional como nacional. La educación digital en la Ciudad Autónoma de Buenos Aires tiene contenidos propios y atraviesa todas las áreas. Todas las jurisdicciones se encuentran abocadas a diseñar anexos curriculares que especifiquen cómo integrar el pensamiento computacional en las diferentes orientaciones del secundario. Hay numerosas iniciativas que se están llevando a cabo para integrar el pensamiento computacional en las aulas, tanto de equipamiento (kits y placas de robótica), como de capacitación, y de desarrollo curricular. Sin embargo, faltan ejemplos que muestren cómo integrar esta nueva capacidad (el pensamiento computacional) en las áreas curriculares.
Tampoco existe en los diseños curriculares una mención explícita a los datos abiertos, aunque sí es bien conocido el valor que se le otorga al trabajo con datos reales, principalmente a través del abordaje didáctico del aprendizaje basado en proyectos. Este trabajo viene a colaborar en este aspecto, ejemplificando la importancia del trabajo con datos abiertos, integrándolo con el pensamiento computacional, a través de un paquete estadístico de software libre como R para crear visualizaciones que difícilmente podrían obtenerse a través de los medios habituales utilizados en la escuela (las planillas de cálculo por ejemplo).
Los datos abiertos pueden ser de gran valor para el ámbito escolar, no solamente en cuanto a indicadores de tipo pedagógico o de gestión escolar (como inasistencias, tasas de repitencia, o mejora en el aprendizaje de tal o cual disciplina, por citar algunas) sino también en la enseñanza, para integrarlos dentro del aula, utilizándolos y por qué no, también produciéndolos. Hoy, el accceso relativamente fácil a dispositivos como sensores, permiten que los estudiantes también produzcan datos y que eventualmente los abran.
El trabajar con datos abiertos en el nivel escolar, no solo supone un valor en sí mismo por tratarse de datos reales, sino también para el ejercicio de una ciudadanía más plena, en el entendimiento de lo que significan los datos abiertos para la construcción de ciudadanía. Nuestros estudiantes de hoy serán los que impulsen -o no-, las leyes del futuro, donde los datos estarán a disposición de todos y quienes sepan interpretarlos llevarán una gran ventaja, no solo al nivel escolar, sino a nivel país.
El trabajo con datos (la visualización y el análisis de los mismos) está en el centro del desarrollo de las competencias científicas que pretendemos desarrollar en nuestros estudiantes.