davidperezmartorell / forestMap

Map of forests and studies or inventories during the time
0 stars 0 forks source link

recoilar datos de GBIF #95

Closed davidperezmartorell closed 7 months ago

davidperezmartorell commented 7 months ago

Necesitamos datos de las especies para poder clasificarlo. a modo de ejemplo hice en Calvino pero para todos. kngdom, class, etc... con esto he rellenado los daos originales para no tener que descargarlos dinámicamene. el arhcivo esa completado. los datos que faltan son other. Necesite crear varias funciones usando GBIF nslookup, suggest y backbone. Abajo ongo un codigo de muestra, pero no es parte de la funcion, de hecho, tras modificar los datos originales, ya no se encesita esta funcion. el viernes os explico como lo hice pero básicamente los pasos fueron 1-> solicitar a gbif todos los datos con los datos originales (en realidada es una copia del campo, los datos de especie original siguen ahi) 2 -> con los datos que ercibo, relleno "kingdom", "phylum", "class", "order", "family", "genus" y "is_gymnosperm". Los datos que nos e rellenan, los dejo en blanco 3-> los datos que se quedan en blanco los filtro y uso otra funcion. Asi las 3 funciones. 4 -> cuando no encuentro mas datos, reviso y veo nombres con sp, .sp. , .spp, .sp1 .... y otros vlores asi. Miro si son especie o genero y filtro un poco mas. 5-> cuando veo que no hay ams especies, filtro por género. Busco que me confirme el nombre supuestamente de género y en caso positivo, solicito los datos de reino, familia..etc... 6-> los datos que me quedan, que no hay sugerencia de nada ni con GBIF ni con otra librria que se llama rtazon o algo asi, los descarto

Function to perform GBIF occurrence search with error handling and retry

perform_occ_search <- function(taxon_clean, max_retries = 3, retry_delay = 5) { retries <- 0 result <- NULL

while (retries < max_retries && is.null(result)) {
  tryCatch({
    # Try to perform GBIF occurrence search
    result <- occ_search(scientificName = taxon_clean, limit = 1)
  }, error = function(e) {
    # Handle the error (e.g., print a message)
    cat("Error in GBIF occurrence search for", taxon_clean, ": ", conditionMessage(e), "\n")
    retries <- retries + 1
    Sys.sleep(retry_delay)  # Sleep for specified seconds before retrying
  })
}

return(result)

}

Funcion para saber si es gymnosperama

    is_gymnosperm <- ifelse(
      species_info$phylum %in% c("Coniferophyta", "Other Gymnosperm Phyla") &&
        species_info$class %in% c("Pinopsida", "Other Gymnosperm Classes"),
      "Yes",
      "No"
    )