Biodiversity & species data
Occurrence records as spatial data: what a GBIF record is, the bias in it, richness and diversity per cell, distribution models, ranges and protected areas.
GBIF holds billions of occurrence records: a specimen in a drawer, a photograph on a phone, a detection on a camera trap, all in one schema. It is an extraordinary resource and it answers a narrower question than it appears to, because every record is a presence and there is no record anywhere that says "I looked here and found nothing".
That single missing field shapes everything downstream. Absence has to be assumed, so distribution models compare the records against a background the analyst chooses — and that choice moves the result more than the algorithm does. Richness per cell tracks the number of records almost perfectly, so a richness map is an effort map until it is corrected. Coordinates carry an uncertainty radius that is missing a third of the time and, where present, is often a round number of miles. And a convex hull over uncleaned records can cover a quarter of the planet because one specimen was catalogued at the museum that holds it.
The concepts below set out what a record is, how it is biased and what the metrics measure; the how-to guides download, clean, thin, grid, rarefy, model, map and join real records against real climate and protected-area layers; and the fixes are the five ways these analyses go wrong in public.
🧭 Start with the concepts
The ideas the how-to guides below assume you already have.
- Species Occurrence Data Explained
- Sampling Bias in Occurrence Data Explained
- Coordinate Uncertainty Explained
- Species Distribution Models Explained
- Biodiversity Metrics Explained
- Protected Area Data Explained
Show every concept in this topic
⚙️ Then do the task
Step-by-step walkthroughs with code you can copy and adapt.
- How to download GBIF occurrences in Python
- How to clean species occurrence records
- How to build a species richness grid
- How to correct richness for sampling effort
- How to thin occurrence records spatially
- How to fit a species distribution model in Python
Show every how-to guide in this topic
- How to draw a species range from occurrence points
- How to find which species occur in protected areas
- How to extract climate covariates at occurrence points
- How to Compare Forest Loss Inside and Outside Protected Areas in Python
- How to Measure Forest Fragmentation in Python
- How to Map Coral Bleaching Heat Stress with Degree Heating Weeks in Python
- How to Measure Street Tree Species Diversity by Neighbourhood
🔧 When it breaks
The errors this topic produces, with the cause explained rather than just the command.
Learning paths through this topic
A curated route rather than a list — the guides in the order that builds on itself.
Related topics
Subjects that keep coming up alongside this one, most overlap first.