26 de noviembre de 2015
Extracción de valores de archivos climáticos en R – Uso de
tablas, raster y shapefiles
El objetivo de este ejercicio es obtener los valores
de la precipitación mensual para cada incendio ocurrido en la zona de
Kalimantan (en Indonesia), ello haciendo uso del lenguaje de programación R
(gratuito). Para el presente caso
hacemos uso de datos de Nasa FIRMS que contiene los incendios de Kalimantan (en
Indonesia), y la precipitación histórica
para esta misma zona (1959-2000) tomada de la página web de Worldclim (Hijmans
et al., 2015). Con estos datos, la idea es conocer la relación existente entre
los incendios y la precipitación por cada mes.
Nota: las direcciones son aquellas que se encuentran
entre comillas (“ “) y cambiaría conforme a la localización de los datos del
interprete, es decir, usted.
Hacemos
uso de las librerías “raster” y “rgdal”, para instalarlas abrimos el programa
de R y escribimos lo siguiente:
install.packages(“raster”)
install.packages(“rgdal”)
require(“raster”)
require(“rgdal”)
Luego
procedemos a abrir el shapefile que contiene los sismos de Indonesia, desde
noviembre del año 2000 hasta agosto del 2015.
fire =
shapefile("E:/Indonesia/Data/_shp/_nasa_firms/_trial_zone_kalimantan/fire_new.shp")
head(fire@data)
#permite ver las primeras seis filas del shape
dim(fire@data)
#ver las dimensiones de la tabla de atributos
fire_tabla
<- as.data.frame(fire@data) #convertir tabla del shapefile a un data frame
(tabla en R).
Leemos
los archivos raster para los doce meses de la precipitación, así como se
muestra a continuación.
path =
"F:/Proyectos_2015/Indonesia/Data/_tif/worldclim/data/_indonesia/_asc/prec/"
archivos = list.files(path,
full.names = T, pattern = ".asc$")
datos = lapply(archivos,
FUN=raster)
stack_prec = stack(datos)
#hacemos un stack, es decir poner todos los raster de precipitación uno encima
de otro.
Procedemos
a hacer la extracción de los valores para los puntos de incendios a partir de
los doce meses de la precipitación:
coor = as.data.frame(extract(stack_prec, fire_tabla[,3:2]))
#hace la extracción y a su vez convierte los resultados en un data.frame
(diferente al vector)
head(coor) #aquí podemos observar que hay valores sin datos
NA’s.
dim(coor)
fix(coor)
tabla_2 <- cbind(enero_tabla, coor) #hacemos la unión de
la tabla obtenida de la extracción y la de incendios
Luego eliminamos los archivos que tienen NA, estos
valores sin datos se deben a que los incendios se encuentran localizados fuera
del área de los archivos raster de precipitación.
apply(tabla_2, 2, function(x) length(which(!is.na(x))))
#contar los NA de las columnas de la tabla
#Son 87199 los campos que tienen un valor asociado, es
decir que hay 1237 campos que no tienen valores de precipitación
#Estos incendios se encuentran fuera del área de estudio
(en el mar), o en la costa fuera del área de los raster de Worldclim
Eliminamos
de la tabla los campos que no tienen datos de precipitación, así como se
presenta a continuación.
row.has.na <- apply(tabla_2, 1,
function(x){any(is.na(x))})
head(row.has.na)
sum(row.has.na)
final.filtered <- as.data.frame(tabla_2[!row.has.na,])
#el signo de admiración significa "diferente de".
Si queremos escribir esta
tabla producto, escribimos lo siguiente:
write.csv(final.filtered,
"F:/Proyectos_2015/Indonesia/Data/_tables/_precipitacion_worldclim/prec_fires_kalimantan_barat.csv")
Pasamos a convertir la
tabla obtenida a un shapefile, ello a partir de las columnas de longitud y
latitud que contiene dicha tabla.
coordinates(final.filtered) <- ~LONGITUDE+LATITUDE
class(final.filtered)
plot(final.filtered, pch=19)
Y por último, guardamos el
archivo shapefile.
writeOGR(final.filtered, dsn =
"E:/Blogger/Post_2/_resultados/_shp", layer= "prec_fires",
driver = "ESRI Shapefile")
De
este link se pueden descargar los datos del presente ejercicio.
Bibliografía:
HIJMANS, R.J., S.E. CAMERON, J.L. PARRA, P.G. JONES
and A. JARVIS. Very high resolution interpolated climate surfaces for global
land areas. International Journal of Climatology, 2005, vol. 25, no. 15, p.
1965-1978.
R DEVELOPMENT CORE TEAM (2004). A language and
environment for statistical computing. R Foundation for Statistical Computing,
Vienna, Austria. ISBN 3-900051-07-0, URL http://www.R-project.org.
Comentarios
Publicar un comentario