Title: | Code to Access Open Access Species Range Maps |
Version: | 0.0.1 |
Description: | Allows access to a proof-of-concept database containing Open Access species range models and relevant metadata. Access to the database is via both 'PostgreSQL' connection and API https://github.com/EnquistLab/Biendata-Frontend, allowing diverse use-cases. |
License: | MIT + file LICENSE |
Encoding: | UTF-8 |
RoxygenNote: | 7.3.2 |
Depends: | R (≥ 3.2.1), RPostgreSQL |
Imports: | DBI, sf, httr, jsonlite |
Suggests: | knitr, rmarkdown, testthat (≥ 3.0.0), maps, tidyverse, vcr, ggplot2 |
VignetteBuilder: | knitr |
Config/testthat/edition: | 3 |
NeedsCompilation: | no |
Packaged: | 2025-01-12 16:30:14 UTC; Brian Maitner |
Author: | Brian Maitner |
Maintainer: | Brian Maitner <bmaitner@usf.edu> |
Repository: | CRAN |
Date/Publication: | 2025-01-14 13:00:05 UTC |
Check that value is character
Description
Helper function to check data format.
Usage
.is_char(x)
Check that value is logical
Description
Helper function to check data format.
Usage
.is_log(x)
Check that value is logical or null
Description
Helper function to check data format.
Usage
.is_log_or_null(x)
Check that value is numeric
Description
Helper function to check data format.
Usage
.is_num(x)
Load range maps for given species using the API.
Description
OpenRange_api_load_species extracts range maps for the specified species.
Usage
OpenRange_api_load_species(species, ...)
Arguments
species |
A single species. |
... |
Additional arguments passed to internal functions. |
Value
Range maps for specified species.
Note
Details on the construction of BIEN range maps is available at http://bien.nceas.ucsb.edu/bien/biendata/bien-3/
See Also
Other range functions:
OpenRange_api_species()
,
OpenRange_get_license()
,
OpenRange_get_stats()
,
OpenRange_list_scenarios()
,
OpenRange_load_species()
,
OpenRange_sf()
,
OpenRange_species()
Examples
library(maps) #a convenient source of maps
library(sf)
temp_dir <- file.path(tempdir(), "BIEN_temp")
#Download ranges
Abies_poly <- OpenRange_api_load_species(species = "Abies_amabilis")
#Plotting files
plot(Abies_poly[,1])#plots the range, but doesn't mean much without any reference
map('world', fill = TRUE, col = "grey")#plots a world map (WGS84 projection), in grey
plot(Abies_poly,col="forest green",add=TRUE) #adds the range to the map
#Getting data from the files
Abies_poly |>
st_drop_geometry()
Download range maps for given species using the API.
Description
OpenRange_api_species downloads range maps for the specified species.
Usage
OpenRange_api_species(species, directory, include_id = TRUE, ...)
Arguments
species |
A single species. |
directory |
Directory that range maps should be saved in. |
include_id |
Logical. Should the range_id be appended to the file name? Needed to save multiple maps per species. |
... |
Additional arguments passed to internal functions. |
Value
NULL. Called for its side effect of downloading range maps.
Note
Details on the construction of BIEN range maps is available at http://bien.nceas.ucsb.edu/bien/biendata/bien-3/
See Also
Other range functions:
OpenRange_api_load_species()
,
OpenRange_get_license()
,
OpenRange_get_stats()
,
OpenRange_list_scenarios()
,
OpenRange_load_species()
,
OpenRange_sf()
,
OpenRange_species()
Examples
library(OpenRange)
library(maps) #a convenient source of maps
library(sf)
library(ggplot2)
# Create temp directory
temp_dir <- file.path(tempdir(), "BIEN_temp")
#Download ranges
OpenRange_api_species(species = "Abies_amabilis",
directory = temp_dir,
include_id = TRUE) # saves ranges to a temporary directory
#Reading files
Abies_poly <- st_read(dsn = temp_dir,
layer = "Abies_amabilis_117684")
# Get a map to plot on
world <- map("world", plot = FALSE, fill = TRUE)|>
st_as_sf()
#Plotting files
ggplot(data = world)+
geom_sf()+
geom_sf(data = Abies_poly,
fill="green")+
coord_sf(xlim = st_bbox(Abies_poly)[c(1,3)],
ylim = st_bbox(Abies_poly)[c(2,4)]) +
theme_bw()
#Getting data from the files
Abies_poly |>
st_drop_geometry()
Download license information
Description
OpenRange_get_license provides information on model licenses.
Usage
OpenRange_get_license(...)
Arguments
... |
Additional arguments passed to internal functions. |
Value
Data.frame containing information on the license associated with the maps.
See Also
Other range functions:
OpenRange_api_load_species()
,
OpenRange_api_species()
,
OpenRange_get_stats()
,
OpenRange_list_scenarios()
,
OpenRange_load_species()
,
OpenRange_sf()
,
OpenRange_species()
Other metadata functions:
OpenRange_get_stats()
,
OpenRange_list_scenarios()
Examples
range_license_info <- OpenRange_get_license()
Download model performance statistics
Description
OpenRange_get_stats provides information on model performance.
Usage
OpenRange_get_stats(...)
Arguments
... |
Additional arguments passed to internal functions. |
Value
List object containing one data.frame for each of the three modeling frameworks.
See Also
Other range functions:
OpenRange_api_load_species()
,
OpenRange_api_species()
,
OpenRange_get_license()
,
OpenRange_list_scenarios()
,
OpenRange_load_species()
,
OpenRange_sf()
,
OpenRange_species()
Other metadata functions:
OpenRange_get_license()
,
OpenRange_list_scenarios()
Examples
range_stats <- OpenRange_get_stats()
Download information on available climate change scenarios
Description
OpenRange_list_scenarios provides information on climate scenarios with range projections available.
Usage
OpenRange_list_scenarios(...)
Arguments
... |
Additional arguments passed to internal functions. |
Value
Data.frame containing climate change scenarios available in BIEN.
Note
Details on the construction of BIEN range maps is available at http://bien.nceas.ucsb.edu/bien/biendata/bien-3/
See Also
Other range functions:
OpenRange_api_load_species()
,
OpenRange_api_species()
,
OpenRange_get_license()
,
OpenRange_get_stats()
,
OpenRange_load_species()
,
OpenRange_sf()
,
OpenRange_species()
Other metadata functions:
OpenRange_get_license()
,
OpenRange_get_stats()
Examples
## Not run:
cc_scenarios <- OpenRange_list_scenarios()
## End(Not run)
Load Open Range maps for specified species.
Description
OpenRange_load_species returns spatial data for the specified species.
Usage
OpenRange_load_species(
species,
default_only = TRUE,
projection = 4326,
scenario = "present",
...
)
Arguments
species |
A single species or a vector of species. |
default_only |
Logical. Should only default ranges be included? Default is TRUE. |
projection |
Numeric. What projection should maps be returned in? 4326 (default) or 3857 |
scenario |
Which climate scenario(s) should be represented by maps? See BIEN_ranges_list_scenarios for options. |
... |
Additional arguments passed to internal functions. |
Value
A SpatialPolygonsDataFrame containing range maps for the specified species.
See Also
Other range functions:
OpenRange_api_load_species()
,
OpenRange_api_species()
,
OpenRange_get_license()
,
OpenRange_get_stats()
,
OpenRange_list_scenarios()
,
OpenRange_sf()
,
OpenRange_species()
Examples
#'
library(maps)
library(ggplot2)
library(sf)
species_vector <- c("Abies_lasiocarpa","Abies_amabilis")
abies_maps <- OpenRange_load_species(species = species_vector)
# To get all maps for a species, use "default = FALSE".
# Here, this returns maps with different thresholds from the same model
std_all <- OpenRange_load_species(species = "Stellaria debilis",
default_only = FALSE)
#To just get the default map, use "default = TRUE"
std_default <- OpenRange_load_species(species = "Stellaria debilis",
default_only = TRUE)
#get world map
world <- map("world", plot = FALSE, fill = TRUE)|>
st_as_sf()
#Plotting ranges
ggplot(data = world)+
geom_sf()+
geom_sf(data = abies_maps,
mapping = aes(fill = species),
alpha=0.5)+
coord_sf(xlim = st_bbox(abies_maps)[c(1,3)],
ylim = st_bbox(abies_maps)[c(2,4)]) +
theme_bw()
Download range maps that intersect a user-supplied sf object.
Description
OpenRange_sf extracts range maps that intersect a specified SpatialPolygons or SpatialPolygonsDataFrame object.
Usage
OpenRange_sf(
sf,
directory,
species.names.only = FALSE,
return.species.list = TRUE,
crop.ranges = FALSE,
include.gid = FALSE,
projection = 4326,
scenario = "present",
default_only = TRUE,
...
)
Arguments
sf |
An object of class sf |
directory |
Directory that range maps should be saved in. |
species.names.only |
Return species names rather than spatial data? Default is FALSE. |
return.species.list |
Should a species list be returned in addition to downloading range maps? Default is FALSE |
crop.ranges |
Should the ranges be cropped to the focal area? Default is FALSE. |
include.gid |
Should the files returned have a unique GID appended to them? This is needed if downloading multiple maps for the same species. |
projection |
Numeric. What projection should maps be returned in? 4326 (default) or 3857 |
scenario |
Which climate scenario should be represented by maps? See BIEN_ranges_list_scenarios. |
default_only |
Logical. Should only default ranges be included? Default is TRUE. |
... |
Additional arguments passed to internal functions. |
Value
All range maps that intersect the user-supplied shapefile.
Note
Details on the construction of BIEN range maps is available at https://bien.nceas.ucsb.edu/bien/biendata/bien-3/
See Also
Other range functions:
OpenRange_api_load_species()
,
OpenRange_api_species()
,
OpenRange_get_license()
,
OpenRange_get_stats()
,
OpenRange_list_scenarios()
,
OpenRange_load_species()
,
OpenRange_species()
Examples
saguaro_poly <- OpenRange_load_species("Carnegiea gigantea")
#Create a temp directory
temp_dir <- file.path(tempdir(), "BIEN_temp")
#Get range maps for all species with ranges that overlap the range range of saguaros
OpenRange_sf(sf = saguaro_poly,
directory = temp_dir)
#Note that this will save many sfs to the directory (or working directory)
Download range maps for given species.
Description
OpenRange_species extracts range maps for the specified species.
Usage
OpenRange_species(
species,
directory,
default_only = TRUE,
matched = TRUE,
match_names_only = FALSE,
include_id = TRUE,
projection = 4326,
scenario = "present",
...
)
Arguments
species |
A single species or a vector of species. |
directory |
Directory that range maps should be saved in. |
default_only |
Logical. Should only default ranges be included? Default is TRUE. |
matched |
Return a list of taxa that were downloaded. Default is TRUE. |
match_names_only |
Check for range maps for the taxa specified without downloading range maps. Default is FALSE. |
include_id |
Logical. Should the range_id be appended to the file name? Needed to save multiple maps per species. |
projection |
Numeric. What projection should maps be returned in? 4326 (default) or 3857 |
scenario |
Which climate scenario should be represented by maps? See BIEN_ranges_list_scenarios. |
... |
Additional arguments passed to internal functions. |
Value
Range maps for specified species.
Note
Details on the construction of BIEN range maps is available at http://bien.nceas.ucsb.edu/bien/biendata/bien-3/
See Also
Other range functions:
OpenRange_api_load_species()
,
OpenRange_api_species()
,
OpenRange_get_license()
,
OpenRange_get_stats()
,
OpenRange_list_scenarios()
,
OpenRange_load_species()
,
OpenRange_sf()
Examples
library(maps) #a convenient source of maps
library(sf)
species_vector <- c("Abies_lasiocarpa","Abies_amabilis")
#check whether the species are available
OpenRange_species(species_vector,match_names_only = TRUE)
#Create a temp directory
temp_dir <- file.path(tempdir(), "BIEN_temp")
#Download ranges
OpenRange_species(species = species_vector,
directory = temp_dir)#saves ranges to a temporary directory
#Reading files
Abies_poly <- st_read(dsn = temp_dir,
layer = "Abies_amabilis_117684")
#Plotting files
plot(Abies_poly[,1])#plots the range, but doesn't mean much without any reference
map('world', fill = TRUE, col = "grey")#plots a world map (WGS84 projection), in grey
plot(Abies_poly,col="forest green",add=TRUE) #adds the range of Abies lasiocarpa to the map
#Getting data from the files
Abies_poly |>
st_drop_geometry()
Run an SQL query on the OpenRange database.
Description
ranges_sql is an internal function used to submit SQL queries.
Usage
ranges_sql(
query,
user = "public_bien",
password = "bien_public",
ranges = NULL,
limit = NULL,
return.query = FALSE,
schema = "analytical_db",
db_name = "vegbien",
print.query = FALSE
)
Arguments
query |
A PostgreSQL query. |
user |
The username used to access the BIEN database |
password |
The password associated with the username |
ranges |
Alternative value to be substituted for "ranges" in queries when not NULL. |
limit |
A limit on the number of records to be returned. Should be a single number or NULL (the default). |
return.query |
Should the query used be returned rather than executed? Default is FALSE |
schema |
An alternative schema to be accessed. Used for testing purposes. |
db_name |
An alternate database to be used rather than the default, vegbien. |
print.query |
Should the query used be printed? Default is FALSE |
Value
A dataframe returned by the query.