“…el espacio donde las condiciones ecológicas favorecen, real o potencialmente y en varios niveles, las interacciones no efímeras de los individuos de una especie” Mota-Vargas & Rojas-Soto 2012
Los registros (colectas georeferenciadas) de las especies son los datos primarios de biodiversidad, a partir de los cuáles podemos estimar las áreas de distribución de estas y describir/evaluar los patrones de diversidad que emergen de su agregación (traslape; e.g., gradiente geográfico de riqueza)
Para comenzar podemos escoger una especie y aplicar la función occ_data
El objeto sp_data
es una lista con datos sobre los resultados obtenidos en GBIF (incluyendo algunos metadatos)
Para trabajar únicamente con la tabla de registros hay que seleccionar el objeto data dentro del mismo
Checar el nombre de las columnas (para después buscar únicamente las de posición geográfica: lat/long)
[1] "key" "scientificName" "decimalLatitude"
[4] "decimalLongitude" "issues" "datasetKey"
[7] "publishingOrgKey" "installationKey" "hostingOrganizationKey"
[10] "publishingCountry" "protocol" "lastCrawled"
[13] "lastParsed" "crawlId" "projectId"
[16] "basisOfRecord" "individualCount" "occurrenceStatus"
[19] "sex" "taxonKey" "kingdomKey"
[22] "phylumKey" "classKey" "orderKey"
[25] "familyKey" "genusKey" "speciesKey"
[28] "acceptedTaxonKey" "acceptedScientificName" "kingdom"
1.Crear otro objeto a partir sp_data
únicamente con long/lat
2.Quedarse únicamente con los puntos/registros individuales (i.e., excluir duplicados)
3.Transformarlo en un objeto espacial
NOTA: el nombre de la variable puede ser diferente (.e.g “LATITUDE”, “Latidude”, “lat”, etc. Siempre hay que checar antes)
Graficar (poner en un mapa) los puntos de presencia de nuestra especie
Agregar el mapa del mundo para saber qué onda!
Hay algo claramente equivocado, ¿cierto? Los puntos/registros necesitan ser “curados” (limpiados)
Eliminar los puntos con mala georeferencia (en este caso, puntos obvios en el “viejo mundo”)
Ahora sí, mapeamos de nuevo pero sólamente en la región de interés (México)
Y ¿Cómo eliminamos los registros que están en el mar?
Una vez tenemos los datos curados, podemos crear nuestro mcp
¿Cómo se ve?
Usamos el paquete alphahull
NOTA: Esta función solo acepta tablas como entrada
Error in eval(expr, envir, enclos): shull: duplicate points found
Error: shull: duplicate points found
Falla porque encuentra puntos duplicados o, como en este caso, puntos en una línea recta (i.e, mismo X y/o mismo Y).
¿Cómo podemos identificar y solucionar este error?
Ahora si, podemos crear el Alpha Hull con un valor de alpha escogido (por la razón que crean relevante)
Para observar el alpha hull, necesitamos que el objeto sea de tipo espacial del paquete sf
. Para eso usaremos una función independiente, disponible en su carpeta de trabajo
¿Cómo se ve?
Usamos el paquete rangeBuilder
, el cual crea un polígono alpha hull con un valor de alpha “óptimo” basado en la distribución espacial de los puntos
sp_range <- getDynamicAlphaHull(
sp_p3, #Tabla de puntos/registros de la especie
coordHeaders = c("decimalLongitude", "decimalLatitude"),# x y y
fraction = 0.95, # la fracción mínima de registros que debe incluir el polígono
partCount = 2, # el máximo de polígonos disyuntos permitidos
initialAlpha = 1, # Alpha inicial
alphaIncrement = 0.5,
alphaCap = 1000,
clipToCoast = "terrestrial" # solo la parte terrestre del polígono se mantendrá (se cortan las partes no-terrestres/acuáticas con base en un mapa descargado de naturalearth).
)
Convertir el polígono alpha a un objeto sf
¿Y ….Cómo se ven todos los polígonos?
Finalmente, podemos salvar esos polígonos como shapefiles
, para usarlos en otros software (e.g. ArcGIS) y eventualmente juntar los de varias especies para otros análisis (ejercicio siguiente)