by Melanie H
Here comes my summary
The IUCN Red List of Threatened Species provides an inventory of the conservation status of species worldwirde representing an important tool for assessing biological diversity, extinction risks and conservation needs (IUCN 2019). The extinction risk of species is assessed in nine categories: NE (Not Evaluated), DD (Data Deficient), LC (Least Concern), NT (Near Threatened), VU (Vulnerable), EN (Endangered), CR (Critically Endangered), EW (Extinct in the Wild), EX (Extinct) (IUCN 2019a). VU, EN and CR are categories described as threatened. Quantitative criteria (A-E) are used for classifying a taxon into a threatened category (IUCN Species Survival Commission 2012). These criteria include population size (i.e. total number of mature individuals), subpopulations (geographically distinct groups in the population), reduction (decline in number), extreme fluctuations, extent of occurence and others (IUCN Species Survival Commission 2012). Criterion B incoporates geographical components and it is particularly widely used for evaluation because it allows the assessment by using georeferenced distribution data of a taxon (Schatz 2002). This is important because more detailed data (e.g. abundance data) is often not available. Dauby et al. (2017) developed the ConR R package which allows preliminary conservation assessment of many species simultaneously with distribution data. Criterion B has the two subcriteria B1 (extent of occurrence (EOO)) and B2 (area of occupancy (AOO)) and three additional conditions (a, b and c) considering potential decline (Dauby et al. 2017). ConR can calculate the subcriteria B1 and B2 and give an estimate of the number of locations (condition a) (Dauby et al. 2017). Moreover, subpopulations can be calculated as required for the submission of assessments to the IUCN Red List (Dauby et al. 2017). This tool simplifies further Red List assessments and conservation efforts and gives an example for using geospatial objects in conservation management. In this project I use freely accessible distribution data and the ConR package to evaluate the conservation status of several plant species. I focus on the conservation status of a) European orchids because I worked with the specific orchid Spiranthes spiralis for my Bachlor’s thesis and b) Kenyan montane forest trees because I investigated their water sources for my Master’s thesis.
The distribution data of the chosen taxa used for this analysis comes from the GBIF database providing open access biodiversity data funded by the world’s governments (GBIF 2019). After registering on the website it is possible to download observation data of selected species which is available as a .zip-file after a few minutes. The datasets I used are available on these links:
http://api.gbif.org/v1/occurrence/download/request/0030119-181108115102211.zip (GBIF.org (23rd January 2019) GBIF Occurrence Download https://doi.org/10.15468/dl.t9auez)
After unzipping I read the data in R using the R package rgbif (Chamberlain et al. 2018). After some data overview I computed … using the R package ConR (Dauby et al. 2017). For displaying occurrence in the world I used the R package rnaturalearth for mapping background (South 2017). I used R Studio with R Markdown for presenting code as well as visualizations and text.
# Install and load necessary packages
#install.packages("rgbif")
#install.packages("ConR")
#install.packages("rnaturalearth")
#install.packages("alphahull")
library(alphahull)
library(sf)
library(sp)
library(dplyr)
library(rnaturalearth)
library(ggplot2)
library(broom)
library(ggiraph)
library(tidyr)
library(raster)
library(tidyverse)
library(ConR)
library(rgbif)
data overview
After downloading and unzipping the data, I read them in R and looked at its contents.
orch_gbif <- occ_download_get(key = "0030119-181108115102211", overwrite = TRUE) %>%
occ_download_import(orch_gbif_download, na.strings = c("", NA))
orch_gbif
orch_gbif %>% count(genus, sort = TRUE) # gives number of occurrences of individuals of each genus
## # A tibble: 8 x 2
## genus n
## <chr> <int>
## 1 Platanthera 62307
## 2 Dactylorhiza 42237
## 3 Orchis 22527
## 4 Epipactis 19965
## 5 Ophrys 17810
## 6 Cephalanthera 16096
## 7 Spiranthes 14650
## 8 Anacamptis 74
orch_gbif %>% count(species, sort = TRUE) # gives number of occurrences of individuals (4403 to 41441) of each species (15)
## # A tibble: 15 x 2
## species n
## <chr> <int>
## 1 Platanthera bifolia 41441
## 2 Dactylorhiza fuchsii 24262
## 3 Orchis purpurea 21420
## 4 Platanthera chlorantha 20866
## 5 Epipactis palustris 19965
## 6 Dactylorhiza majalis 17975
## 7 Ophrys apifera 17808
## 8 Cephalanthera longifolia 16096
## 9 Spiranthes spiralis 8501
## 10 Spiranthes aestivalis 4403
## 11 Spiranthes romanzoffiana 1746
## 12 Orchis anthropophora 1103
## 13 Anacamptis pyramidalis 74
## 14 Orchis mascula 4
## 15 Ophrys insectifera 2
# or another way
# orch_gbif %>% filter(taxonRank == "SPECIES") %>% count(species) %>% arrange(desc(n))
orch_gbif %>% filter(species == "Spiranthes aestivalis") # see the number of rows = occurences of S. aestivalis
## # A tibble: 4,403 x 45
## gbifID datasetKey occurrenceID kingdom phylum class order family genus
## <int> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 1.12e9 75956ee6-~ http://cbnb~ Plantae Trach~ Lili~ Aspa~ Orchi~ Spir~
## 2 1.12e9 75956ee6-~ http://cbnb~ Plantae Trach~ Lili~ Aspa~ Orchi~ Spir~
## 3 1.12e9 75956ee6-~ http://cbnb~ Plantae Trach~ Lili~ Aspa~ Orchi~ Spir~
## 4 1.12e9 75956ee6-~ http://cbnb~ Plantae Trach~ Lili~ Aspa~ Orchi~ Spir~
## 5 1.12e9 75956ee6-~ http://cbnb~ Plantae Trach~ Lili~ Aspa~ Orchi~ Spir~
## 6 1.12e9 75956ee6-~ http://cbnb~ Plantae Trach~ Lili~ Aspa~ Orchi~ Spir~
## 7 1.12e9 75956ee6-~ http://cbnb~ Plantae Trach~ Lili~ Aspa~ Orchi~ Spir~
## 8 1.12e9 75956ee6-~ http://cbnb~ Plantae Trach~ Lili~ Aspa~ Orchi~ Spir~
## 9 1.12e9 75956ee6-~ http://cbnb~ Plantae Trach~ Lili~ Aspa~ Orchi~ Spir~
## 10 1.12e9 75956ee6-~ http://cbnb~ Plantae Trach~ Lili~ Aspa~ Orchi~ Spir~
## # ... with 4,393 more rows, and 36 more variables: species <chr>,
## # infraspecificEpithet <chr>, taxonRank <chr>, scientificName <chr>,
## # countryCode <chr>, locality <chr>, publishingOrgKey <chr>,
## # decimalLatitude <dbl>, decimalLongitude <dbl>,
## # coordinateUncertaintyInMeters <dbl>, coordinatePrecision <dbl>,
## # elevation <dbl>, elevationAccuracy <dbl>, depth <dbl>,
## # depthAccuracy <dbl>, eventDate <chr>, day <int>, month <int>,
## # year <int>, taxonKey <int>, speciesKey <int>, basisOfRecord <chr>,
## # institutionCode <chr>, collectionCode <chr>, catalogNumber <chr>,
## # recordNumber <chr>, identifiedBy <chr>, dateIdentified <chr>,
## # license <chr>, rightsHolder <chr>, recordedBy <chr>, typeStatus <chr>,
## # establishmentMeans <chr>, lastInterpreted <chr>, mediaType <chr>,
## # issue <chr>
Plot an overview
orch_gbif %>% count(genus, sort = TRUE) %>% filter(n > 500) %>%
ggplot(aes(x = reorder(genus, n), y = n)) + geom_bar(stat = "identity",
show.legend = FALSE) + labs(x = "Genus", y = "Number of Occurrence Records (observations)") +
coord_flip()+
theme_minimal()
This graph shows the number of observations of each selected orchid species. Spiranthes spec. has the fewest recorded occurrences and Platanthera spec. the most.
The following code refers to the ConR vignette (Dauby 2018).
ConR requires a data structure with 3 columns: ddlat: Latitude in decimal degrees ddlon: Longitude in decimal degrees Name of taxa field names do not matter but order of columns is mandatory.
# create sub-datasets
# for genus Spiranthes
spiranthes <- orch_gbif %>% dplyr::filter(genus == "Spiranthes") %>%
dplyr::select(decimalLatitude, decimalLongitude, species) # select the three necessary columns
# for species Spiranthes spiralis
spiralis <- orch_gbif %>% dplyr::filter(species == "Spiranthes spiralis") %>%
dplyr::select(decimalLatitude, decimalLongitude, species) # select the three necessary columns
# for species Spiranthes aestivalis
aesti <- orch_gbif %>% dplyr::filter(species == "Spiranthes aestivalis") %>%
dplyr::select(decimalLatitude, decimalLongitude, species) # select the three necessary columns
# for species Cephalanthera longifolia
cepha <- orch_gbif %>% dplyr::filter(species == "Cephalanthera longifolia") %>%
dplyr::select(decimalLatitude, decimalLongitude, species) # select the three necessary columns
# for Ophrys apifera
ophrys <- orch_gbif %>% dplyr::filter(species == "Ophrys apifera") %>%
dplyr::select(decimalLatitude, decimalLongitude, species) # select the three necessary columns
# compute EOO
EOO.computing(spiranthes, file.name = "spiranthes_EOO") # gives the EOO of all species of genus Spiranthes as output and as csv file
## [1] "Skipping 2038 occurrences because of missing coordinates for c(\"Spiranthes romanzoffiana\", \"Spiranthes spiralis\", \"Spiranthes aestivalis\")"
## EOO
## Spiranthes aestivalis 28150053
## Spiranthes romanzoffiana 57772619
## Spiranthes spiralis 14981515
EOO.computing(spiralis, file.name = "spiralis_EOO")
## [1] "Skipping 767 occurrences because of missing coordinates for Spiranthes spiralis"
## EOO
## Species1 14981515
EOO.computing(aesti, file.name = "aesti_EOO")
## [1] "Skipping 528 occurrences because of missing coordinates for Spiranthes aestivalis"
## EOO
## Species1 28150053
EOO.computing(cepha, file.name = "cepha_EOO")
## [1] "Skipping 1478 occurrences because of missing coordinates for Cephalanthera longifolia"
## EOO
## Species1 58911038
EOO.computing(ophrys, file.name = "ophrys_EOO")
## [1] "Skipping 1017 occurrences because of missing coordinates for Ophrys apifera"
## EOO
## Species1 13535828
Plotting the EOO of individual taxa as a shapefile in the world map:
EOO.spiralis <- EOO.computing(spiralis,export_shp = T) # as a shapefile
## [1] "Skipping 767 occurrences because of missing coordinates for Spiranthes spiralis"
sp::plot(ne_coastline(), # background map from rnaturalearth
main="EOO for Spiranthes spiralis - Convex Hull")
sp::plot(EOO.spiralis[[1]][[2]], col="darkred", add=TRUE)
EOO.aesti <- EOO.computing(aesti,export_shp = T) # as a shapefile
## [1] "Skipping 528 occurrences because of missing coordinates for Spiranthes aestivalis"
sp::plot(ne_coastline(), # background map from rnaturalearth
main="EOO for Spiranthes aestivalis - Convex Hull")
sp::plot(EOO.aesti[[1]][[2]], col="darkred", add=TRUE)
EOO.cepha <- EOO.computing(cepha,export_shp = T) # as a shapefile
## [1] "Skipping 1478 occurrences because of missing coordinates for Cephalanthera longifolia"
sp::plot(ne_coastline(), # background map from rnaturalearth
main="EOO for Cephalanthera longifolia - Convex Hull")
sp::plot(EOO.cepha[[1]][[2]], col="darkred", add=TRUE)
EOO.ophrys <- EOO.computing(ophrys,export_shp = T) # as a shapefile
## [1] "Skipping 1017 occurrences because of missing coordinates for Ophrys apifera"
sp::plot(ne_coastline(), # background map from rnaturalearth
main="EOO for Ophrys apifera - Convex Hull")
sp::plot(EOO.ophrys[[1]][[2]], col="darkred", add=TRUE)
It is very strange that all these rare orchids with special requirements seem to appear on some island on the west side of Africa. Maybe there is a museum or botanical garden but that cannot be real observation data.
Beside the method convex hull there is also the generalization of an alpha hull. This method is less prone to problems with outliers especially if two hulls over a period of time shall be compared (IUCN Standards and Petitions Subcommittee 2017). For example, the EOO is subdivided into several patches if it spans large uninhabited regions so that errors or outliniers in observations at one time as opposed to the other time have less weight (IUCN Standards and Petitions Subcommittee 2017). However, the IUCN guidelines discourage the use of alpha hulls “because disjunctions and outlying occurrences accurately reflect the extent to which a large range size reduces the chance that the entire population of the taxon will be affected by a single threatening process. The risks are spread by the existence of outlying or disjunct occurrences irrespective of whether the EOO encompasses significant areas of unsuitable habitat” (IUCN Standards and Petitions Subcommittee 2017). Inappropriate exclusions thus might lead to underestimated EOOs (IUCN Standards and Petitions Subcommittee 2017). This is why the method of excluding unsuitable areas is also not recommended. For mor accurate display of actual EOOs I will still choose the alpha hull method with the package alphahull (Pateiro-López & Rodríguez-Casal 2016):
EOO.spiralis2 <- EOO.computing(spiralis, method.range = "alpha.hull", export_shp = T, alpha=3)
## [1] "Skipping 767 occurrences because of missing coordinates for Spiranthes spiralis"
sp::plot(ne_coastline(), main="EOO for Spiranthes spiralis - Alpha Hull")
sp::plot(EOO.spiralis2[[1]][[2]], col="darkred", border = "transparent", add=TRUE)
EOO.aesti2 <- EOO.computing(aesti, method.range = "alpha.hull", export_shp = T, alpha=3)
## [1] "Skipping 528 occurrences because of missing coordinates for Spiranthes aestivalis"
sp::plot(ne_coastline(), main="EOO for Spiranthes aestivalis - Alpha Hull")
sp::plot(EOO.aesti2[[1]][[2]], col="darkred", border = "transparent", add=TRUE)
EOO.cepha2 <- EOO.computing(cepha, method.range = "alpha.hull", export_shp = T, alpha=3)
## [1] "Skipping 1478 occurrences because of missing coordinates for Cephalanthera longifolia"
sp::plot(ne_coastline(), main="EOO for Cephalanthera longifolia - Alpha Hull")
sp::plot(EOO.cepha2[[1]][[2]], col="darkred", border = "transparent", add=TRUE)
EOO.ophrys2 <- EOO.computing(ophrys, method.range = "alpha.hull", export_shp = T, alpha=3)
## [1] "Skipping 1017 occurrences because of missing coordinates for Ophrys apifera"
sp::plot(ne_coastline(), main="EOO for Ophrys apifera - Alpha Hull")
sp::plot(EOO.ophrys2[[1]][[2]], col="darkred", border = "transparent", add=TRUE)
The single observations on the west coast of Africa are only single points and thus not visible with alpha hull.
The approximate number of subpupulations are computed with cicular buffers (Resol_sub_pop gives buffer radius in km) around each observation and overlapping circles are merged to one subpopulation (Dauby et al. 2017).
Here is an example for Spiranthes spiralis:
sub.spiralis <- subpop.comp(spiralis, Resol_sub_pop=40) # gives 64 subpopulations
## [1] "Skipping 767 occurrences because of missing coordinates for Spiranthes spiralis"
sp::plot(sub.spiralis[["subpop.poly"]], col="darkred", border = "transparent")
sp::plot(ne_countries(continent = 'europe', scale = "small"), add=TRUE)
# finer resolution
# sub.spiralisF <- subpop.comp(spiralis, Resol_sub_pop=20) # gives 181 subpopulations
#
# sp::plot(sub.spiralisF[["subpop.poly"]], col="darkred", border = "transparent")
# sp::plot(ne_countries(continent = 'europe', scale = "small"), add=TRUE)
The output of the function IUCN.eval is data frame that provides several paramaters and the preliminary IUCN category. Additionally, it gives a table in the with the output data in the working directory and a map for each taxa (Dauby 2018). Intetionally, these calculations are possible for the whole dataset, however the calculations take very long or the R session gets aborted. This is why I had to process the taxa individually.
Beside the subcriterion B1 (EOO) this function calculates the subcriterion B2 (AOO, area of occupancy). This depends on occupied cells of a grid for a given resolution (default 2 km) (Dauby 2018). The argument Cell_size_AOO enables to modify the cell size.
# # seperate datasets and runs for each genus because otherwise the calculation takes very long or gets aborted
#
# IUCNspir <- IUCN.eval(spiranthes, file_name="IUCN_spir")
# IUCNcepha <- IUCN.eval(cepha, file_name="IUCN_cepha", Cell_size_AOO = 10)
#IUCNophrys <- IUCN.eval(ophrys, file_name="IUCN_ophrys", Cell_size_AOO = 10)
# platanthera <- orch_gbif %>% dplyr::filter(genus == "Platanthera") %>%
# dplyr::select(decimalLatitude, decimalLongitude, species) %>%
# filter(!is.na(decimalLatitude)) %>%
# filter(!is.na(species))
#
#
# # test: #detectCores() und parallel=T, NbeCores=4 in IUCN.eval
# IUCNplat <- IUCN.eval(platanthera, file_name="IUCN_platanthera", Cell_size_AOO = 10)
Pateiro-López B., Rodríguez-Casal A. (2016): Generalization of the Convex Hull of a Sample of Points in the Plane, Version 2.1. URL: https://cran.r-project.org/web/packages/alphahull/alphahull.pdf (02.02.19)
Chamberlain S., Barve V., Mcglinn D., Oldoni D., Geffert L., Ram K. (2018): Package ‘rgbif’. Interface to the Global ‘Biodiversity’ Information Facility API, Version 1.1.0. URL: https://cran.r-project.org/web/packages/rgbif/rgbif.pdf (02.02.19)
Dauby G., Stévart T., Droissart V., Cosiaux A., Deblauwe V., Simo-Droissart M., Sosef M.S.M., Lowry P.P. II, Schatz G.E., Gereau R.E., Couvreur T.L.P. (2017): ConR. An R package to assist large-scale multispecies preliminary conservation assessments using distribution data. Ecology and Evolution 7(24): 11292-11303. DOI: 10.1002/ece3.3704
Dauby G. (2018): How to use ConR (for beginners in R). URL: https://cran.r-project.org/web/packages/ConR/vignettes/my-vignette.html (02.02.19)
GBIF, Global Biodiversity Information Facility (2019): What is GBIF? URL: https://www.gbif.org/what-is-gbif (02.02.19)
IUCN, International Union for Conservation of Nature (2019): IUCN Red List of Threatened Species. URL: https://www.iucn.org/resources/conservation-tools/iucn-red-list-threatened-species#RL_importance (02.02.19)
IUCN, International Union for Conservation of Nature (2019a): The IUCN Red List Categories. URL: https://www.iucn.org/resources/conservation-tools/iucn-red-list-threatened-species#RL_categories (02.02.19)
IUCN Species Survival Commission (2012): IUCN Red List categories and criteria, version 3.1, second edition, Gland and Cambridge. URL: https://portals.iucn.org/library/sites/library/files/documents/RL-2001-001-2nd.pdf (02.02.19)
IUCN Standards and Petitions Subcommittee (2017): Guidelines for Using the IUCN Red List Categories and Criteria. Version 13. URL: http://cmsdocs.s3.amazonaws.com/RedListGuidelines.pdf (02.02.19)
Schatz G. E. (2002): Taxonomy and herbaria in service of plant conservation: Lessons from madagascar’s endemic families. Annals of the Missouri Botanical Garden, 89(2), 145-152. DOI: https://doi.org/10.2307/3298559
South, A. (2017): Package ‘rnaturalearth’. World Map Data from Natural Earth, Version 0.1.0. URL: https://cran.r-project.org/web/packages/rnaturalearth/rnaturalearth.pdf (02.02.19)