CalCOFI CalCOFI CalCOFI.io open data ecosystem

CTD Cast Files

CalCOFI CTD Cast Files

calcofi_ctd-castCalCOFIv2026.09.05ingested

years
1993–2026
observations
13,295,014
sampling events
9,630
stations
97
variables
33
depth
0.968–3630 m
observations per year, 1993–2026
st70-ln60 · 32,582 obsst80-ln60 · 29,557 obsst90-ln60 · 18,988 obsst70-ln63.3 · 24,380 obsst100-ln60 · 994 obsst80-ln63.3 · 28,796 obsst90-ln63.3 · 23,400 obsst70-ln66.7 · 72,263 obsst100-ln63.3 · 896 obsst80-ln66.7 · 71,526 obsst90-ln66.7 · 45,432 obsst70-ln70 · 45,891 obsst100-ln66.7 · 5,341 obsst80-ln70 · 34,954 obsst90-ln70 · 30,968 obsst70-ln73.3 · 31,699 obsst100-ln70 · 1,050 obsst80-ln73.3 · 31,274 obsst90-ln73.3 · 28,021 obsst70-ln76.7 · 196,709 obsst100-ln73.3 · 3,151 obsst80-ln76.7 · 196,498 obsst90-ln76.7 · 202,160 obsst70-ln80 · 206,124 obsst100-ln76.7 · 183,849 obsst80-ln80 · 212,975 obsst90-ln80 · 244,466 obsst70-ln83.3 · 209,684 obsst100-ln80 · 211,302 obsst80-ln83.3 · 207,102 obsst90-ln83.3 · 203,567 obsst70-ln86.7 · 210,987 obsst100-ln83.3 · 198,250 obsst80-ln86.7 · 214,166 obsst110-ln83.3 · 186,724 obsst90-ln86.7 · 209,097 obsst70-ln90 · 224,479 obsst100-ln86.7 · 203,125 obsst80-ln90 · 213,535 obsst110-ln86.7 · 193,096 obsst90-ln90 · 304,515 obsst70-ln93.3 · 209,565 obsst100-ln90 · 225,048 obsst80-ln93.3 · 216,858 obsst110-ln90 · 206,469 obsst90-ln93.3 · 214,044 obsst120-ln90 · 211,864 obsst100-ln93.3 · 206,136 obsst110-ln93.3 · 210,674 obsst120-ln93.3 · 201,400 obsst60-ln60 · 35,702 obsst55-ln60 · 7,124 obsst50-ln63.3 · 6,799 obsst55-ln63.3 · 15,259 obsst60-ln63.3 · 20,121 obsst50-ln66.7 · 40,788 obsst55-ln66.7 · 57,677 obsst60-ln66.7 · 61,478 obsst50-ln70 · 18,334 obsst55-ln70 · 34,088 obsst60-ln70 · 47,125 obsst50-ln73.3 · 11,938 obsst55-ln73.3 · 32,761 obsst60-ln73.3 · 33,694 obsst50-ln76.7 · 138,042 obsst55-ln76.7 · 185,294 obsst60-ln76.7 · 188,941 obsst45-ln80 · 1,899 obsst50-ln80 · 58,904 obsst55-ln80 · 204,740 obsst60-ln80 · 216,053 obsst40-ln83.3 · 115,872 obsst45-ln83.3 · 232,165 obsst50-ln83.3 · 68,589 obsst30-ln86.7 · 3,726 obsst55-ln83.3 · 200,068 obsst35-ln86.7 · 265,593 obsst60-ln83.3 · 205,809 obsst40-ln86.7 · 239,094 obsst45-ln86.7 · 197,346 obsst50-ln86.7 · 54,764 obsst30-ln90 · 287,854 obsst55-ln86.7 · 200,753 obsst35-ln90 · 361,081 obsst60-ln86.7 · 203,258 obsst40-ln90 · 1,550 obsst45-ln90 · 205,132 obsst25-ln93.3 · 77,231 obsst30-ln93.3 · 415,649 obsst55-ln90 · 206,248 obsst35-ln93.3 · 202,880 obsst60-ln90 · 213,242 obsst40-ln93.3 · 205,391 obsst45-ln93.3 · 205,704 obsst50-ln93.3 · 210,534 obsst55-ln93.3 · 199,957 obsst60-ln93.3 · 203,132 obs125°W120°W30°N35°N
97 CalCOFI stations sampled, sized by observations, over the survey grid.

Overview

CTD downcast profiles with temperature, salinity, oxygen, fluorescence, and other sensors at standard depths. 1 m-binned final data for 1993-2002 come from the SIO-CalCOFI Technical Group’s own archive (J. Wilkinson), which covers the decade calcofi.org does not publish finals for; 1998 and 2003 onward come from calcofi.org. Where both publish the same cruise, calcofi.org is used; the two agree on 130 of 140 comparable files, and the four cruises that differ are recorded in question calcofi_ctd-cast_20.

Keywords
EARTH SCIENCE > OCEANS > OCEAN TEMPERATURE > WATER TEMPERATUREEARTH SCIENCE > OCEANS > SALINITY/DENSITY > OCEAN SALINITYEARTH SCIENCE > OCEANS > OCEAN CHEMISTRY > OXYGENEARTH SCIENCE > OCEANS > OCEAN PRESSURE > WATER PRESSURE

Open with the provider

  • Q28 license — proposed
  • Q29 pi_names — proposed

Access

Every endpoint this dataset can be reached through, grouped by how you would use it. Every URL is in the release record and answered when the release was cut.

Explore

Apps that read this dataset from the release. A row marked “this dataset” opens with it already selected.

CalCOFI Explorerthis datasetAcross datasets

https://calcofi.io/explore/?datasets=calcofi_ctd-cast

Station Explorerthis datasetAcross datasets

https://app.calcofi.io/station/?dataset=calcofi_ctd-cast

Hexagon Explorerthis datasetAcross datasets

https://app.calcofi.io/hex/?datasets=calcofi_ctd-cast

Cruise Explorerthis datasetAcross datasets

https://app.calcofi.io/cruise/?datasets=calcofi_ctd-cast

CTD Transectsthe appOne dataset

https://calcofi.io/ctd-transects/

CTD Explorerthe appOne dataset

https://app.calcofi.io/ctd/

Query

SQL against the release itself, in the browser — nothing to install and nothing downloaded until a query asks for it. __TBL:obs__ resolves to the pinned release’s parquet.

db-query — the SQL shell, prefilledDuckDB-WASM over the released parquet, in your browser
-- calcofi_ctd-cast in the CalCOFI release v2026.09.05
SELECT *
FROM __TBL:obs__
WHERE dataset_key = 'calcofi_ctd-cast'
LIMIT 100;

https://calcofi.io/db-query/?sql=--+calcofi_ctd-cast+in+the+CalCOFI+release+v2026.09.05%0ASELECT+%2A%0AFROM+__TBL%3Aobs__%0AWHERE+dataset_key+%3D+%27calcofi_ctd-cast%27%0ALIMIT+100%3B#sql-shell--shell

Code

The same release, from a script.

con <- calcofi4r::cc_get_db()
calcofi4r::cc_cite("calcofi_ctd-cast")
con = calcofi4py.cc_get_db()
calcofi4py.cite("calcofi_ctd-cast")
DuckDB, anywhereno CalCOFI package needed — the object is a plain parquet file
SELECT * FROM read_parquet('https://storage.googleapis.com/calcofi-db/ducklake-staging/tables/obs/dataset_key=calcofi_ctd-cast/289cd370d793e56e0f98ad92/data_0.parquet') LIMIT 100;

Get the data

Every way to have the bytes, by source. Nothing here asks you to register first.

Files from the release (Parquet)

The frozen objects this release is made of. A partition holds only this dataset’s rows; a shared table holds every dataset’s, so filter on dataset_key.

obsthis dataset’s rows · 99.7 MB · since v2026.09.04sha256 732047579a41…

https://storage.googleapis.com/calcofi-db/ducklake-staging/tables/obs/dataset_key=calcofi_ctd-cast/289cd370d793e56e0f98ad92/data_0.parquet

CF netCDF

One self-describing file, for a tool that reads netCDF.

CF netCDF179 MBsha256 139017f65707…
how far this file is CF

Fully CF: this dataset has one sampling level with many depths per event, which is exactly a CF profile, so it needs no extension beyond the standard.

https://storage.calcofi.io/calcofi-files-public/netcdf/calcofi_ctd-cast/v2026.09.04/calcofi_ctd-cast.nc

CF netCDF (full)3.4 GBsha256 ea4839a7d762…
how far this file is CF

Fully CF: a single sampling level with a depth axis is a CF profile, so this dataset needs no extension beyond the standard.

https://storage.calcofi.io/calcofi-files-public/netcdf/calcofi_ctd-cast_full/v2026.09.04/calcofi_ctd-cast_full.nc

ERDDAP (erddap.calcofi.io)

One ERDDAP dataset per grain, each with its own data formats and its own pages. Subset in the browser or query it from a script.

ERDDAP dataset grain data & pagescalcofi_ctd-cast_full full resolution (pre-thinning) CSVnetCDFJSON pageinfograph calcofi_ctd-cast observations CSVnetCDFJSON pageinfograph calcofi_ctd-cast_sample sampling events CSVnetCDFJSON pageinfograph
full resolution (pre-thinning)
the unthinned series, every bin as the instrument recorded it
observations
one row per measurement, joined to the event it was taken on
sampling events
one row per cast, tow or transect — when, where and how it was sampled

Legacy ids, still answering until 2026-12-04: calcofi_ctd_thin (replaced by calcofi_ctd-cast) · calcofi_ctd_measurement (replaced by calcofi_ctd-cast_full)

From the provider

The dataset as its provider publishes it, before CalCOFI ingested it.

sourceexternalCalCOFI.org

https://calcofi.org/data/oceanographic-data/ctd-cast-files/

Metadata records

Records about the data, in the standards each portal harvests.

ISO 19115-3XML, from the ERDDAP WAF

https://erddap.calcofi.io/erddap/metadata/iso19115/xml/calcofi_ctd-cast_iso19115.xml

https://erddap.calcofi.io/erddap/metadata/fgdc/xml/calcofi_ctd-cast_fgdc.xml

JSON-LD (schema.org/Dataset)what this page publishes to Google Dataset Search

https://calcofi.io/datasets/calcofi_ctd-cast.jsonld

the record, verbatimthe release’s own entry for this dataset — everything on this page comes from it

https://calcofi.io/datasets/calcofi_ctd-cast.json

DCAT-US 1.1the whole catalog, for data.gov and any CKAN

https://calcofi.io/data.json

STAC collectionone Collection per dataset, an Item per release

https://calcofi.io/stac/#/collections/calcofi_ctd-cast/collection.json

Archives & portals

Where this dataset is registered outside calcofi.io, by the identifier each portal knows it as.

ERDDAP (calcofi.io)calcofi_ctd-castpublished

https://erddap.calcofi.io/erddap/info/calcofi_ctd-cast/index.html

OBISn/a
EDIn/a
NCEIplanned
CalOOSplanned
Zenodo10.5281/zenodo.22281994publishedas part of the integrated database release

https://doi.org/10.5281/zenodo.22281994

Everything here is open — nothing on calcofi.io asks you to register first. If this dataset ends up in something you build or publish, register your use so it can be credited and linked back; to hear when a release changes it, stay informed. Questions: data@calcofi.io.

Cite

CalCOFI. (2023). CalCOFI CTD Cast Files. CalCOFI.org.
BibTeX
@misc{calcofi_ctd-cast,
  title        = {CalCOFI CTD Cast Files},
  howpublished = {CalCOFI. (2023). CalCOFI CTD Cast Files. CalCOFI.org.},
  year         = {2023}
}

…and the release it came from

CalCOFI (2026). CalCOFI Integrated Database, release v2026.09.05 [Data set]. Scripps Institution of Oceanography, NOAA Fisheries, and California Department of Fish and Wildlife. https://calcofi.io/db-schema/?v=v2026.09.05
BibTeX
@misc{calcofi_release_v2026_09_05,
  title     = {CalCOFI Integrated Database, release v2026.09.05},
  author    = {CalCOFI},
  year      = {2026},
  publisher = {Scripps Institution of Oceanography, NOAA Fisheries, and California Department of Fish and Wildlife},
  url       = {https://calcofi.io/db-schema/?v=v2026.09.05}
}