top of page
Search
  • Writer's pictureJohn Deitsch

Range Maps With iNaturalist

Prologue

iNaturalist's dashboard reads 91,536,924 observations (as of my writing this on March 13, 2022). The two most frequently reported taxa, both with over 200,000 observations, are the ubiquitous Mallard and the well-traveled Western Honey Bee. Of course, most species have far fewer observations to their name. Despite its crowd-sourced bias towards familiar and charismatic organisms, iNaturalist has a wealth of information to offer about geographic distribution of many species.

While I don’t know how many users the R language and environment has, I imagine that we number less than 91 million. R may not be the first tool that comes to mind when thinking about spatial data analysis or making publication-quality maps – desktop GIS programs occupy much of the spotlight. Nevertheless, I have recently undertaken a small journey down the rabbit-hole of map-making in R. What follows is a brief account of my tentative footsteps using R to produce range-maps using iNaturalist data. The two primary limiting factors have been the biases inherent to iNaturalist data (more on this another time, perhaps) and my expanding, but still modest knowledge of GIS is R.

For my fledgling flight combining iNaturalist and R, I chose to work with iNaturalist data for the genus Ischnura, a delightful bunch of delicate damselflies distributed across much of the globe. I decided on this group for several reasons. First, familiarity with the consensus distribution for these species lets me know when a iNaturalist-generated map is a little suspicious. Second, I find it more rewarding to make maps for species that I have observed in the wild. Third, I avoided birds since the folks at eBird and the Cornell Lab of Ornithology already produce amazing maps for many species. Finally, iNaturalist has around 100,000 observations for this genus – not too few, not too many.

I downloaded ~67,000 iNaturalist observations of Ischnura (forktails) in North America from GBIF. With the help of just a few R packages (tidyverse, sf, ggspatial, units) I was up and running. But enough from me, let’s get a’mapping. R code to produce these maps (I performed a little post-processing with Adobe Illustrator) is available on my GitHub at: https://github.com/Deitsch-John/iNaturalist/blob/main/scripts/iNatMaps_blogpost.R .

 

Meeting the Cast

Eastern Forktail - Ischnura verticalis


Rambur's Forktail - Ischnura ramburii


Fragile Forktail - Ischnura posita


 

A Few Maps

Map 1: Individual observations plotted as points. Ischnura ramburii.


Map 2: Field-guide style range map. Ischnura ramburii.


Map 3: Individual observations plotted as points for two species. Ischnura posita and verticalis.


Map 4: Field-guide style range map for two species at once. Ischnura posita and verticalis.


 

Some Thoughts

  • Not too shabby, but definitely room for improvement.

  • I think there is a time and a place for both the 'dot' maps and the 'field-guide style' maps. Personally I find the 'dot' maps lacking when it comes to plotting more than one species at a time.

  • The biggest issue I see with the 'field-guide' maps above is that the R functions I used sometimes overestimate the range of a species (see Arizona and Ischnura ramburii, Map 1 vs 2). I have a few tricks up my sleeve to remedy this little hiccup. Perhaps that will be subject of my next post.

  • These maps were created using vector data (the underlying observations as points and the background maps with shapefiles). I didn't utilize any raster data, but R also works with raster data.


 

References

  1. GBIF.org (20 February 2022) GBIF Occurrence Download https://doi.org/10.15468/dl.cc6cgj

  2. R Core Team. (2022). R: A Language and Environment for Statistical Computing. https://www.r-project.org/

Resources


57 views0 comments
bottom of page