La base de données Atlas est sauvegardée de façon régulière en format GeoParquet. Ce format de fichier, combiné à DuckDB permet la connexion efficace à un jeu de données à distance sans avoir à télécharger toutes les données. Il est également possible de télécharger le fichier Geoparquet contenant toutes les données publiques de l'Atlas pour effectuer des requêtes plus rapidement.
Voici les instructions pour intéragir avec le fichier GeoParquet entreposé sur l'infonuagique depuis R avec les packages dplyr, duckdb et duckdbfs.
Pour commencer, installer les packages suivants. Une fois les packages installés, il n'est pas nécessaire de les ré-installer à chaque utilisation.
install.packages(c('dplyr','duckdb','duckdbfs', 'sf'))
À chaque utilisation dans R, utiliser les librairies nécessaires.
library(dplyr)
library(duckdb)
library(duckdbfs)
library(sf)
Charger les fonctions nécessaires pour accéder aux données.
source("http://atlas.biodiversite-quebec.ca/bq-atlas-parquet.R")
L'objet atlas_dates contient les dates de sauvegarde des fichiers disponibles.
atlas_dates
Établir la connexion à la version la plus récente des données Atlas.
atlas_rem <- atlas_remote(tail(atlas_dates$dates,n=1))
Voir le nom des différents champs dans le fichier Parquet.
colnames(atlas_rem)
Voir les différentes sources de données ainsi que le nombre d'observations dans chacune.
datasets <- atlas_rem |> group_by(dataset_name) |> summarize(cnt=count()) |> arrange(desc(cnt))
Charger seulement les observations d'harfang des neiges dans un tibble (data frame). Cette requête peut prendre quelques minutes selon la vitesse de connexion internet. L'harfang des neiges est donné ici à titre d'exemple, il est possible de charger n'importe quelle espèce.
bubo_sca <- atlas_rem |> filter(valid_scientific_name == 'Bubo scandiacus') |> collect()
Charger les observation d'harfang des neiges en ne gardant que quelques colonnes.
bubo_sca <- atlas_rem |> filter(valid_scientific_name == 'Bubo scandiacus') |> select(valid_scientific_name, latitude, longitude,
dataset_name, year_obs, day_obs) |> collect()
Charger seulement les observations d'Iris versicolor dans un objet spatial sf. Cette requête peut prendre quelques minutes selon la vitesse de connexion internet.
iris_vers <- atlas_rem |> filter(valid_scientific_name == 'Iris versicolor') |>
mutate(geom = ST_Point(as.numeric(longitude), as.numeric(latitude))) |>
to_sf() |> collect()
Visualiser les données sur une carte.
plot(iris_vers)
Obtenir le nombre d'observations de chacune des espèces présentes dans Atlas et trier par nombre d'observations décroissant. À Noter que cette requête ne chargera pas les données Atlas sur votre ordinateur. Le calcul se fera à distance grâce à DuckDB et au format GeoParquet.
sp_count <- atlas_rem |> group_by(valid_scientific_name) |> summarize(cnt=count()) |> arrange(desc(cnt)) |> collect()
Pour des opérations plus lourdes et une interaction plus rapide avec le fichier, le télécharger localement sur votre ordinateur. À noter que le volume du fichier est d'environ 800 MB, donc s'assurer d'avoir suffisamment d'espace disque de libre.
# Remplacer « ~/Downloads » pour le répertoire de votre choix sur votre ordinateur.
atlas <- atlas_local(tail(atlas_dates$dates,n=1),'~/Downloads/')
Faire le décompte d'observations par espèce avec le fichier local. Cette commande en local s'effectue beaucoup plus rapidement qu'avec le fichier à distance ci-haut.
sp_count_local <- atlas |> group_by(valid_scientific_name) |>
summarize(cnt=count()) |> arrange(desc(cnt)) |> collect()
Charger seulement les observations d'harfang des neiges dans un tibble (data frame) en version locale. Cette commande en local s'effectue beaucoup plus rapidement qu'avec le fichier à distance ci-haut. L'harfang des neiges est donné ici à titre d'exemple, il est possible de charger n'importe quelle espèce.
bubo_sca_local <- atlas |> filter(valid_scientific_name == 'Bubo scandiacus') |> collect()
Si vous préférez faire des requêtes SQL au lieu d'utiliser le package dplyr, l'objet atlas_con établit une connexion à DuckDB et la fonction atlas_dbi() établira une connexion à distance au fichier parquet et créer une VIEW nommée atlas.
atlas_dbi(tail(atlas_dates$dates,n=1))
acci <- dbGetQuery(atlas_con,"SELECT * FROM atlas WHERE valid_scientific_name = 'Iris versicolor'")