Where the Data Comes From
The visualizations in this atlas are built on occurrence records contributed by researchers, citizen scientists, and institutions worldwide. Each observation represents a documented sighting with verified coordinates and temporal metadata.
Primary Data Source: GBIF
The Global Biodiversity Information Facility (GBIF.org) serves as the primary data source for whale occurrence records. GBIF aggregates biodiversity data from thousands of institutions and research networks, providing open access to species observation data that spans decades and covers every ocean basin.
Raw occurrence records were downloaded as individual species datasets, filtered for data quality (coordinate precision, temporal accuracy, taxonomic verification), and processed through a standardized pipeline before integration into the visualization system.
Species Coverage
The density map combines observation data from eleven whale species spanning the period 2005-2025. These species were selected based on data availability, geographic coverage, and relevance to whale watching activities worldwide.
Whale Watching Location Data
The 38 whale watching destinations were curated from multiple sources including tourism boards, whale watching operator associations, scientific literature on cetacean distribution, and verified traveler reports. Each location profile includes:
- Geographic coordinates and regional classification
- Species present and their seasonal availability windows
- Industry metrics (number of operators, vessel capacity)
- Annual visitor estimates derived from tourism statistics
- Accessibility ratings based on transportation infrastructure
How the Heatmaps Are Generated
The density heatmap uses an advanced hexagonal grid system to eliminate visual artifacts and provide accurate representation of whale species diversity across the globe.
Data Collection
GBIF occurrence data from 11 whale species downloaded and filtered for coordinate precision and date accuracy. Records span 2005-2025.
Temporal Binning
Observations assigned to 12 monthly bins based on event dates, enabling seasonal migration pattern visualization.
Spatial Indexing
Each observation mapped to an H3 hexagonal cell (resolution 4, ~47km edge length) using lat/lon coordinates.
Density Calculation
Count unique species per hexagon per month. Density values range from 1-11 representing species diversity.
Persistence Filtering
Remove isolated single-month appearances to eliminate noise from opportunistic or erroneous sightings.
Visualization Export
Generate point clouds, clip to ocean boundaries, export to GeoJSON for Mapbox heatmap rendering.
Why Hexagonal Grids?
Hexagonal grids (H3) have uniform neighbor distances and no orientation bias, making them superior to square grids for spatial aggregation. Each hexagon has exactly 6 neighbors at equal distances, preventing the directional artifacts common in traditional raster systems.
Species Diversity vs. Observation Count
The heatmap displays species diversity (how many different species overlap in an area), not raw observation counts. A cell with 3 species receives the same weight whether there are 5 or 500 individual observations. This approach reveals biodiversity hotspots and migration corridor overlaps rather than areas with high research activity.
Brighter areas on the map indicate where more species co-occur during a given month, highlighting regions of particular ecological significance and whale watching potential.
Scoring Methodology
Each whale watching location is evaluated on two primary metrics designed to help visitors choose destinations that match their priorities.
Experience Score (0-100)
Measures the quality and memorability of whale encounters. This composite metric considers:
- Behavior Diversity (25%) — Variety of observable behaviors including breaching, feeding, singing, and social interaction
- Proximity Quality (25%) — Typical distance to whales; some locations permit closer approaches
- Species Diversity (20%) — Number of different whale species regularly observed
- Unique Features (15%) — Special phenomena like bubble-net feeding, friendly whale interactions, or beach hunting
- Supporting Wildlife (15%) — Presence of other marine life enhancing the overall experience
Sighting Rate (0-100)
Represents the probability of seeing whales during optimal season visits. Factors include:
- Success Rate (40%) — Reported whale sighting success from operators (many guarantee 90%+ during peak season)
- Season Length (20%) — Longer reliable seasons indicate more stable populations
- Weather Reliability (20%) — Frequency of weather-related trip cancellations
- Water Clarity (10%) — Visibility conditions affecting underwater viewing where applicable
- Whale Density (10%) — Typical number of whales encountered per trip
Data Limitations
- Observation Bias: GBIF data reflects research effort as much as whale presence. Coverage is uneven globally, with better data in well-studied regions near research stations and shipping lanes.
- Temporal Gaps: Historical data quality varies significantly. Records from 2015-present generally have better coverage and verification than earlier periods.
- Species Identification: Some records may have identification uncertainties, particularly for species difficult to distinguish at sea or from vessel-based observations.
- Location Ratings: Scores are based on available information and may not reflect recent changes in whale populations, tourism infrastructure, or environmental conditions.
- Seasonal Variation: Whale presence can vary significantly year-to-year based on oceanographic conditions, prey availability, and climate patterns.
This platform is intended for educational and trip-planning purposes. For current conditions, always consult local whale watching operators and regional tourism authorities.
Technical Implementation
Technology Stack
The interactive maps are built using Mapbox GL JS for vector rendering with WebGL, enabling smooth animations, dynamic styling, and efficient handling of large datasets. The data processing pipeline uses Python with GeoPandas for spatial analysis.