GO-SHIP Gridded Time Series; user friendly WOCE/CLIVAR/GO-SHIP data from CCHDO. Product is available at doi:10.7942/GOSHIP-EasyOcean.
Information for IAPSO Standard Seawater batch-to-batch offset is found in SaltBatchOffset directory.
K. Katsumata, S. G. Purkey, R. Cowley, B. M. Sloyan, S. C. Diggs, T. S. Moore II, L. D. Talley, J. H. Swift, GO-SHIP Easy Ocean: Gridded ship-based hydrographic section of temperature, salinity, and dissolved oxygen (2022), Scientific Data, doi:10.1038/s41597-022-01212-w, also available in PDF. This publication describes version 1.4.
Uninterpolated data (station data) are called reported data. Horizontally interpolated and vertically smoothed data are called gridded data. These are stored under separate directories. Remarks common to all formats are;
- Temperature is in ITS-90. Use
t90tot68.m
for conversion to IPTS-68 (e.g. input to gamma surface calculation). The unit recorded in MatlabStation
header (e.g.D_pr(1).Station
) is the unit of the original CTD data, not the unit in our product. - Unless otherwise noted (e.g. I01), only good (as defined by
flag=2
) data are used. This behaviour can be changed by modifying the QC section inread_ctd_exchange.m
. - Missing value is
-999
for ASCII and binary outputs andNaN
otherwise. - Vertical coordinate is in pressure. Assuming
Depth
and/orCorrected depth
in the Exchange CTD or SUM is in meters, we convert them to pressure (inreported_data.m
). If depth is missing, we assume the bottom of measurement is 10 dbar above seabed. IfUncorrected depth
is available butCorrected depth
is missing, we use the former. - Used v3.06 of TEOS-10 to calculate Conservative Temperature and Absolute Salinity.
- Dissolved oxygen concentration is converted to μmol/kg (micro mol per kilogram), often written
umol/kg
. - No horizontal interpolation is applied for stations more than 2 degrees apart. This behaviour can be modified by
MAX_SEPARATION
paramter inconfiguration_yyyy.m
files.
To visualize a section, e.g. P16
section occupied in 2015, use;
application | reported | gridded |
---|---|---|
Matlab | reported/P16/p16.mat |
gridded/P16/p16.mat |
Ocean Data View | reported/P16/p16_2015_ct1.zip |
- |
Java Ocean Atlas | reported/P16/p16_2015_ct1.zip |
- |
GrADS | - | gridded/P16/p16.bin.ctl |
GMT* | - | gridded/P16/p16_2015.xyz.gz |
binary | - | gridded/P16/p16.bin |
ASCII | reported/P16/p16_2015_ct1.zip |
gridded/P16/p16_2015.xyz.gz |
NetCDF | (work in progress) | gridded/P16/p16.nc |
* see GMTplotDiff.sh for example.
This is the clean data with no horizontal interpolation and no vertical interpolation. We support Matlab format and ASCII CSV in WHP Exchange format. Note: we do not perform any additional quality control except for obvious cases listed below. Bad data in the original data set remain in the product.
It is possible to include all stations in the original CTD file in the reported
data set, e.g., for float calibration purposes.
When calling reported_data.m
, use a special file name 'all'
in the first argument
instead of the list file (e.g. P16/p16_1992.list
). Note that this output cannot be
gridded because of possible duplication and branching of the station tracks.
D_r
is an array holding one Matlab structure
for one occupation of the hydrographic section.
In typical cases, D_r(1)
is by WOCE cruises in the 1980s and 1990s and D_r(2)
is by
CLIVAR/GO-SHIP cruises.
D_r(1) = struct('Station', {stnW(1), stnW(3), ..} ...
'lonlist', lon(:), ...
'latlist', lat(:), ...
'deplist', depth(:), ...
'CTDprs', ctdprs(:,:), ...
'CTDsal', ctdsal(:,:), ...
'CTDtem', ctdtem(:,:), ...
'CTDoxy', ctdoxy(:,:)))
Lat/Lon, depths,... etc. can be extracted from station
s (see below), but for ease of access,
latlist
, lonlist
, and deplist
are provided by reported_data.m
.
For zonal sections in the Atlantic Ocean, lonlist
uses negative longitudes.
CTDsal
, CTDtem
, and CTDoxy
are aggregations of station measurements with the pressure given by CTDprs
.
The entry 'Station'
holds a cell list of Station
data structure defined as
stations(23) = struct('EXPO', '320620140320', ...
'Stnnbr', '45', ...
'Cast', 1, ...
'Lat', -45.0002, ...
'Lon', -149.5998, ...
'Time', datenum(2014,4,17,19,47,0), ...
'Depth', 5350, ... % in pressure [dbar]
'CTDtemUnit', 'ITS-90', ...
'CTDsalUnit', 'PSS-78', ...
'CTDoxyUnit', 'umol/kg')
- Some
Stnnbr
has letters (e.g.X12
for cross points) so thatStnnbr
is not restricted to numbers but characters are accepted. - In
Lat
andLon
, use decimal degree, not degree-minute-second. - Time follows MATLAB convention with fixed
seconds=0
.
One zipped archive corresponds to one occupation of the hydrographic section. In the
archive, there are CSV files, one file for one CTD station. Each file has a header
showing DATE
, LONGITUDE
, etc. Note Creation Stamp is dummy.
When unzipped, the data are in ASCII and can be easily edited by your favourite
editors. It is in CSV so that spreadsheet program can handle them. In particular,
these can be read by Ocean Data View withImport
→ WOCE Formats
→ WHP CTD (exchange format)
menu.
They can also be read
by Java Ocean Atlas with File
→ Open
menu.
Users interested in data intercomparison should not use gridded data. See Secton 3.1 below.
Data are stored in 2 dimensional matrices as entries to a structure
, one for each
occupation. The axes are defined in ll_grid
(longitude or latitude) and pr_grid
(pressure). The structure has a field NTime
which is the time (in Matlab format) of the measurement at the station nearest
(in lat/lon) to the grid point.
Binary is in IEEE754, 4-byte float
in
Big Endian. The first datum is southmost/westmost
shallowest temperature datum. The second is the shallowest datum from the next horizontal grid.
After XDEF data, data from the second shallowest depth follow. Vertical number
of data is YDEF. After temperature, the following data are stored in the order;
salinity, oxygen, Conservative Temperature, and Absolute Salinity.
This information and grid lat/lon are found in the form of GrADS control file
placed in the output directory (e.g. P16.bin.ctl
for P16
). One could actually
use GrADS to visualize the data, but there is a caveat;
GrADS is designed to visualize horizontally collected data (i.e. lat/lon) and not
sectional data (i.e. lat/depth). For this reason, the horizontal coordinate (lat/lon)
appears as longitude and depth as latitude. Occupation appears in time coordinate.
Hopefully this is not a problem for other applications.
When unzipped, the first line shows the content of the data. The missing value is -999
.
An example for the use of these ASCII data to plot the difference between occupations with GMT can be found in GMTplotDiff.sh.
The NetCDF is CF compliant (CF-1.7 ACDD-1.3). The netCDF files are dimensioned by gridded_section
(an integer indicating the gridded section number), longitude
, latitude
, and depth
. time
is a time variable associated with each data point, rounded to the day closest to the date of the data used at each grid point.
When gridding reported
data, a choice has to be made as to which horizontal coordinate
to use -- longitude, latitude, distance from the first station, staion number, etc.
We chose longitude/latitude based on the approximate distance (see sort_stations.m.
If the distance between the northernmost and southermost stations are larger
than the distance between the easternmost and westernost stations, the the section
is meridional. If the other way arond, it is zonal.
Problems arise when the secton has oblique trajectories. For example,
P17 section extends from (55°N, 200°E) to (40°N, 225°E) -- southeastward then
turns southward until (60°S, 225°E) with a slight turn to avoid islands in the South Pacific.
This will be gridded in latitude from 60°S to 55°N.
When gridded,
the stations north of 40°N appear on the same meridian of 225°E but actually not.
The northmost station is more than 1000 km west of the meridian.
Those users interested in data intercomparison should only use reported
data,
where all
option might be useful (see Section 1.1.
The definition of occupation or repeat on a section is rather subjective. For example, the cruise 325020080826 on P16 was regarded too short to be an occupation and was not included here, but the choice was subjective. The user is free to make their own choices of cruises to form an occupation.
The cruise 31TUUNES_2 was along 209.5°E, about 0.5° west of later occupations. We included this as part of the 1992 occupation of P16 but it is quite possible to see this section as separate from P16. We did not have any objective standard when deciding which cruise to include. The user is again welcome to make the choice.
As far as we know, the section names have been only roughly designated by WOCE or GO-SHIP. For example, the section A01 is often referred to as section AR07. It is also not unusual to cover two or more sections in one cruise, ending up the cuise having mutiple section designators (e.g. 316N145_9 for I04, I05, and I07). The best place to find this information is README.md in SaltBatchOffset/. The table shows a section name along with "also known as" entry. Try this table if you cannot find the section you are looking for.
Those data not archived on CCHDO are not included in this product, which does not mean all data available there are included here. Archived data which do not follow the recommended format were included if the format can be converted to Matlab readable format in a minimal effort. We welcome volunteers who could convert those missed cruises into the format. used here.
Some cruises did not provide oxygen data. If oxygen field is missing in reported
or gridded
product, it is most likely because oxygen was not provided in the source data.
If you notice oxygen in the source but not in the product, please notify us.
We do not perform any quality control on top of the WOCE flags provided in the source data.
For some obvious cases only, however, did we manually removed suspect data
even with flag = 2
("acceptable measurement").
They are recorded in README.md
's and tabulated here.
section | year | EXPO code | station | cast | description |
---|---|---|---|---|---|
75N | 2006 | 58GS20060721 | 266 | 1 | Bad at 1 db |
75N | 2006 | 58GS20060721 | 260 | 1 | Negative oxygen |
A05 | 2011 | 29AH20110128 | 6 | 1 | Bad below 568 db |
A12 | 1992 | 06AQANTX_4 | Noisy salinity | ||
A12 | 2008a | 35MF20080207 | Pressure missing at p=9 db | ||
A13 | 1983 | 316N19831007,316N19840111 | Gaps in data, salinity suspect | ||
A22 | 1997 | 316N151_4 | 7 | 1 | Spikes in S below 2500 db |
A22 | 1997 | 316N151_4 | 35 | 1 | Spikes in T,S around 2612 db |
AR07E | 2000 | 64PE20000926 | No quality flag | ||
AR07W | 1999--2011 | Uncalibrated CTD | |||
I01 | 1995 | 316N145_11 | FLAG=3 | ||
I02 | 1995 | 118 | 1 | Wrong P at 2223 db | |
I06S | 2019 | 325020190403 | 5-8 | Bad oxygen | |
I08S | 2007 | 33RR20070204 | 50 | 2 | FLAG=8 |
IR06E | 2000 | 35MF200009 | Noisy DO | ||
IR06E | 2000 | 35MF200009 | 10 | Bad DO | |
IR06-I10 | 1995 | 09FA9503_1 | Flag=4 for S | ||
P01 | 1999 | 49NZ199901_1 | Flag=1 for P | ||
P01 | 1999 | 49KA199905_2 | Noisy S near surface | ||
P15 | 2009 | 09SS20090203 | 116 | 1 | Extremely low S at P=5784 db |
SR01 | 1997 | 74JC27_1 | 24 | Wrong pressure P=1113, 1137 db |
All input CTD files can be downloaded from CCHDO.
List of URLs of the CTD files is getCTD.list
, which is
generated from README.md
s by getCTDlist.pl
.
It is possible to reprocess all sections with all_batch.m
. Note that
PREFIX
in batch.m
and batch.sh
is the output directory. This directory is hard-coded in all_batch.m
.
Edit all these files as appropriate before running all_batch.m
.
The list files (e.g. P16/p16_1992.list
) can be used to extract data from GLODAP (tested on GLODAP version 2)
to plot such bottle data as carbons, nutrients, and CFCs. Relevant Matlab scripts are found under
GLODAPinterface.
Download the Matlab binary (.mat) of Merged Master File
from the GLODAP site. The location of this file is hard-coded in line 36
of fromGLODAP.m. Then
Matlab>> D_reported = fromGLODAP('P16/p16_1992.list', 'cfc12');
will extract the CFC12 data along the stations listed in P16/p16_1992.list
from GLODAP data set and put them
in the D_reported
structure (in the data
field) without gridding.
For gridding and/or plotting, see an example plotGLODAP.m.
The parameter cfc12
can be one of
aou, c13, c14, ccl4, cfc11, cfc113, cfc11, cfc12, chla, doc, doi, don,
fco2, fco2temp, gamma, h3, he, he3, neon, nitrate, nitrite, o18, oxygen,
pccl, pcfc11, pcfc113, pcfc12, phosphate, phts25p0, phtsinsitutp,
psf6, sf6, sigma0, sigma1, sigma2, sigma3, sigma4, silicate,
talk, tco2, tdn, theta, toc
The algorithm to find stations is described in the source code.
For gridding, use your favourite vertical interpolation scheme. Somewhat classical Reiniger-Ross method
(Deep-Sea Res. 1968) is found as GLODAPinterface/vinterp_rr68.m
.
The example in GLODAPinterface/plotGLODAP.m
uses MRST-PCHIP method (Barker and McDougall,
J.Atmos.Ocean Tech. 2011) packed in the
TEOS-10 GSW Oceanographic Toolbox.