El calentamiento global es sin duda, el mayor desafío ambiental que hoy enfrenta la humanidad, y las ciudades deben ser parte fundamental de la respuesta que debemos dar ante este riesgo. Ante esto, la Ciudad de Buenos Aires cuenta con un Plan de Acción frente al Cambio Climático (publicado en 2015 y que debe actualizarse cada cinco años) donde se establecieron el conjunto de estrategias, medidas, políticas, e instrumentos desarrollados para dar cumplimiento al objeto de la Ley 3871 .
Ante este escenario, es fundamental contar con la capacidad poder cuantificar las medidas que realiza gobierno día a día. Por lo mencionado, en este trabajo, se busca mejorar la herramienta de cálculo del stock de carbono almacenado en los arboles de la Ciudad de Buenos Aires.
En el siguiente trabajo, utilizaremos los siguientes dataset:
El dataset de arbolado público lineal de la Ciudad de Buenos Aires, que se puede encontrar en el portal de datos abiertos: https://data.buenosaires.gob.ar/dataset/arbolado-publico-lineal
El mapa de comunas de la ciudad: https://data.buenosaires.gob.ar/dataset/comunas
El mapa de barrios de la ciudad: https://data.buenosaires.gob.ar/dataset/barrios
Basandonós en los datos del portal de datos abiertos y siguiendo la metodologia de la CDM ( Clean Development Mechanism ) realizaremos los cálculos necesarios para poder obtener el stock de carbono del arbolado público lineal de la ciudad.
La metodología utilizada fue realizada por el Mecanismo de Desarrollo Limpio y se puede encontrar en la web. El cálculo se basa en estimar la biomasa de un árbol y siguiendo algunos factores de corrección, poder establecer la cantidad de dióxido de carbono que contiene un árbol. La fórmula utilizada es la siguiente:
\(\ C_{tree,t} = \frac{44}{12}*B_{tree,t}*CF_{tree}\)
Siendo:
\(\ C_{tree,t}\) : El carbono almacenado por árbol en un tiempo.
\(\frac{44}{12}\) : Factor que relaciona el peso de dioxido de carbono y el carbono
\(B_{tree,t}\) : Cantidad de biomasa por árbol
\(CF_{tree}\) : Fracción de carbono en la biomasa de un árbol
La biomasa la calculamos de la siguiente forma:
\(\ B_{tree,t}={V_{tree}}*D_{j}*{BEF_{j}}*\left ( 1+{R_{j}} \right )\)
\(V_{tree}\) : Volumen del vastago
\(D_{j}\) : Densidad de la madera
\({BEF_{j}}\) : Factor de conversión de la biomasa
\({R_{j}}\) : Relación de raiz-tallo
Con el dataset que cuenta el portal de datos abiertos vamos a poder realizar el cálculo del volumen de cada árbol.
Lo primero que vamos a realizar es la codificación en UTF-8 para que no surgan errores con los caracteres especiales.
Luego, vamos a observar los datos que tiene cargado el dataset, y verificar si cuenta con los datos que necesitamos de fuente para el cálculo. Para poder ver un resumen de la información que contiene el dataset, utilizamos el comando summary.
## long lat tipo_sitio id_arbol
## Min. :-58.53 Min. :-34.70 Árbol:372699 Min. : 2430
## 1st Qu.:-58.49 1st Qu.:-34.64 1st Qu.: 166161
## Median :-58.47 Median :-34.62 Median : 17003139
## Mean :-58.46 Mean :-34.61 Mean : 27107132
## 3rd Qu.:-58.43 3rd Qu.:-34.59 3rd Qu.: 38102044
## Max. :-58.34 Max. :-34.53 Max. :938000243
##
## altura_tot diametro inclinacio id_especie
## Min. : 0.000 Min. : 0.00 Min. : 0.00 Min. : 1.0
## 1st Qu.: 5.000 1st Qu.: 17.00 1st Qu.: 0.00 1st Qu.: 1.0
## Median : 8.000 Median : 28.00 Median : 0.00 Median : 3.0
## Mean : 8.473 Mean : 31.94 Mean : 3.07 Mean : 38.7
## 3rd Qu.:11.000 3rd Qu.: 43.00 3rd Qu.: 5.00 3rd Qu.: 10.0
## Max. :60.000 Max. :426.00 Max. :60.00 Max. :999.0
##
## nombre_fam nombre_gen
## Oleáceas :175247 Fraxinus :155373
## Platanaceae: 35152 Platanus : 35152
## Moráceas : 27064 Ficus : 26108
## Meliáceas : 24681 Melia : 24641
## Leguminosas: 22355 Ligustrum: 19611
## Tiliaceas : 17486 Tilia : 17477
## (Other) : 70714 (Other) : 94337
## nombre_cie nombre_com
## Fraxinus pennsylvanica :141825 Fresno americano:141825
## Platanus x acerifolia : 34786 Plátano : 34786
## Melia azeradach : 24558 Paraíso : 24558
## Ficus benjamina : 23907 Ficus : 24076
## Tilia viridis subsp. x moltkei: 16472 Tilo : 17477
## Jacarandá mimosifolia : 11046 Jacarandá : 11046
## (Other) :120105 (Other) :118931
## tipo_folla origen
## Árbol Latifoliado Caducifolio:296880 Exótico :334503
## Árbol Latifoliado Perenne : 56061 Nativo/Autóctono: 30410
## No Determinado : 12766 No Determinado : 7786
## Palmera : 2908
## Árbol Conífero Perenne : 1431
## Arbusto Perenne : 1246
## (Other) : 1407
## codigo_man barrio comuna
## 84-001B: 734 PALERMO : 22483 Min. : 1.000
## 58-053Z: 373 MATADEROS : 18289 1st Qu.: 6.000
## 84-001Z: 363 VILLA DEVOTO : 17538 Median :10.000
## 49-027 : 338 CABALLITO : 15660 Mean : 9.125
## 23-158 : 308 FLORES : 15278 3rd Qu.:12.000
## 27-147 : 292 VILLA URQUIZA: 14493 Max. :15.000
## (Other):370291 (Other) :268958
## calle chapa1 chapa2
## Suarez, Jose Leon : 1175 Min. : 0 Min. : 0.00
## Alberdi, Juan Bautista Av.: 1162 1st Qu.: 0 1st Qu.: 0.00
## Yerbal : 1146 Median : 1449 Median : 0.00
## Montiel : 1140 Mean : 1895 Mean : 40.59
## Del Libertador Av. : 1119 3rd Qu.: 3181 3rd Qu.: 0.00
## Cosquin : 1118 Max. :16392 Max. :14038.00
## (Other) :365839
Luego de asegurarnos que la base de datos tiene los valores que queremos (altura, diamétro, especie y ubicación para realizar una análisis espacial) vamos a ver si la base de datos cuenta con vacios. Estos vacíos podrían complicarnos los procesamientos posteriores.
## long lat tipo_sitio id_arbol altura_tot diametro inclinacio id_especie
## 1 0 0 0 0 0 0 0 0
## nombre_fam nombre_gen nombre_cie nombre_com tipo_folla origen codigo_man
## 1 0 0 0 0 0 0 0
## barrio comuna calle chapa1 chapa2
## 1 0 0 0 0 0
De esta manera, podemos ver en la tabla que el dataset no cuenta con vacios y podremos usarlo sin problemas.
Por último, vamos a chequear la distribución de los valores que quiero utilizar, que van a ser la altura y el diametro del árbol. Esto me sirve, para tener un orden de magnitud de la información que estamos manejando y como se distribuye.
ggplot(arboladopublico) +
geom_histogram(aes(x= altura_tot, fill= ..count..))+
labs(title = "Histograma de la altura de los árboles",
subtitle = "Censo de arbolado 2011",
caption = "Fuente: portal de datos abiertos de la Ciudad - http://data.buenosaires.gob.ar",
x = "Altura del árbol (m)",
y = "Cantidad de árboles",
fill= "Cantidad de árboles")
Por el momento, vamos a realizar el análisis con todo el dataset, pero luego analizaremos si las alturas mayores a 40 metros pueden ser viables para especies de arbolado publico lineal.
La metodologia utilizada, utiliza dos factores denominados BEF y R que depende de la altura del arbol. Para eso, vamos a sumar dos columnas a nuestra base de datos donde se generen estos valores. Para realizar dicha acción usamos la función mutate, que me genera una nueva columna con la condición que le voy a pedir en cada caso.
Primero calculo el factor BEF, que depende de la altura del arbol y se usará para calcular la biomasa, como indica la siguiente tabla:
Rango altura | Valor de BEF |
---|---|
1 a 5 | 3.2 |
5 a 10 | 3.0 |
mayor a 11 | 2.7 |
Luego calculo el factor Rj, que también depende de la altura del arbol y se usará para calcular la biomasa , como indica la siguiente tabla:
Rango altura | Valor de Rj |
---|---|
1 a 5 | 0.45 |
5 a 10 | 0.35 |
mayor a 11 | 0.20 |
Al contar con todos los datos necesario, proseguimos con el cálculo de la biomasa:
\(\ B_{tree,t}={V_{tree}}*D_{j}*{BEF_{j}}*\left ( 1+{R_{j}} \right )\)
Los datos del censo de arbolado los vamos a utilizar para calcular el volumen de cada árbol.
El volumen del arbol lo calcularemos como un cono truncado.
\(\ V=\frac{1}{3}*\pi *h*\left ( R^{2} + R*r + r^{2} \right )\)
Para nuestros calculos, utilizaremos el radio del arbol R, por lo que debemos dividir en dos el diametro. Para esto, creamos una nueva columna en nuestra tabla de datos de arbolado.
Luego, genero el radio menor r (que sería el menor radio del tallo, como se puede observar en la figura) para el cálculo. Dicho valor lo multiplico por un factor de forma (dado por la metodologia) cuyo valor es 0.5
Finalizando, realizamos el cálculo del volumen de cada árbol:
Para calcular la biomasa de cada árbol a partir del volumen, debemos contar con la densidad de la madera de cada arbol y usar los factores de corrección BEF + Rj. En calculos anteriores, se tomo un valor conservador de densidad igual a 0.5. Para calculos futuros, se espera poder contar con la densidad de caba arbol , por lo que deberiamos contar con una tabla que contenga dicha información. Para este ejercicio, se ha creado la tabla, pero con todos los valores iguales.
Por lo tanto, cargamos la base de datos de densidad de cada arbol por especie.
Luego, vamos a utilizar el comando join, para relacionar las dos tablas y poder sumar en la base denominada arbolado público la densidad de cada árbol.
Con estos datos vamos a poder calcular, la biomasa de cada árbol.
Siguiendo los pasos que me da la metodologia, voy a calcular el carbono que almacena cada árbol:
\(\ C_{tree,t} = \frac{44}{12}*B_{tree,t}*CF_{tree}\)
\(\ CF_{tree}\) = 0.55
Con los resultados, ya obtenidos, vamos a exportar el archivo a un csv para Excel y guardar la base de datos que genere.
Si queremos saber el stock en la ciudad, vamos a sumar todas las filas de la columna calculo_co2
## carbonoalmacenado
## 1 1014682
Por lo tanto la ciudad cuenta con un carbono acumulado en sus arboles de 1014682 TnCO2
A partir de los datos obtenidos, vamos a realizar algunas visualizaciones que me pertima tener mayor claridad de los resultados obtenidos.
Muchas veces, el área de cambio climático es consultada acerca del stock de carbono en el arbolado actual, pero no cuenta con toda la información necesaria para poder aplicar el método de cálculo usado anteriormente (diámetro, altura y especie) . Por esta causa, a continuación se van a realizar diferentes estimaciones que van a poder predecir el stock de carbono.
Primero que nada, vamos a hacer un gráfico, de la captura de carbono en función del diámetro del árbol.
ggplot(arboladopublico) +
geom_point(aes(x = diametro, y = calculo_co2, color = "antiquewhite")) +
labs(title = "Carbono acumulado en función del diámetro",
subtitle = "Censo de arbolado 2011",
caption = "Fuente: Elaboración propia",
x = "Diámetro del árbol(cm)",
y = "Carbono acumulado (TnCO2)") +
theme_classic()
En este caso, podemos ver una relación que a medida que crece el diametro, aumenta el stock de carbono, como nos dice la formula, pero veamos que sucede si usamos datos promedios de stock de carbono por diametro. Esta nube nos puntos, nos genera una tendencia, pero nos dificulta mucho generar una estimación.
Si trabajamos con el stock de carbono por diámetro promedio en vez de analizar cada punto, podríamos realizar otro análisis.
Para eso, creamos otra tabla con la información del stock de carbono por diámetro promedio.
resumen_diametro <- arboladopublico %>%
group_by(diametro) %>%
summarise(freq = n(),
media = mean(calculo_co2),
mediana = median(calculo_co2),
min = min(calculo_co2),
max = max(calculo_co2),
desvio = sd(calculo_co2))
Si asentamos en una tabla los resultados obtenidos, podemos observar:
ggplot(resumen_diametro) +
geom_point(aes(x = diametro, y = media, color = "antiquewhite")) +
labs(title = "Carbono acumulado en función del diametro",
subtitle = "Censo de arbolado 2011",
caption = "Fuente: Elaboración propia",
x = "Diámetro del árbol(cm)",
y = "Carbono acumulado promedio(TnCO2)") +
theme_classic()
En este caso, notamos que se podría asemejar a una curva hasta llegar al metro y medio de diámetro. Luego, se genera una dispersión de puntos.
A partir de los datos obtenidos, vamos a realizar una regresión lineal simple, donde podamos ver la relación entre el diametro y el stock de carbono.
Vamos a descartar aquellos valores donde el diametro supere el metro y medio, ya que se genera una dispersión muy grande y son pocas las unidades que encontramos con este valor.
Para saber si hay una relación entra las variables y se puedan relacionar entre sí, vamos a calcular la correlación de las mismas.
Los valores de referencia con los que contamos son los siguientes:
## [1] 0.9126916
Siguiendo los valores de correlación de referencia, un valor de 0.912 presenta una correlación alta.
Para poder hallar una relación entre el diámetro y el stock de carbono, vamos a realizar una regresión lineal.
##
## Call:
## lm(formula = media ~ diametro, data = diametro_co2)
##
## Coefficients:
## (Intercept) diametro
## -9.7972 0.3658
##
## Call:
## lm(formula = media ~ diametro, data = diametro_co2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.777 -4.490 -1.808 2.468 44.828
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -9.79716 1.15723 -8.466 2.38e-14 ***
## diametro 0.36582 0.01351 27.079 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.104 on 147 degrees of freedom
## Multiple R-squared: 0.833, Adjusted R-squared: 0.8319
## F-statistic: 733.3 on 1 and 147 DF, p-value: < 2.2e-16
Las estrellas me indican la fiabilidad de mi estimación, y en este caso tenemos lo máximo que es tres
Con estos coeficientes, podemos ver la recta que mejor aproxima a estos puntos en azul.
Si graficamos los resultados, podemos ver que la recta azul aproxima bien los resultados, pero sería necesario buscar la manera de obtener la curva roja que aproxima mejor los resultados(pero ya no estaríamos en el caso de una regresión lineal).
ggplot(data = diametro_co2) +
geom_point(aes(x = diametro, y = media)) +
labs(title = "Relación entre el diámetro y el carbono acumulado",
subtitle = "Ciudad de Buenos Aires",
x = "Diámetro (cm)",
y = "Carbono acumulado promedio (TnCO2)",
caption = "Fuente: Elaboración propia") +
geom_abline(aes(intercept = -9.797, slope = 0.3658), color = "blue") +
geom_smooth(aes(x = diametro, y = media), method = "auto", color = "red" ) +
theme_classic()
De la misma manera que estimamos el stock de carbono en función del diametro, vamos a realizar una estimación del carbono acumulado en función de la altura del árbol.
Primero, tenemos que crear una tabla donde se acumule la información por altura, y, para ahorrar pasos, directamente vamos a graficar la relación entre la altura y el promedio de absorción de carbono por árbol por altura.
resumen_altura <- arboladopublico %>%
group_by(altura_tot) %>%
summarise(freq = n(),
media = mean(calculo_co2),
mediana = median(calculo_co2),
min = min(calculo_co2),
max = max(calculo_co2),
desvio = sd(calculo_co2))
ggplot(resumen_altura) +
geom_point(aes(x = altura_tot, y = media, color = "antiquewhite")) +
labs(title = "Relación entre la altura y el carbono acumulado",
subtitle = "Ciudad de Buenos Aires",
caption = "Fuente: Elaboración propia",
x = "Altura del árbol(m)",
y = "Carbono acumulado promedio(TnCO2)") +
theme_classic()
En este caso, podemos notar que hasta los 30 metros, se obtiene una curva bastante clara y luego se genera una dispersión de puntos. Como en el caso anterior, nos vamos a limitar a donde tengamos mayor cantidad de datos y de mejor calidad.
Averiguamos la correlación de las variables, para saber si es correcto realizar una estimación.
## [1] 0.9809345
En este caso, nos da una correlación más alta. Si realizamos la regresión lineal y luego la graficamos.
##
## Call:
## lm(formula = media ~ altura_tot, data = altura_co2)
##
## Coefficients:
## (Intercept) altura_tot
## -3.1131 0.7783
##
## Call:
## lm(formula = media ~ altura_tot, data = altura_co2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.0858 -1.1363 -0.1908 0.9345 3.1131
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.11311 0.50008 -6.225 8.6e-07 ***
## altura_tot 0.77834 0.02863 27.182 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.426 on 29 degrees of freedom
## Multiple R-squared: 0.9622, Adjusted R-squared: 0.9609
## F-statistic: 738.9 on 1 and 29 DF, p-value: < 2.2e-16
En este caso también el modelo me da fiabilidad entre variables y las tres estrellas me demuestran dicha relación.
Si realizamos el gráfico de los realizado.
ggplot(data = altura_co2) +
geom_point(aes(x = altura_tot, y = media)) +
labs(title = "Relación entre la altura y el carbono acumulado",
subtitle = "Ciudad de Buenos Aires",
x = "Altura (m)",
y = "Carbono acumulado promedio (TnCO2)",
caption = "Fuente: Elaboración propia") +
geom_abline(aes(intercept = -3.1131, slope = 0.7783), color = "blue") +
geom_smooth(aes(x = altura_tot, y = media), method = "auto", color = "red" ) +
theme_classic()
De igual manera, como surgió anteriormente, la recta en color rojo, me da la mejor curva de aproximación, pero no se asemeja a un problema lineal. La recta azul corresponde a la regresión lineal realizada y me puede servir como aproximación al carbono acumulado por altura en caso de no contar con el diámetro.
Por último, vamos a realizar una estimación del CO2 acumulado por especie. Este caso se da, cuando se saben las especies que se encuentren plantadas o van a plantarse por lo que no tenemos ningún parámetro más.
Por lo tanto, realizamos la misma agrupación que en los casos anteriores.
resumen_especie <- arboladopublico %>%
group_by(nombre_com) %>%
summarise(freq = n(),
media = mean(calculo_co2),
mediana = median(calculo_co2),
min = min(calculo_co2),
max = max(calculo_co2),
desvio = sd(calculo_co2))
Vamos a realizar un summary para ver con cuanta información contamos en esta tabla.
## nombre_com
## : 1
## Abedul blanco : 1
## Abedul común (Abedul de Europa o Abedul verrugoso): 1
## Abutilo : 1
## Acacia : 1
## Acacia blanca : 1
## (Other) :300
## freq media mediana
## Min. : 1.0 Min. : 0.006859 Min. : 0.006859
## 1st Qu.: 7.0 1st Qu.: 0.326423 1st Qu.: 0.142678
## Median : 33.0 Median : 0.907090 Median : 0.405251
## Mean : 1218.0 Mean : 1.758896 Mean : 1.087497
## 3rd Qu.: 175.5 3rd Qu.: 2.293973 3rd Qu.: 1.134366
## Max. :141825.0 Max. :20.003649 Max. :19.158672
##
## min max desvio
## Min. : 0.000000 Min. : 0.0069 Min. : 0.0000
## 1st Qu.: 0.000429 1st Qu.: 1.7414 1st Qu.: 0.5149
## Median : 0.003858 Median : 7.4189 Median : 1.3650
## Mean : 0.248109 Mean : 18.7712 Mean : 2.4201
## 3rd Qu.: 0.030009 3rd Qu.: 20.1229 3rd Qu.: 3.2973
## Max. :19.158672 Max. :335.2768 Max. :33.0298
## NA's :19
Podemos observar que se cuenta con más de 300 especies, por lo cual, resultaría muy dificultoso graficar todas juntas, como se observa a continuación.
Usando el comando head, vemos como se distribuye la información en la tabla.
## # A tibble: 6 x 7
## nombre_com freq media mediana min max desvio
## <fct> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 "" 5 0.999 0.429 2.32e-2 3.46 1.40
## 2 Abedul blanco 13 1.96 0.578 2.32e-2 7.11 2.54
## 3 Abedul común (Abedul de Europa ~ 75 1.12 0.220 2.57e-3 13.4 2.34
## 4 Abutilo 150 1.54 0.594 2.14e-4 21.0 2.57
## 5 Acacia 870 2.12 0.670 2.14e-4 27.0 3.83
## 6 Acacia blanca 1724 1.82 0.819 0. 24.3 2.59
ggplot(resumen_especie) +
geom_point(aes(x= nombre_com, y=media))+
labs(title = "Carbono acumulado en función de la especie",
subtitle = "Censo de arbolado 2011",
caption = "Fuente: Elaboración propia",
x = "Especie",
y = "Carbono acumulado (TnCO2)") +
theme_classic()
Por lo tanto, nos va a bastar, con descargar la tabla elaborada para consultarla cuando sea necesario.
Por último, vamos a realizar una visualización en algunos mapas, donde podríamos analizar un análisis más segmentado del territorio. Para eso, vamos a cargar el dataset de comunas de la Ciudad de Buenos Aires.
## Reading layer `CABA_comunas' from data source `https://bitsandbricks.github.io/data/CABA_comunas.geojson' using driver `GeoJSON'
## Simple feature collection with 15 features and 4 fields
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: -58.53152 ymin: -34.70529 xmax: -58.33514 ymax: -34.52754
## epsg (SRID): 4326
## proj4string: +proj=longlat +datum=WGS84 +no_defs
Si realizamos un gráfico de todos los resultados obtenidos, del carbono acumulado punto por punto, obtenemos lo siguiente:
ggplot() +
geom_sf(data = comunas) +
geom_point(data = arboladopublico,
aes(x = long, y = lat , fill= calculo_co2)) +
labs(title = "Carbono acumulado por árbol en la Ciudad de Buenos Aires",
subtitle = "Censo de arbolado 2011",
fill= "Carbono acumulado por árbol (TonCO2)") +
theme_minimal()
Lo que sucede, es que al tener tanta cantidad de datos, no se puede apreciar nada. Por lo tanto, deberíamos realizar algún análisis previo.
Lo que vamos a realizar, es realizar un join, para tener por comuna el stock acumulado de carbono. En este caso además, deberíamos tener en cuenta la superficie de cada comuna.
Las dos tablas tienen un nombre diferente en el campo comunas por lo tanto, debemos unificar el nombre para poder realizar bien el join y que ambos campos sean númericos.
arboladopublico <- mutate(arboladopublico, comunas = comuna)
arboladopublico <- arboladopublico %>%
mutate(comunas = as.numeric(comunas))
Por lo tanto vamos a realizar un group_by para tener la información por comunas y poder realizar un join con la capa de comunas.
Realizo el join con la capa de comunas
## Simple feature collection with 6 features and 5 fields
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: -58.4627 ymin: -34.6625 xmax: -58.33514 ymax: -34.56935
## epsg (SRID): 4326
## proj4string: +proj=longlat +datum=WGS84 +no_defs
## barrios
## 1 CONSTITUCION - MONSERRAT - PUERTO MADERO - RETIRO - SAN NICOLAS - SAN TELMO
## 2 RECOLETA
## 3 BALVANERA - SAN CRISTOBAL
## 4 BARRACAS - BOCA - NUEVA POMPEYA - PARQUE PATRICIOS
## 5 ALMAGRO - BOEDO
## 6 CABALLITO
## perimetro area comunas calculo_co2 geometry
## 1 35572.65 17802807 1 32410.05 MULTIPOLYGON (((-58.36854 -...
## 2 21246.61 6140873 8 38378.95 MULTIPOLYGON (((-58.39521 -...
## 3 10486.26 6385991 9 87260.44 MULTIPOLYGON (((-58.41192 -...
## 4 36277.44 21701236 10 82158.62 MULTIPOLYGON (((-58.3552 -3...
## 5 12323.47 6660526 11 108014.81 MULTIPOLYGON (((-58.41287 -...
## 6 10990.96 6851029 12 110981.15 MULTIPOLYGON (((-58.43061 -...
Realizo el mapa de las comunas y el stock de carbono de cada uno.
ggplot() +
geom_sf(data= comunas, aes(fill= calculo_co2/area), color = NA) +
labs(title = "Carbono acumulado por m2 por comuna",
subtitle = "Censo de arbolado 2011",
fill= "TonCO2/m2") +
scale_fill_viridis_c() +
theme_minimal()
Para bajarlo a una escala menor, lo podemos realizar por barrio también y para eso, vamos a trabajar con el dataset de barrios.
## Reading layer `barrios' 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
resumen_barrios <- group_by(arboladopublico, barrio) %>%
summarise(calculo_co2 = sum(calculo_co2)) %>%
mutate(BARRIO=barrio) %>%
mutate(BARRIO = as.character(BARRIO))
Vamos a usar el comando join para realizar dicho ánalisis a escala de barrio.
ggplot() +
geom_sf(data= barrios, aes(fill = calculo_co2), color = NA) +
labs(title = "Carbono de carbono total por barrio",
subtitle = "Censo de arbolado 2011",
fill= "TonCO2") +
scale_fill_viridis_c() +
theme_minimal()
Como en este caso estamos teniendo en cuenta el área total, es lógico que el barrio de Palermo cuente con los valores más altos ya que es el más grande de la ciudad.
Al final del trabajo, me gustaría agregar algunos errores con los que me encontré durante la etapa de procesamiento, sean de programación o debido a otras causas.
Han surgido problemas con el encoding UTF-8, que más de una vez no ha permitido realizar una operación debido a las distintas codificaciones.
Cuando he creado la función condicional, para crear mis estimadores BEF y Rj, había puesto los números entre comillas lo que me generaba un caracter y no un número. Esto me impedía continuar con las operaciones matemáticas.
RStudia ya cuenta con un dataset que se llama CO2, por lo que tuve que crear todas mis variables con otro nombre para no generar confusión.
No todas las tablas tienen el mismo protocolo de nombrar los mismos campos. Algunas tablas nombraban a las comunas en minisculas y otras en mayusculas, asi como en plural y singular, por lo que se tenían que renombrar para su procesamiento posterior.
No pude realizar cálculos con el campo area del dataset de barrios ya que el dato no se encontraba cargado como númerico y no pude convertirlo en campo númerico.
En el trabajo práctico hemos podido realizar un análisis del stock de carbono de la ciudad y hemos podido elaborar algunas conclusiones interesantes.
Cuando se soliciten cálculos al área, es mejor contar con la altura del árbol que con el diamétro del tronco, debido a que se logra una mejor estimación y se pude observar al calcular la correlación.
En caso de obtener la última versión del censo de arbolado que se encuentra en proceso, se podría calcular el carbono absorbido durante un período de tiempo en la ciudad.
Contando con un mapa de stock de carbono por Barrio, podemos ver en que zonas realizar plantaciones y reforzar el arbolado público lineal. Este análisis se realizó con el arbolado público lineal, pero se podría ampliar a todos los árboles de la ciudad.
Al haber obtenido tres maneras de estimar el stock de carbono por árbol, es un método que se puede replicar. Las estimaciones se pueden realizar en base al diamétro del árbol, su altura o con tan solo saber su especie. Estas estimaciones tienen errores asociados pero nos pueden dar un orden de magnitud.
De esta manera, obtenemos una herramienta que nos permite realizar un análisis tanto especial como matemático, que puede realizar muchas operaciones con solo cargar un dataset y cambiar algunas variables.