Anitrovic/openwateratlas-spots-climate-species-routes
OpenWaterAtlas — Spots × Climate × Species × Routes Version 1.0.0 · 2026-06-12 · CC-BY 4.0 · 1,005,290 rows across 8 configs An integrated open dataset joining 2,928 dive, kitesurf, surf and freedive spots to: daily climate aggregates (wind, air temperature, precipitation) at each spot, marine species occurrences (OBIS + GBIF, terrestrial-noise filtered) at each spot, the global direct-route airline graph (OpenFlights, 34,876 non-stop pairs). This is the structured-data layer… See the full description on the dataset page: https://huggingface.co/datasets/Anitrovic/openwateratlas-spots-climate-species-routes.
OpenWaterAtlas — Spots × Climate × Species × Routes
Version 1.0.0 · 2026-06-12 · CC-BY 4.0 · 1,005,290 rows across 8 configs
An integrated open dataset joining 2,928 dive, kitesurf, surf and freedive spots to:
- daily climate aggregates (wind, air temperature, precipitation) at each spot,
- marine species occurrences (OBIS + GBIF, terrestrial-noise filtered) at each spot,
- the global direct-route airline graph (OpenFlights, 34,876 non-stop pairs).
This is the structured-data layer behind openwateratlas.com. The companion citable archive is on Zenodo:
- Versioned DOI (v1.0.0): https://doi.org/10.5281/zenodo.20668393
- Concept DOI (latest): https://doi.org/10.5281/zenodo.20668392
Why this dataset exists
Every individual upstream source — OBIS, GBIF, OpenFlights, NOAA, Open-Meteo, Copernicus — is already open. The join is not. To answer a question like
"which dive sites are reachable on a direct flight from Lisbon in months when the water is ≥ 21 °C, and have manta-ray observations in the last five years?"
you would otherwise need to re-implement spot polygons, run 5 km-radius queries against OBIS and GBIF, dedupe OpenFlights, and re-derive monthly SST means. We publish the join itself so that work doesn't have to be repeated, and so downstream research and journalism can cite a single source.
Quickstart
from datasets import load_dataset
# Load any config by name:
spots = load_dataset("Anitrovic/openwateratlas-spots-climate-species-routes", "spots", split="train")
species_obs = load_dataset("Anitrovic/openwateratlas-spots-climate-species-routes", "species_observations", split="train")
daily_climate = load_dataset("Anitrovic/openwateratlas-spots-climate-species-routes", "daily_climate", split="train")
routes = load_dataset("Anitrovic/openwateratlas-spots-climate-species-routes", "airport_routes", split="train")
print(spots[0])
# {'id': 3270, 'slug': 'al-boom-diving', 'country_code': 'AE', ...}Configs
All coordinates are WGS 84 (EPSG:4326), longitude in lon, latitude in lat. Dates are ISO 8601. Booleans are True/False (parquet preserves bool type).
Methodology — short version
Full methodology: <https://openwateratlas.com/en/methodology/>.
Spots
2,928 named, human-curated dive / kite / surf / freedive sites ingested from OpenStreetMap sport=* nodes, operator site lists (PADI, SSI, NAUI, EFR, regional federations), and author-contributed sites with verification. Water-temperature range derived from NOAA Coral Reef Watch + Copernicus Marine reanalysis at the closest 0.05 ° grid cell.
Climate
For each spot, daily climatology queried from Open-Meteo Archive API at the spot's exact coordinates. The day-of-year aggregate is built from a five-year window (2019–2023) of hourly ERA5 observations. We report the 25th, 50th, 75th and 90th percentiles of wind speed (knots).
Species observations
OBIS v3 occurrence API (CC-BY 4.0; ~18 K records) + GBIF occurrence API with basisOfRecord=HUMAN_OBSERVATION (CC0/CC-BY; ~95 K records after noise filtering). Each spot queried with a 5 km radius. A family-level terrestrial blacklist was applied to drop GBIF noise (~76 K records / 40 %): Helicidae, Achatinidae (land snails), Coenobitidae, Gecarcinidae (land crabs), Porcellionidae, Oniscidae, Armadillidiidae (land isopods).
Airport routes
OpenFlights routes.dat (CC-BY 3.0, accessed 2024) deduplicated to 34,876 distinct (source_iata, dest_iata) pairs from the ~67 K original.
What we did NOT include
- Real-time SST, wave, wind or visibility. All values are climatological aggregates. For nowcasts go to NOAA / Copernicus / Open-Meteo directly.
- Operator / dive-shop coordinates — held separately on openwateratlas.com.
- Photos — kept within upstream licences (Pexels, iNaturalist, Wikimedia).
How to cite
When you use this dataset, please cite all of the following. The CC-BY 4.0 licence requires it.
Primary attribution:
Nitrovic, A. (2026). OpenWaterAtlas Spot–Climate–Species–Routes Dataset (v1.0.0) [Data set]. Zenodo. https://doi.org/10.5281/zenodo.20668393
BibTeX:
@dataset{nitrovic_2026_owa_dataset,
author = {Nitrovic, Alex},
title = {OpenWaterAtlas Spot--Climate--Species--Routes Dataset},
version = {1.0.0},
year = {2026},
month = jun,
publisher = {Zenodo},
doi = {10.5281/zenodo.20668393},
url = {https://doi.org/10.5281/zenodo.20668393}
}Upstream sources you must also cite (CC-BY 4.0 attribution chain):
- OBIS — <https://obis.org/> (CC-BY 4.0)
- GBIF — <https://www.gbif.org/> (CC0 / CC-BY per record)
- OpenFlights — <https://openflights.org/data.html> (CC-BY 3.0)
- NOAA Coral Reef Watch — <https://coralreefwatch.noaa.gov/>
- Open-Meteo — <https://open-meteo.com/>
- Copernicus Marine Service — <https://marine.copernicus.eu/>
- OpenStreetMap — <https://www.openstreetmap.org/> (ODbL)
License
The bundle as a whole is CC-BY 4.0. The redistribution includes material under different but compatible licences (CC-BY 3.0 for OpenFlights, CC-BY 4.0 for OBIS, CC0/CC-BY for GBIF per record). Downstream redistribution must credit OpenWaterAtlas and the upstream sources.
Contact
- Author: Alex Nitrovic, OpenWaterAtlas founder
- Email: support@openwateratlas.com
- Corrections / data quality: same email or <https://github.com/openwateratlas/data-issues>
