GithubHelp home page GithubHelp logo

matthewjwhittle / rinat Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ropensci/rinat

0.0 0.0 0.0 4.47 MB

A programmatic interface to iNaturalist

Home Page: https://docs.ropensci.org/rinat

License: Other

R 100.00%

rinat's Introduction

rinat: Access iNaturalist data with R

Edmund Hart, Stéphane Guillou

Build Status Build status codecov.io

R wrapper for iNaturalist APIs for accessing the observations. The detailed documentation of the API is available on the iNaturalist website and is part of our larger species occurrence searching packages SPOCC.

Installation

You can install the latest version available on CRAN with:

install.packages("rinat")

Alternatively, you can install the development version from Github with:

remotes::install_github("ropensci/rinat")

Usage

Get observations

get_inat_obs() is the primary function that retrieves observations from iNaturalist. The text or taxon search can be refined by observation date, record quality and location.

It is recommended to set the quality argument to "research" in order to get more reliable data that has been validated by several contributors.

Taxon search

To return only records of a specific species or taxonomic group, use the taxon_name argument. For example, to return observations of anything from the Nymphalidae family, and restricting the search to the year 2015:

library(rinat)
nymphalidae <- get_inat_obs(taxon_name  = "Nymphalidae", year = 2015)
# how many unique taxa?
length(unique(nymphalidae$scientific_name))
## [1] 72

Note that get_inat_obs() will return 100 observations by default. This can be controlled with the maxresults argument.

Text search

You can also search observations with any string. It will search the entire iNaturalist database, so the search below will return all entries that mention Monarch butterflies, not just Monarch observations.

monarchs <- get_inat_obs(query = "Monarch Butterfly", year = 2021)
# which taxa were returned?
unique(monarchs$scientific_name)
## [1] "Danaus plexippus" "Danaina"

You can combine the fuzzy search with the precise taxon search. For example, to get Monarch butterfly observations that also mention the term “chrysalis”:

monarch_chrysalis <- get_inat_obs(taxon_name = "Danaus plexippus", query = "chrysalis")

Bounding box search

You can also search within a bounding box by giving a simple set of coordinates.

## Search by area
bounds <- c(38.44047, -125, 40.86652, -121.837)
deer <- get_inat_obs(query = "Mule Deer", bounds = bounds)
plot(deer$longitude, deer$latitude)

Other functions

More functions are available, notably to access:

  • observations in a project with get_inat_obs_project()
  • details of a single observation with get_inat_obs_id()
  • observations from a single user with get_inat_obs_user()
  • taxa statistics with get_inat_taxon_stats()
  • user statistics with get_inat_user_stats()

More detailed examples are included in the vignette:

vignette("rinat-intro", package = "rinat")

Mapping

Basic maps can be created with the inat_map() function to quickly visualize search results. The plot = FALSE option can be used to avoid displaying the initial plot when further customising it with ggplot2 functions.

library(ggplot2)

## Map 100 spotted salamanders
a_mac <- get_inat_obs(taxon_name = "Ambystoma maculatum", year = 2021)
salamander_map <- inat_map(a_mac, plot = FALSE)

### Further customise the returned ggplot object
salamander_map + borders("state") + theme_bw()

inat_map() is useful for quickly mapping single-species data obtained with rinat. However, more complicated plots are best made from scratch. Here is an example of customised map that does not make use of it. (Note the use of quality = "research" to restrict the search to the more reliable observations.)

## A more elaborate map of Colibri sp.
colibri <- get_inat_obs(taxon_name = "Colibri",
                        quality = "research",
                        maxresults = 500)
ggplot(data = colibri, aes(x = longitude,
                         y = latitude,
                         colour = scientific_name)) +
  geom_polygon(data = map_data("world"),
                   aes(x = long, y = lat, group = group),
                   fill = "grey95",
                   color = "gray40",
                   size = 0.1) +
  geom_point(size = 0.7, alpha = 0.5) +
  coord_fixed(xlim = range(colibri$longitude, na.rm = TRUE),
              ylim = range(colibri$latitude, na.rm = TRUE)) +
  theme_bw()


rinat's People

Contributors

stragu avatar emhart avatar ldalby avatar sckott avatar vijaybarve avatar martin-jung avatar stevenysw avatar jeroen avatar karthik avatar maelle avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.