{
  "type": "Collection",
  "stac_version": "1.0.0",
  "stac_extensions": [
    "https://stac-extensions.github.io/table/v1.2.0/schema.json",
    "https://stac-extensions.github.io/scientific/v1.0.0/schema.json"
  ],
  "id": "obis-derived",
  "title": "OBIS Marine Occurrence Records (global, H3 resolution 8)",
  "description": "Global marine species occurrence records from the Ocean Biodiversity Information System (OBIS), indexed to H3 resolution 8 for spatial analysis. OBIS is the marine counterpart to GBIF: it aggregates occurrence records from thousands of marine datasets, matches every name against the World Register of Marine Species (WoRMS), and adds its own quality control and environmental context.\n\nThis collection holds 228,567,957 occurrence records drawn from 6,921 source datasets, covering the global ocean with no spatial clip.\n\n**How this differs from the GBIF collection.** The catalog also carries GBIF occurrences, and a subset of those is published through the OBIS network, but the two are not the same data. OBIS names come from WoRMS and GBIF names come from the GBIF Backbone, so the same record can carry a different accepted name in each. OBIS adds AphiaID, environment flags, depth, sea floor depth, sea surface temperature and salinity, and its own quality flags, none of which survive into GBIF. OBIS also draws on more source datasets than the OBIS network registered with GBIF. The dataset identifiers are drawn from different id spaces and do not join, so the two collections can only be compared spatially, through their shared H3 cells.\n\n**What is included.** Records that failed OBIS quality control, and absence records, are excluded from this collection. Absence records document that a survey looked and found nothing, so counting them would inflate any measure of occurrence density or species richness. Records without a usable coordinate are also excluded.\n\n**Licensing.** This data is licensed CC BY-NC 4.0, which permits non-commercial use with attribution. That is more restrictive than most of this catalog. Per-dataset licence and citation details for every source dataset are staged alongside the data at s3://public-obis/raw/licenses.tsv.\n\n**Provenance.** OBIS publishes this export as a rolling dataset at s3://obis-open-data/occurrence/, overwritten in place, and does not attach an edition or version label to it. The date in the path of this collection is the date we read it, not an OBIS release. The raw source as read on that date is staged at s3://public-obis/raw/ with a manifest at s3://public-obis/raw/MANIFEST.txt recording 7,102 files totalling 98,688,319,241 bytes and a per-file MD5 checksum. That staged copy and its manifest are the provenance for this collection, because the upstream path no longer holds the same data.",
  "license": "CC-BY-NC-4.0",
  "keywords": [
    "marine",
    "ocean",
    "biodiversity",
    "OBIS",
    "occurrence",
    "species",
    "WoRMS",
    "H3",
    "high seas"
  ],
  "providers": [
    {
      "name": "Ocean Biodiversity Information System (OBIS)",
      "roles": [
        "producer",
        "licensor"
      ],
      "url": "https://obis.org"
    },
    {
      "name": "Intergovernmental Oceanographic Commission of UNESCO",
      "roles": [
        "producer",
        "licensor"
      ],
      "url": "https://ioc.unesco.org"
    },
    {
      "name": "Boettiger Lab, UC Berkeley",
      "roles": [
        "processor",
        "host"
      ],
      "url": "https://s3-west.nrp-nautilus.io/public-obis"
    }
  ],
  "extent": {
    "spatial": {
      "bbox": [
        [
          -180.0,
          -90.0,
          180.0,
          90.0
        ]
      ]
    },
    "temporal": {
      "interval": [
        [
          "1626-01-01T00:00:00Z",
          "2026-12-31T23:59:59Z"
        ]
      ]
    }
  },
  "sci:citation": "Ocean Biodiversity Information System (OBIS). OBIS Occurrence Data. Intergovernmental Oceanographic Commission of UNESCO. https://obis.org. Accessed 2026-09-09 from s3://obis-open-data/occurrence/ (rolling export, no upstream edition label).",
  "created": "2026-09-09T18:13:26Z",
  "updated": "2026-09-09T18:13:26Z",
  "links": [
    {
      "rel": "self",
      "href": "https://s3-west.nrp-nautilus.io/public-obis/stac-collection.json",
      "type": "application/json"
    },
    {
      "rel": "root",
      "href": "https://s3-west.nrp-nautilus.io/public-data/stac/catalog.json",
      "type": "application/json"
    },
    {
      "rel": "parent",
      "href": "https://s3-west.nrp-nautilus.io/public-data/stac/catalog.json",
      "type": "application/json"
    },
    {
      "rel": "license",
      "href": "https://creativecommons.org/licenses/by-nc/4.0/legalcode",
      "type": "text/html",
      "title": "CC BY-NC 4.0"
    },
    {
      "rel": "about",
      "href": "https://obis.org/data/access/",
      "type": "text/html",
      "title": "OBIS data access (landing page)"
    },
    {
      "rel": "source",
      "href": "https://github.com/iobis/obis-open-data",
      "type": "text/html",
      "title": "OBIS Open Data on AWS (export documentation)"
    }
  ],
  "assets": {
    "obis-hex-2026-09-09": {
      "href": "https://s3-west.nrp-nautilus.io/public-obis/2026-09-09/hex/h0=*/data_0.parquet",
      "type": "application/x-parquet",
      "title": "OBIS occurrence records, H3 resolution 8 (hive-partitioned by h0)",
      "roles": [
        "data"
      ],
      "created": "2026-09-09T18:13:26Z",
      "description": "One row per OBIS occurrence record. Each record is a point observation and was placed in the single H3 resolution 8 cell containing its coordinate, so there is no per-feature cell duplication to correct for and every column is safe to aggregate directly. Multiple observations falling in the same cell are kept as separate rows and are not deduplicated, which is what makes an occurrence count meaningful.\n\nResolution 8 is the native and finest resolution here, and resolution 0 is the partition key. There is no resolution 9 or 10: much of OBIS is ship and net sampling whose recorded coordinate uncertainty is in the kilometre range, so a finer cell would assert precision the observations do not have. Resolution 8 is also the resolution at which this data can be compared with the GBIF occurrence collection, which carries resolution 8 as one of its rollup levels.\n\nRecords that failed OBIS quality control and absence records are excluded.\n\n```sql\n-- occurrence density and species richness per resolution 8 cell\nSELECT h8, COUNT(*) AS occurrences, COUNT(DISTINCT species) AS species\nFROM read_parquet('s3://public-obis/2026-09-09/hex/h0=*/data_0.parquet', hive_partitioning=true)\nWHERE marine\nGROUP BY h8;\n```",
      "h3:native_resolution": 8,
      "h3:parent_resolutions": [
        0
      ],
      "table:columns": [
        {
          "name": "_id",
          "type": "string",
          "description": "OBIS record identifier, globally unique across the whole export. Use COUNT(DISTINCT _id) for an occurrence count and as the dedup key."
        },
        {
          "name": "dataset_id",
          "type": "string",
          "description": "OBIS identifier of the source dataset the record came from. These identifiers are OBIS UUIDs and do not match GBIF dataset keys, so they cannot be joined against the GBIF collection."
        },
        {
          "name": "decimallatitude",
          "type": "double",
          "description": "Latitude in decimal degrees (WGS84), parsed and validated by the OBIS quality control pipeline."
        },
        {
          "name": "decimallongitude",
          "type": "double",
          "description": "Longitude in decimal degrees (WGS84), parsed and validated by the OBIS quality control pipeline."
        },
        {
          "name": "scientificname",
          "type": "string",
          "description": "Accepted scientific name, matched against the World Register of Marine Species (WoRMS). This is the WoRMS accepted name, which can differ from the name the same record carries in GBIF, where names are matched against the GBIF Backbone."
        },
        {
          "name": "aphiaid",
          "type": "int64",
          "description": "WoRMS AphiaID of the accepted name. This is the stable key for joining to WoRMS and to other marine datasets."
        },
        {
          "name": "species",
          "type": "string",
          "description": "Taxonomic species name from WoRMS, the World Register of Marine Species, a taxonomic authority. Null where the record was identified only to a coarser rank."
        },
        {
          "name": "genus",
          "type": "string",
          "description": "Taxonomic genus from WoRMS, a taxonomic authority."
        },
        {
          "name": "family",
          "type": "string",
          "description": "Taxonomic family from WoRMS, a taxonomic authority."
        },
        {
          "name": "order",
          "type": "string",
          "description": "Taxonomic order from WoRMS, a taxonomic authority. This is a reserved word in SQL, so quote it as \"order\" in queries."
        },
        {
          "name": "class",
          "type": "string",
          "description": "Taxonomic class from WoRMS, a taxonomic authority. This is Linnaean nomenclature, not a code list; 383 distinct classes are present."
        },
        {
          "name": "phylum",
          "type": "string",
          "description": "Taxonomic phylum from WoRMS, a taxonomic authority."
        },
        {
          "name": "kingdom",
          "type": "string",
          "description": "Taxonomic kingdom from WoRMS, a taxonomic authority."
        },
        {
          "name": "date_year",
          "type": "int32",
          "description": "Year of the observation, derived by OBIS from the event date."
        },
        {
          "name": "eventdate",
          "type": "string",
          "description": "Observation date as supplied by the data provider, in its original text form. Formats vary between source datasets and include date ranges, so parse defensively and prefer date_year for filtering."
        },
        {
          "name": "minimumdepthinmeters",
          "type": "double",
          "description": "Shallowest depth of the observation in metres below the surface, parsed and validated by OBIS."
        },
        {
          "name": "maximumdepthinmeters",
          "type": "double",
          "description": "Deepest depth of the observation in metres below the surface, parsed and validated by OBIS."
        },
        {
          "name": "coordinateuncertaintyinmeters",
          "type": "double",
          "description": "Radius in metres of the circle around the coordinate that contains the true position. Frequently in the kilometre range for ship and net sampling, which is why this collection is built at H3 resolution 8 rather than a finer resolution."
        },
        {
          "name": "shoredistance",
          "type": "double",
          "description": "Distance from shore in metres, added by OBIS from OpenStreetMap coastlines. A negative value means the position falls inland by that many metres, which usually indicates a georeferencing problem in the source record."
        },
        {
          "name": "bathymetry",
          "type": "double",
          "description": "Sea floor depth in metres at the observation position, added by OBIS from EMODnet Bathymetry and GEBCO. This is the depth of the sea floor, not the depth of the observation."
        },
        {
          "name": "sst",
          "type": "double",
          "description": "Sea surface temperature in degrees Celsius at the observation position, added by OBIS from Bio-Oracle."
        },
        {
          "name": "sss",
          "type": "double",
          "description": "Sea surface salinity at the observation position, added by OBIS from Bio-Oracle."
        },
        {
          "name": "marine",
          "type": "boolean",
          "description": "True where WoRMS records the taxon as occurring in the marine environment. This is the cleanest available marine filter and has no equivalent in the GBIF collection."
        },
        {
          "name": "brackish",
          "type": "boolean",
          "description": "True where WoRMS records the taxon as occurring in brackish water."
        },
        {
          "name": "redlist_category",
          "type": "string",
          "description": "IUCN Red List threat category for the taxon, as carried by OBIS. Values: CR=Critically Endangered, EN=Endangered, VU=Vulnerable, NT=Near Threatened, EX=Extinct. Only these five categories occur; taxa assessed as Least Concern, Data Deficient or not assessed are null.",
          "values": [
            "CR",
            "EN",
            "VU",
            "NT",
            "EX"
          ]
        },
        {
          "name": "flags",
          "type": "string[]",
          "description": "Quality flags raised by the OBIS quality control pipeline for this record, for example NO_DEPTH or ON_LAND. A record can carry several flags. Records that failed quality control outright are not present in this collection."
        },
        {
          "name": "h8",
          "type": "uint64",
          "description": "H3 cell identifier at resolution 8, the native resolution of this collection. One row per occurrence record, placed in the single resolution 8 cell that contains its coordinate."
        },
        {
          "name": "h0",
          "type": "int64",
          "description": "H3 cell identifier at resolution 0, used as the partition key for hive-partitioned reads."
        }
      ]
    },
    "obis-source-licenses": {
      "href": "https://s3-west.nrp-nautilus.io/public-obis/raw/licenses.tsv",
      "type": "text/tab-separated-values",
      "title": "Per-dataset licence and citation table",
      "roles": [
        "metadata"
      ],
      "description": "Licence and citation for every OBIS source dataset, as published by OBIS. Individual source datasets are licensed CC0, CC BY or CC BY-NC; the aggregate carries the most restrictive of these, CC BY-NC 4.0. Join to the hex on dataset_id = id to recover the licence and citation for the datasets behind any particular result."
    }
  }
}