Para comenzar, se definieron algunos parámetros generales del procesamiento en R.
Código para la definición de parámetros generales
# Archivo con la lista original de especiesARCHIVO_LISTA_ESPECIES <-here("data", "processed", "lista-final-especies-animales.csv")# Archivo con los registros de presencia de especies descargados# NOTA: Luego de la ejecución de este documento, este archivo debe comprimirse, # por ser muy grande para albergarse en GH. Debe descomprimirse antes de# ejecutar el documento de generación del mapa de riqueza de especies y una vez# finalizada la ejecución, debe comprimirse de nuevo.ARCHIVO_REGISTROS_PRESENCIA_ESPECIES <-here("data", "processed", "registros-presencia-especies-animales.csv")# Directorio de archivos de registros de presencia comprimidos descargados# NOTA: Los archivos descargados pueden ser muy grandes para alojarse en GH.# Se probó con tamaños de bloque más pequeños (ej. 50 especies), pero aún asi se# generan archivos ZIP > 100 GB, probablemente porque hay especies con# muchos registros de presencia.# Como medida temporal, estos ZIP se respaldan en otra ubicación # y se borran de DIRECTORIO_ARCHIVOS_DESCARGADOS.DIRECTORIO_ARCHIVOS_DESCARGADOS <-here("data", "interim", "downloaded-occurrences-animals")# Cantidad de llaves de taxones por bloque de descargaTAMANIO_BLOQUE_DESCARGA <-650# Tema de la lista (para usar en los nombres de archivos de descargas)TEMA_REGISTROS_PRESENCIA_ESPECIES <-"animales"
Las rutas especificadas para los archivos se basan en la estructura de directorios para proyectos de ciencia de datos propuesta por la iniciativa Cookiecutter Data Science.
El archivo se cargó en un cuadro de datos (data frame) de R, para su procesamiento.
Código para la carga de la lista
# Carga de la lista de especieslista_especies <-read_csv(ARCHIVO_LISTA_ESPECIES)
Visualización de la lista de especies
Lista de especies
Código para la visualización de la lista
# Visualización de la lista original de especieslista_especies |>arrange(scientificName) |>datatable(rownames =FALSE,extensions =c("Buttons"),options =list(searchHighlight =TRUE,pageLength =5,language =list(url ='//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json'),dom ='Bfrtlip',buttons =list(list(extend='copy', text='Copiar'),list(extend='print', text='Imprimir'),list(extend ='collection',buttons =list(list(extend='csv', title=paste("Lista de especies de", TEMA_REGISTROS_PRESENCIA_ESPECIES),text='CSV' ),list(extend='excel', title=paste("Lista de especies de", TEMA_REGISTROS_PRESENCIA_ESPECIES),text='Excel' ),list(extend='pdf', title=paste("Lista de especies de", TEMA_REGISTROS_PRESENCIA_ESPECIES),text='PDF' ) ), text ='Descargar' ) ) ) )
Cantidad de registros en la lista de especies
617
Descarga de los registros de presencia
Los registros de presencia de especies se descargaron, como archivos CSV comprimidos en formato ZIP, del portal de datos de GBIF en bloques de 650 especies.
Código para la descarga de los registros de presencia
# Llaves (en GBIF) de los taxones (sinónimos o nombres aceptados)# de la lista de especies# llaves_taxones <- # lista_especies |># pull(usageKey)# Llaves (en GBIF) de los taxones (SOLO nombres aceptados)# de la lista de especies# Al usar las llaves de los nombres aceptados, se incluyen los sinónimos tambiénllaves_taxones <- lista_especies |>filter(!is.na(speciesKey)) |>pull(speciesKey)# Para pruebas# llaves_taxones <- llaves_taxones[1:1000]# Cantidad de llaves de taxonescantidad_llaves_taxones <-length(llaves_taxones)# Cantidad de bloques de descargacantidad_bloques_descarga <-ceiling(cantidad_llaves_taxones / TAMANIO_BLOQUE_DESCARGA)# Solicitudes de descarga y descarga de los archivos en formato ZIPfor(i in1:cantidad_bloques_descarga) {# Primer y último índice de la lista de especies# para el bloque de descarga inicio <- ((i -1) * TAMANIO_BLOQUE_DESCARGA) +1 fin <-min(i * TAMANIO_BLOQUE_DESCARGA, cantidad_llaves_taxones)# Para seguimiento de la descargaprint(paste("Bloque de descarga de las llaves:", inicio, "-", fin))# Solicitud de descarga al API de GBIF solicitud <-occ_download(pred_in("taxonKey", llaves_taxones[inicio:fin]),pred("country", "CR"),pred("hasCoordinate", TRUE),pred("hasGeospatialIssue", FALSE),format ="SIMPLE_CSV" )# Metadatos de la solicitud de descarga metadatos <-occ_download_meta(solicitud)# Espera de la descargawhile(metadatos$status !="SUCCEEDED") {Sys.sleep(60) # Esperar 60 segundos antes de volver a comprobar el estado metadatos <-occ_download_meta(solicitud) }# Descarga del archivoocc_download_get(key = solicitud, path = DIRECTORIO_ARCHIVOS_DESCARGADOS, overwrite =TRUE )}
[1] "Bloque de descarga de las llaves: 1 - 617"
Download file size: 521.9 MB
On disk at /home/rstudio/data/interim/downloaded-occurrences-animals/0174412-240321170329656.zip
Unificación de los registros de presencia descargados
Los archivos CSV contenidos en los archivos ZIP se unificaron en un único archivo CSV.
Unificación de los registros de presencia
Código para la unificación de los registros de presencia
# Lista de archivos ZIP descargadosarchivos_zip <-list.files(path = DIRECTORIO_ARCHIVOS_DESCARGADOS, pattern ="*.zip")# Data frame para registros de presencia unificadosregistros_presencia_unificados <-NULLfor(archivo_zip in archivos_zip) {# Lectura del archivo CSV registros_presencia <-read_tsv(file =paste0(DIRECTORIO_ARCHIVOS_DESCARGADOS, "/", archivo_zip),show_col_types =FALSE )# Si es el primer archivo, se incluye todo; si no, se excluye la cabeceraif(is.null(registros_presencia_unificados)) { registros_presencia_unificados <- registros_presencia } else { registros_presencia_unificados <-bind_rows( registros_presencia_unificados, registros_presencia ) }}
Warning: One or more parsing issues, call `problems()` on your data frame for details,
e.g.:
dat <- vroom(...)
problems(dat)
Visualización de los registros de presencia
Registros de presencia (muestra de 1000 registros)
Código para la visualización de los registros de presencia
# Visualización de los registrosregistros_presencia_unificados |>slice_sample(n =1000, replace =TRUE) |>arrange(scientificName) |>datatable(rownames =FALSE,extensions =c("Buttons"),options =list(searchHighlight =TRUE,pageLength =5,language =list(url ='//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json'),dom ='Bfrtlip',buttons =list(list(extend='copy', text='Copiar'),list(extend='print', text='Imprimir'),list(extend ='collection',buttons =list(list(extend='csv', title=paste("Registros de presencia de especies de", TEMA_REGISTROS_PRESENCIA_ESPECIES),text='CSV' ),list(extend='excel', title=paste("Registros de presencia de especies de", TEMA_REGISTROS_PRESENCIA_ESPECIES),text='Excel' ),list(extend='pdf', title=paste("Registros de presencia de especies de", TEMA_REGISTROS_PRESENCIA_ESPECIES),text='PDF' ) ), text ='Descargar' ) ) ) )
Cantidad de registros de presencia de especies
4283559
Cantidad de especies (nombres aceptados) en los registros de presencia
576
Para control, se muestran las especies de la lista que no tienen registros de presencia.
Lista de especies sin registros de presencia
Código para la visualización de la lista
# Visualización de la lista original de especieslista_especies |>filter(!speciesKey %in% registros_presencia_unificados$speciesKey) |>arrange(scientificName) |>datatable(rownames =FALSE,extensions =c("Buttons"),options =list(searchHighlight =TRUE,pageLength =5,language =list(url ='//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json'),dom ='Bfrtlip',buttons =list(list(extend='copy', text='Copiar'),list(extend='print', text='Imprimir'),list(extend ='collection',buttons =list(list(extend='csv', title=paste("Lista de especies sin registros de presencia de", TEMA_REGISTROS_PRESENCIA_ESPECIES),text='CSV' ),list(extend='excel', title=paste("Lista de especies sin registros de presencia de", TEMA_REGISTROS_PRESENCIA_ESPECIES),text='Excel' ),list(extend='pdf', title=paste("Lista de especies sin registros de presencia de", TEMA_REGISTROS_PRESENCIA_ESPECIES),text='PDF' ) ), text ='Descargar' ) ) ) )
Cantidad de especies (nombres aceptados) que están en la lista de especies y no tienen registros de presencia
41
Cantidad de especies (nombres aceptados) que están en la lista de especies y no tienen registros de presencia
0
Almacenamiento de los registros de presencia
Código para el almacenamiento de los registros de presencia
# Almacenamiento de los registros de presenciaregistros_presencia_unificados |> dplyr::select( speciesKey, species, decimalLongitude, decimalLatitude, coordinateUncertaintyInMeters ) |>write_csv(ARCHIVO_REGISTROS_PRESENCIA_ESPECIES, na ="")