Búsqueda de sitios

Author

Simon Goring, Socorro Dominguez Vidaña

Published

May 9, 2025

Búsqueda de sitios

get_sites()

Hay diferentes maneras de encontrar sitios en neotoma2. Debémos pensar en los sitios como objetos espaciales. Tienen nombre, ubicación y pueden ser encontrados bajo en contexto de unidades geopolíticas. Sin embargo, bajo el contexto de la API y del paquete de R, los sitios en sí mismos no contienen datos sobre la taxonomía, el grupo de datos o las edades. Simplemente es un contenedor al que le podemos agregar más información. Es así que cuando buscamos por sitio, lo hacemos usando los siguientes atributos (en inglés):

Parámetro Descripción
sitename Un nombre válido, usando % como comodín.
siteid Un identificador numérico único del sitio en la base de datos de Neotoma.
loc Un vector de caja delimitadora, GeoJSON o cadena WKT.
altmin Límite inferior de altitud para los sitios.
altmax Límite superior de altitud para los sitios.
database La base de datos específica de donde se extraen los registros.
datasettype El tipo de conjunto de datos (ver get_tables(datasettypes)).
datasetid Identificador numérico único del conjunto de datos en Neotoma.
doi Un DOI válido para un conjunto de datos en Neotoma.
gpid Un ID numérico único o cadena de texto que identifica una unidad geopolítica.
keywords Palabras clave únicas para muestras registradas en Neotoma.
contacts Un nombre o ID numérico de personas asociadas con los sitios.
taxa IDs numéricos únicos o nombres de taxones asociados con los sitios.

Nombre del sitio: sitename="%Lago%"

Hay ocasiones en las que sabremos exactamente el nombre del sitio que estamos buscando (“Lago Titicaca”), y habrà ocasiones en las que tendremos una idea aproximada sobre el nombre (por ejemplo, sabemos que el nombre es parecido a “Lago Titicaca”, o “Lake Titicaca”, pero no estamos seguros de como fue ingresado a la base de datos).

De forma general, utilizamos el formato: get_sites(sitename="XXXXX") para buscar un sitio por nombre.

PostgreSQL (y la API) utilizan el signo de porcentaje como comodín. De esta forma, "%Titicaca%" seleccionará “Lake Titicaca” y en caso de existir, también seleccionaría “Lago Titicaca” y “Pantano Titicaca”. La búsqueda tampoco distingue entre mayúsculas y minúsculas, por lo que simplemente podría escribir "%titicaca%".

Ubicación: loc=c()

El paquete neotoma utilizaba un cuadro delimitador para buscar por ubicación. El cuadro estaba estructurado como un vector con valores de latitud y longitud: c(xmin, ymin, xmax, ymax). En neotoma2 se puede utilizar esta misma caja delimitadora o podemos definir objetos espaciales más complejos con el paquete sf. El paquete sf nos permite trabajar con datos ráster y polígonos en R, para seleccionar sitios existentes en objetos espaciales más complejos. El parametro loc trabaja con vectores simples, objetos WKT, objetos geoJSON y objectos sf en R. Notar que el paquete neotoma2 es un función contenedora API que utiliza un URL (api.neotomadb.org).

Buscar sitios utilizando una ubicación. En el siguiente código hay tres representaciones de Sudamérica: geoJSON, WKT y con un cuadro delimitador. También hemos transformado el elemento sa$geoJSON a un objeto del paquete sf. Podemos utilizar cualquiera de estas cuatro representaciones para trabajar con el paquete neotoma2.

Puedes siempre hacer un gráfico de los sites obtenidos con plot(), pero los datos perderan el contexto geográfico. La función plotLeaflet() regresa un mapa de la librería leaflet() y permite mayor personalización o agregar datos espaciales adicionales (como nuestro cuadro delimitador, sa$sf, que funciona directamente con el paquete leaflet):

Auxiliares para objetos de tipo Sitios

Neotoma R diagrama UML.

Si observamos al diagrama UML para los objetos de neotoma2 podemos ver que hay un conjunto de funciones qeu operan a nivel de sites (sitios). Conforme vamos agregando información a los objetos sites mediante las funciones get_datasets() o get_downloads(), podemos utilizar un mayor número de funciones auxiliares. Podemos así, tomar ventaja de funciones como summary() para tener un mejor entendimiento de los diferentes tipos de datos que tenemos en este conjunto de sitios. El código a continuación regresa la tabla de resumen. Hacemos después un poco de magia con R para cambiar el formato en que los datos están siendo representados (convirtiéndolo a un objeto datatable()), pero la pieza principal es la llamada a la función summary().

Podemos ver que no hay cronologías asociadas con el objeto sites. Esto es porque, por el momento, no hemos extraído la información necesaria de los dataset. Todo lo que sabemos, tras la llamada get_sites() son los tipos de conjuntos de datos con los que contamos.

Búsqueda de conjuntos de datos (get_datasets()):

Sabemos que las colecciones y los conjuntos de datos están contenidos en los sitios. Similarmente, un objeto de tipo sites contienen collectionunits que contienen datasets. En la tabla anterior podemos ver que algunos de los sitios contienen registros de diatomeas. Dicho esto, solo tenemos la información de sites, pero por conveniencia, la API devuelve información adicional sobre los conjuntos de datos lo que nos permite navegar de manera más fácil los registros.

Con un objeto sites podemos llamar directamente a la función get_datasets(), que nos permitirá extraer metadatos sobre los conjuntos de datos. Podemos utilizar la función datasets() en cualqueir momento para obtener más información de los conjuntos de datos que un objeto sites pueda contener. Comparemos la información impresa datasets(sa_sites) contra una llamada similar utilizando el siguiente código.

Filtrar Registros con filter()

Si decidimos únicamente obtener registros de un sólo tipo de datos, o si requerimos de mayor filtración, debemos considerar filtrar antes de descargar todos los datos y muestras. Para ello, utilizaremos la función filter(). Por ejemplo, si requerimos únicamente los registros de polen con sus cronologías conocidas, podemos filtrar de la siguiente forma:

Podemos ver que la tabla de datos se ve diferente y que hay un número menor de sitios.