Búsqueda de sitios
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
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.