rgbif
gives you access to data from GBIF via their REST API. GBIF versions their API - we are currently using v1
of their API. You can no longer use their old API in this package - see ?rgbif-defunct
.
To get started, see:
rgbif
functions.Check out the rgbif
paper for more information on this package and the sister Python and Ruby clients.
The rgbif
package API follows the GBIF API, which has the following sections:
registry
(https://www.gbif.org/developer/registry) - Metadata on datasets, and contributing organizations, installations, networks, and nodes
rgbif
functions: dataset_metrics()
, dataset_search()
, dataset_suggest()
, datasets()
, enumeration()
, enumeration_country()
, installations()
, networks()
, nodes()
, organizations()
rgbif
functions: gbif_oai_get_records()
, gbif_oai_identify()
, gbif_oai_list_identifiers()
, gbif_oai_list_metadataformats()
, gbif_oai_list_records()
, gbif_oai_list_sets()
species
(https://www.gbif.org/developer/species) - Species names and metadata
rgbif
functions: name_backbone()
, name_lookup()
, name_suggest()
, name_usage()
occurrences
(https://www.gbif.org/developer/occurrence) - Occurrences, both for the search and download APIs
rgbif
functions: occ_count()
, occ_data()
, occ_download()
, occ_download_prep()
, occ_download_queue()
, occ_download_cancel()
, occ_download_cancel_staged()
, occ_download_get()
, occ_download_import()
, occ_download_list()
, occ_download_meta()
, occ_download_datasets()
, occ_download_dataset_activity()
, occ_get()
, occ_issues()
, occ_issues_lookup()
, occ_metadata()
, occ_search()
maps
(https://www.gbif.org/developer/maps) - Map API
rgbif
functions: map_fetch()
gbifmap()
that used ggplot2
to plot data from the occurrence API, but it’s been removed - see package maprAlternatively, install development version
Note: Windows users have to first install Rtools to use devtools
Mac Users: (in case of errors)
Terminal:
Install gdal : https://github.com/edzer/sfr/blob/master/README.md#macos
brew install openssl
in R:
occ_search(scientificName = "Ursus americanus", limit = 50)
#> Records found [14551]
#> Records returned [50]
#> No. unique hierarchies [1]
#> No. media records [50]
#> No. facets [0]
#> Args [limit=50, offset=0, scientificName=Ursus americanus, fields=all]
#> # A tibble: 50 x 87
#> key scientificName decimalLatitude decimalLongitude issues datasetKey
#> <chr> <chr> <dbl> <dbl> <chr> <chr>
#> 1 1986… Ursus america… 30.1 -103. cdrou… 50c9509d-…
#> 2 1986… Ursus america… 39.4 -120. cdrou… 50c9509d-…
#> 3 1986… Ursus america… 39.0 -120. cdrou… 50c9509d-…
#> 4 1986… Ursus america… 45.3 -76.8 cdrou… 50c9509d-…
#> 5 1990… Ursus america… 38.9 -120. cdrou… 50c9509d-…
#> 6 1990… Ursus america… 44.9 -62.7 cdrou… 50c9509d-…
#> 7 1990… Ursus america… 31.9 -94.7 cdrou… 50c9509d-…
#> 8 1990… Ursus america… 32.6 -109. cdrou… 50c9509d-…
#> 9 1990… Ursus america… 29.2 -81.8 cdrou… 50c9509d-…
#> 10 1990… Ursus america… 35.7 -76.6 cdrou… 50c9509d-…
#> # … with 40 more rows, and 81 more variables: publishingOrgKey <chr>,
#> # installationKey <chr>, publishingCountry <chr>, protocol <chr>,
#> # lastCrawled <chr>, lastParsed <chr>, crawlId <int>, extensions <chr>,
#> # basisOfRecord <chr>, taxonKey <int>, kingdomKey <int>, phylumKey <int>,
#> # classKey <int>, orderKey <int>, familyKey <int>, genusKey <int>,
#> # speciesKey <int>, acceptedTaxonKey <int>, acceptedScientificName <chr>,
#> # kingdom <chr>, phylum <chr>, order <chr>, family <chr>, genus <chr>,
#> # species <chr>, genericName <chr>, specificEpithet <chr>,
#> # infraspecificEpithet <chr>, taxonRank <chr>, taxonomicStatus <chr>,
#> # dateIdentified <chr>, coordinateUncertaintyInMeters <dbl>,
#> # stateProvince <chr>, year <int>, month <int>, day <int>, eventDate <chr>,
#> # modified <chr>, lastInterpreted <chr>, references <chr>, license <chr>,
#> # identifiers <chr>, facts <chr>, relations <chr>, geodeticDatum <chr>,
#> # class <chr>, countryCode <chr>, country <chr>, rightsHolder <chr>,
#> # identifier <chr>, http...unknown.org.nick <chr>, informationWithheld <chr>,
#> # verbatimEventDate <chr>, datasetName <chr>, verbatimLocality <chr>,
#> # collectionCode <chr>, gbifID <chr>, occurrenceID <chr>, taxonID <chr>,
#> # catalogNumber <chr>, recordedBy <chr>,
#> # http...unknown.org.occurrenceDetails <chr>, institutionCode <chr>,
#> # rights <chr>, eventTime <chr>, occurrenceRemarks <chr>,
#> # identificationID <chr>, name <chr>, sex <chr>, lifeStage <chr>,
#> # continent <chr>, recordNumber <chr>, dynamicProperties <chr>,
#> # georeferenceVerificationStatus <chr>, locality <chr>, county <chr>,
#> # language <chr>, preparations <chr>, disposition <chr>, fieldNotes <chr>,
#> # reproductiveCondition <chr>
Or you can get the taxon key first with name_backbone()
. Here, we select to only return the occurrence data.
key <- name_backbone(name='Helianthus annuus', kingdom='plants')$speciesKey
occ_search(taxonKey=key, limit=20)
#> Records found [46031]
#> Records returned [20]
#> No. unique hierarchies [1]
#> No. media records [20]
#> No. facets [0]
#> Args [limit=20, offset=0, taxonKey=9206251, fields=all]
#> # A tibble: 20 x 93
#> key scientificName decimalLatitude decimalLongitude issues datasetKey
#> <chr> <chr> <dbl> <dbl> <chr> <chr>
#> 1 1986… Helianthus an… 33.8 -118. cdrou… 50c9509d-…
#> 2 1986… Helianthus an… 27.7 -97.3 cdrou… 50c9509d-…
#> 3 1990… Helianthus an… 26.2 -98.2 cdrou… 50c9509d-…
#> 4 1990… Helianthus an… 52.6 10.1 cdrou… 6ac3f774-…
#> 5 1990… Helianthus an… 53.9 10.9 cdrou… 6ac3f774-…
#> 6 1993… Helianthus an… 34.0 -117. cdrou… 50c9509d-…
#> 7 1993… Helianthus an… 33.4 -118. cdrou… 50c9509d-…
#> 8 2235… Helianthus an… 51.2 4.45 "" 7f5e4129-…
#> 9 2236… Helianthus an… 26.2 -98.2 cdrou… 50c9509d-…
#> 10 2247… Helianthus an… 58.4 11.9 cdrou… 38b4c89f-…
#> 11 2247… Helianthus an… 55.7 14.2 gass84 38b4c89f-…
#> 12 2265… Helianthus an… 33.8 -118. cdrou… 50c9509d-…
#> 13 2456… Helianthus an… -27.8 -51.1 cdrou… 50c9509d-…
#> 14 1993… Helianthus an… 29.8 -95.2 cdrou… 50c9509d-…
#> 15 2005… Helianthus an… 27.5 -99.5 cdrou… 50c9509d-…
#> 16 2005… Helianthus an… 31.6 -106. cdrou… 50c9509d-…
#> 17 2005… Helianthus an… 31.5 -97.1 cdrou… 50c9509d-…
#> 18 2006… Helianthus an… 34.6 33.0 cdrou… 50c9509d-…
#> 19 2006… Helianthus an… 27.7 -97.3 cdrou… 50c9509d-…
#> 20 2012… Helianthus an… 33.5 -118. cdrou… 50c9509d-…
#> # … with 87 more variables: publishingOrgKey <chr>, installationKey <chr>,
#> # publishingCountry <chr>, protocol <chr>, lastCrawled <chr>,
#> # lastParsed <chr>, crawlId <int>, extensions <chr>, basisOfRecord <chr>,
#> # taxonKey <int>, kingdomKey <int>, phylumKey <int>, classKey <int>,
#> # orderKey <int>, familyKey <int>, genusKey <int>, speciesKey <int>,
#> # acceptedTaxonKey <int>, acceptedScientificName <chr>, kingdom <chr>,
#> # phylum <chr>, order <chr>, family <chr>, genus <chr>, species <chr>,
#> # genericName <chr>, specificEpithet <chr>, taxonRank <chr>,
#> # taxonomicStatus <chr>, dateIdentified <chr>,
#> # coordinateUncertaintyInMeters <dbl>, stateProvince <chr>, year <int>,
#> # month <int>, day <int>, eventDate <chr>, modified <chr>,
#> # lastInterpreted <chr>, references <chr>, license <chr>, identifiers <chr>,
#> # facts <chr>, relations <chr>, geodeticDatum <chr>, class <chr>,
#> # countryCode <chr>, country <chr>, rightsHolder <chr>, identifier <chr>,
#> # http...unknown.org.nick <chr>, verbatimEventDate <chr>, datasetName <chr>,
#> # verbatimLocality <chr>, collectionCode <chr>, gbifID <chr>,
#> # occurrenceID <chr>, taxonID <chr>, catalogNumber <chr>, recordedBy <chr>,
#> # http...unknown.org.occurrenceDetails <chr>, institutionCode <chr>,
#> # rights <chr>, eventTime <chr>, occurrenceRemarks <chr>,
#> # identificationID <chr>, name <chr>, locality <chr>, individualCount <int>,
#> # continent <chr>, informationWithheld <chr>, nomenclaturalCode <chr>,
#> # municipality <chr>, identificationVerificationStatus <chr>, language <chr>,
#> # type <chr>, vernacularName <chr>, datasetID <chr>, samplingProtocol <chr>,
#> # accessRights <chr>, reproductiveCondition <chr>, county <chr>,
#> # occurrenceStatus <chr>, taxonConceptID <chr>, endDayOfYear <chr>,
#> # startDayOfYear <chr>, higherClassification <chr>,
#> # http...unknown.org.recordedByOrcid <chr>
Get the keys first with name_backbone()
, then pass to occ_search()
splist <- c('Accipiter erythronemius', 'Junco hyemalis', 'Aix sponsa')
keys <- sapply(splist, function(x) name_backbone(name=x)$speciesKey, USE.NAMES=FALSE)
occ_search(taxonKey=keys, limit=5, hasCoordinate=TRUE)
#> Records found [2480598 (35), 9362842 (5526977), 2498387 (1826787)]
#> Records returned [2480598 (5), 9362842 (5), 2498387 (5)]
#> No. unique hierarchies [2480598 (1), 9362842 (1), 2498387 (1)]
#> No. media records [2480598 (5), 9362842 (5), 2498387 (5)]
#> No. facets [2480598 (0), 9362842 (0), 2498387 (0)]
#> Args [hasCoordinate=TRUE, limit=5, offset=0, taxonKey=2480598,9362842,2498387,
#> fields=all]
#> 3 requests; First 10 rows of data from 2480598
#>
#> # A tibble: 5 x 67
#> key scientificName decimalLatitude decimalLongitude issues datasetKey
#> <chr> <chr> <dbl> <dbl> <chr> <chr>
#> 1 2243… Accipiter ery… -38.3 -60.4 "" b1047888-…
#> 2 2432… Accipiter ery… -24.0 -52.2 "" b1047888-…
#> 3 2243… Accipiter ery… -24.3 -48.4 "" b1047888-…
#> 4 2243… Accipiter ery… -26.3 -48.6 "" b1047888-…
#> 5 2243… Accipiter ery… -26.3 -48.6 "" b1047888-…
#> # … with 61 more variables: publishingOrgKey <chr>, installationKey <chr>,
#> # publishingCountry <chr>, protocol <chr>, lastCrawled <chr>,
#> # lastParsed <chr>, crawlId <int>, extensions <chr>, basisOfRecord <chr>,
#> # taxonKey <int>, kingdomKey <int>, phylumKey <int>, classKey <int>,
#> # orderKey <int>, familyKey <int>, genusKey <int>, speciesKey <int>,
#> # acceptedTaxonKey <int>, acceptedScientificName <chr>, kingdom <chr>,
#> # phylum <chr>, order <chr>, family <chr>, genus <chr>, species <chr>,
#> # genericName <chr>, specificEpithet <chr>, taxonRank <chr>,
#> # taxonomicStatus <chr>, year <int>, month <int>, day <int>, eventDate <chr>,
#> # lastInterpreted <chr>, references <chr>, license <chr>, identifiers <chr>,
#> # facts <chr>, relations <chr>, geodeticDatum <chr>, class <chr>,
#> # countryCode <chr>, country <chr>, rightsHolder <chr>, identifier <chr>,
#> # nomenclaturalCode <chr>, verbatimEventDate <chr>, locality <chr>,
#> # collectionCode <chr>, gbifID <chr>, occurrenceID <chr>,
#> # catalogNumber <chr>, recordedBy <chr>, vernacularName <chr>,
#> # fieldNotes <chr>, eventTime <chr>, verbatimElevation <chr>, behavior <chr>,
#> # higherClassification <chr>, name <chr>, associatedTaxa <chr>
We’ve removed gbifmap()
which helped users plot data from functions occ_search()
/occ_data()
- instead we strongly recommend using our other package mapr.
As of rgibf v1
, we have integration for GBIF’s mapping API, which lets you get raster images of occurrences of taxa of interest. For example:
x <- map_fetch(taxonKey = 3118771, year = 2010)
x
#> class : RasterLayer
#> dimensions : 512, 512, 262144 (nrow, ncol, ncell)
#> resolution : 0.703125, 0.3515625 (x, y)
#> extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
#> crs : +init=epsg:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
#> source : memory
#> names : layer
#> values : 0, 1 (min, max)
Collected via GitHub Issues, this list honors all contributors in alphabetical order. Code contributors are in bold.
adamdsmith - AgustinCamacho - AldoCompagnoni - AlexPeap - andzandz11 - AshleyWoods - AugustT - benmarwick - cathynewman - cboettig - coyotree - damianooldoni - dandaman - djokester - dlebauer - dmcglinn - dnoesgaard - DupontCai - ecology-data-science - EDiLD - elgabbas - emhart - fxi - ghost - gkburada - hadley - Huasheng12306 - ibartomeus - JanLauGe - jarioksa - jeroen - jhnwllr - jhpoelen - jivelasquezt - jkmccarthy - johnbaums - jtgiermakowski - jwhalennds - karthik - kgturner - Kim1801 - ljuliusson - luisDVA - martinpfannkuchen - MattBlissett - MattOates - maxhenschell - mdsumner - no-la-ngo - Octoberweather - Pakillo - peterdesmet - PhillRob - poldham - qgroom - raymondben - rossmounce - sacrevert - sagitaninta - sckott - scottsfarley93 - simon-tarr - SriramRamesh - stevenpbachman - stevensotelo - stevenysw - TomaszSuchan - tphilippi - vandit15 - vervis - vijaybarve - willgearty - Xuletajr - yvanlebras - zixuan75
rgbif
in R doing citation(package = 'rgbif')
This package is part of a richer suite called spocc - Species Occurrence Data, along with several other packages, that provide access to occurrence records from multiple databases.