¿Cómo descargar información de GBIF usando R?


Muchas investigaciones se realizan en identificar cuál es el impacto del cambio climático sobre ciertas especies tanto animales como vegetales, dentro de los métodos para dichas investigaciones se encuentran MaxEnt y Random Forest, para hacer tales modelaciones se hace necesario contar con presencias de la especie a modelar. GBIF (Global Biodiversity Information Facility) es una plataforma que cuenta con cientos de miles de registros de presencias tanto de flora como de fauna, estos registros en su mayoría cuentan con las coordenadas geográficas que pueden ser de uso para realizar el tipo de investigaciones mencionado anteriormente.

Para hacer la descarga de tales registros se puede hacer de varias maneras, una de ellas es haciendo el respectivo registro en la página web (requiere usuario y contraseña), y luego introduciendo el nombre científico de la especie nos arroja el resultado de todos los registros, sin embargo, en muchas ocasiones el hacer la descarga se demora desde pocos minutos hasta varias horas (dependiendo del número de registros). Otro camino para descargar la información es hacer uso de la libreria RGBIF del lenguaje de programación R, aquí es mucho más rápido hacer la descarga de información, sumado a que ya tendríamos la tabla cargada en R para hacer depuración de datos, análisis exploratorio espacial, entre otros.

En este tutorial entonces se explicara como hacer la descarga de registros de la especie Musa paradisiaca haciendo uso de R, y luego como obtener unicamente los registros localizados en el país de Colombia.

Se sugiere tener un nivel básico en el manejo de R para realizar el ejercicio, sin embargo, se espera ser lo más claro posible para que pueda ser replicado sin mayor problema. Se require tener instalado el software R Studio.

Cómo primer paso se descarga la libreria de RGBIF, tambien se instalara la libreria Tidyverse (para hacer manejo de la tabla de una manera más facil).

install.packages('rgbif')
install.packages('tidyverse')
library(rgbif)
library(tidyverse)

Ahora se hará la respectiva descarga de los datos para la especie Musa Paradisiaca (conocida popularmente como banano).

occ <- occ_data(scientificName = 'Musa paradisiaca L.', 
                limit = 200000, 
                hasCoordinate = TRUE, 
                hasGeospatialIssue = FALSE)

Ahora conoceremos los nombres de las columnas. Las tablas descargadas de RGBIF siguen la estructura de darwin core (conocer más de este formato aquí).

colnames(occ$data)

Una de las columnas incluye el nombre del país (country), entonces, con base en esta columna haremos el respectivo filtro para obtener los registros localizados unicamente en Colombia.


occ_col <- filter(occ$data, country == 'Colombia')

Con esto entonces, el objeto occ_col contiene unicamente las presencias de la especie Musa Paradisiaca para el país de Colombia. Ahora hacemos la descarga del shapefile de los departamentos de Colombia, y se procede a la realización de un mapa sencillo, para visualizar en donde se encuentran los puntos de Musa paradisiaca en Colombia según esta base de datos de GBIF.


shp <- raster::getData('GADM', country = 'COL', level = 1)

gg <- ggplot() +
  geom_point(data = occ_col, aes(x = decimalLongitude, y = decimalLatitude), color = 'black') +
  geom_polygon(data = shp, aes(x = long, y = lat, group = group), color = 'grey', fill = NA) +
  coord_fixed(ylim = c(-5, 12.5), xlim = c(-80, -67)) +
  xlab('Longitud') +
  ylab('Latitud')

ggsave(plot = gg, filename = 'myMap.png', units = 'cm', width = 12, height = 16, dpi = 300)

Ahora finalizamos haciendo la escritura de la tabla en nuestro espacio de trabajo:

write.csv(occ_col, 'occ_musa_paradisiaca.csv', row.names = F)

El mapa que generamos con el objeto gg debería ser similar al siguiente:






Comentarios

  1. Hola, gracias por la información que nos comparte por este blog y a través de youtube. Tengo una dificultad, al momento de ejecutar el script shp <- raster::getData('GADM', country = 'COL', level = 1), me salta el siguiente comentario: Could not download file -- perhaps it does noy exist

    ¿Cómo solucionarlo?, se debe descargar desde el gbif a la computadora el archivo relacionado con la distribución de la especie en cuestión?

    De ante mano gracias

    ResponderEliminar
  2. Hola,

    Debe ser que hay un problema con el servidor, el código tal como lo veo esta bien.

    Saludos,
    Fabio Castro

    ResponderEliminar
  3. Tengo problemas al generar el *.csv, me indica el siguientes letrero:
    Error in write.table(PM_MEX, "P_m.csv", row.names = F, :
    unimplemented type 'list' in 'EncodeElement'

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Extracción por mascara en R

Convertir una tabla a shape en R