Checking GLORIA CD37 side-scan sonar data#

Author: Ellie Fisher (@efisher008) and Alice Fremand (@almand_BAS)

Date: 07/02/2025

Aim#

The goal of this tutorial is to showcase how to read and check the GLORIA CD37 side-scan sonar data available from the UK Polar Data Centre

Survey background#

The GLORIA instrument was operated on the Royal Research Ship (RRS) Charles Darwin CD37 research cruise during January – April 1989. The study area was the Scotia Sea, North Scotia Ridge (NSR), South Sandwich Island, South Sandwich Arc, and West Antarctic Peninsula (WAP) continental shelf, within the broader region of the Southern Ocean.

The cruise was carried out in order to gain a better understanding of the Southern Ocean with a particular focus on:

  • Tectonic history

  • Active tectonic processes

  • Paleoceanography

  • Stratigraphy

  • Ice dynamics during glacial intervals

List of available GLORIA data#

The metadata record for the GLORIA CD37 dataset can be found from the UK Polar Data Centre:

Barker, P., Livermore, R., Tomlinson, J., Woollett, R., Cunningham, A., Larter, R., Pudsey, C., & Jordan, R. (2025). Geological Long Range Inclined Asdic (GLORIA) seabed side-scan sonar raw data acquired on Charles Darwin CD37 cruise in 1989 (Version 1.0) [Data set]. NERC EDS UK Polar Data Centre. https://doi.org/10.5285/cf87183c-51df-4588-be73-ad0a45fea2d7

The GLORIA CD37 NetCDF files are available from: https://ramadda.data.bas.ac.uk/repository/entry/show?entryid=cf87183c-51df-4588-be73-ad0a45fea2d7

Downloading the data via the Ramadda interface#

From the metadata page, it is possible to access the data by clicking on ‘GET DATA’. You will then be redirected to our Ramadda repository.

From the interface, it is possible to download the data individually by clicking on the dataset you want to download. It is also possible to zip and download the data together by clicking at the top of the Ramadda interface on the down arrow next to “Polar Data Centre > DOI” and Zip and Download Tree:

GLORIA-CD37-zip-and-download-tree

Screenshot showing how to zip and download the data from Ramadda

To download a ZIP file containing all pass files, use the following command (the preceeding ! runs the line as a Linux command):

!wget "https://ramadda.data.bas.ac.uk/repository/entry/show/UK+Polar+Data+Centre/DOI/Geological+Long+Range+Inclined+Asdic+%28GLORIA%29+seabed+side-scan+sonar+raw+data+acquired+on+Charles+Darwin+CD37+cruise+in+1989/netcdf?entryid=synth%3Acf87183c-51df-4588-be73-ad0a45fea2d7%3AL25ldGNkZg%3D%3D&output=zip.tree"

To download a single file, run the following command:

!wget --content-disposition --trust-server-names "https://ramadda.data.bas.ac.uk/repository/entry/get/CD37_GLORIA_PASS169.nc?entryid=synth%3Acf87183c-51df-4588-be73-ad0a45fea2d7%3AL25ldGNkZi9DRDM3X0dMT1JJQV9QQVNTMTY5Lm5j" -O "CD37_GLORIA_PASS169.nc"

To set up the virtual environment with Conda (if desired):#

These commands will need to be run in a Linux environment.

If you do not have conda on your machine, you will need to install it. This is a package manager which is used with languages like Python.

conda create -n gloria_env

conda activate gloria_env

conda config –env –add channels conda-forge

conda config –env –set channel_priority strict

conda install netCDF4

The new environment is then able to activated again simply by running: conda activate gloria_env.

Any packages or modules which are installed while the environment is active will be added to the environment configuration and can be seen by running: conda list

To set up the virtual environment on UNIX (if desired):#

In the folder where you have your code, you need to launch:

python3 -m venv gloria_env

It will create a folder with all the environment for python. To activate the virtual environment you need to launch it:

source gloria_env/bin/activate.csh

You need to make sure that [gloria_env] appears before your name on the machine. That means that you are using the virtual environment. Then you need to upgrade pip which is the command that installs the packages:

python3 -m pip install --upgrade pip

And install the other libraries:

python3 -m pip install netCDF4

Useful dependencies#

For the code to run, it is important to install the correct dependancies and libraries. In particular the following library is crucial for the code to run:

  • netCDF4 module to check NetCDF data in Python

  • pandas package to work with CSV data

  • numpy package to work with numerical data and 3-dimensional arrays

  • matplotlib package to plot geographic and non-geographic data

  • cartopy package to plot geographic (map-based) data

If any of the modules specified in this notebook are not currently installed in your Linux environment, you will need to install these, for example with pip install.

In this tutorial, the virtual environment is already set up. The list of the current libraries loaded is given in the list below.

!pip list
Package                   Version
------------------------- --------------
affine                    2.4.0
anyio                     4.8.0
argon2-cffi               23.1.0
argon2-cffi-bindings      21.2.0
arrow                     1.3.0
asttokens                 3.0.0
async-lru                 2.0.4
attrs                     25.1.0
babel                     2.17.0
beautifulsoup4            4.13.3
bleach                    6.2.0
Brotli                    1.1.0
cached-property           1.5.2
Cartopy                   0.24.0
certifi                   2025.1.31
cffi                      1.17.1
cftime                    1.6.4
charset-normalizer        3.4.1
click                     8.1.8
click-plugins             1.1.1
cligj                     0.7.2
colorama                  0.4.6
comm                      0.2.2
contourpy                 1.3.1
cycler                    0.12.1
debugpy                   1.8.12
decorator                 5.2.1
defusedxml                0.7.1
exceptiongroup            1.2.2
executing                 2.1.0
fastjsonschema            2.21.1
fonttools                 4.56.0
fqdn                      1.5.1
h11                       0.14.0
h2                        4.2.0
hpack                     4.1.0
httpcore                  1.0.7
httpx                     0.28.1
hyperframe                6.1.0
idna                      3.10
importlib_metadata        8.6.1
importlib_resources       6.5.2
ipykernel                 6.29.5
ipython                   8.32.0
isoduration               20.11.0
jedi                      0.19.2
Jinja2                    3.1.5
json5                     0.10.0
jsonpointer               3.0.0
jsonschema                4.23.0
jsonschema-specifications 2024.10.1
jupyter_client            8.6.3
jupyter_core              5.7.2
jupyter-events            0.12.0
jupyter-lsp               2.2.5
jupyter_server            2.15.0
jupyter_server_terminals  0.5.3
jupyterlab                4.3.5
jupyterlab_pygments       0.3.0
jupyterlab_server         2.27.3
kiwisolver                1.4.7
MarkupSafe                3.0.2
matplotlib                3.10.0
matplotlib-inline         0.1.7
mistune                   3.1.2
munkres                   1.1.4
nbclient                  0.10.2
nbconvert                 7.16.6
nbformat                  5.10.4
nest_asyncio              1.6.0
netCDF4                   1.7.2
notebook_shim             0.2.4
numpy                     2.2.3
overrides                 7.7.0
packaging                 24.2
pandas                    2.2.3
pandocfilters             1.5.0
parso                     0.8.4
pickleshare               0.7.5
pillow                    11.1.0
pip                       25.0.1
pkgutil_resolve_name      1.3.10
platformdirs              4.3.6
prometheus_client         0.21.1
prompt_toolkit            3.0.50
psutil                    7.0.0
pure_eval                 0.2.3
pycparser                 2.22
Pygments                  2.19.1
pyparsing                 3.2.1
pyproj                    3.7.1
pyshp                     2.3.1
PySocks                   1.7.1
python-dateutil           2.9.0.post0
python-json-logger        2.0.7
pytz                      2024.1
pywin32                   307
pywinpty                  2.0.15
PyYAML                    6.0.2
pyzmq                     26.2.1
rasterio                  1.4.3
referencing               0.36.2
requests                  2.32.3
rfc3339_validator         0.1.4
rfc3986-validator         0.1.1
rpds-py                   0.23.1
Send2Trash                1.8.3
setuptools                75.8.2
shapely                   2.0.7
six                       1.17.0
sniffio                   1.3.1
snuggs                    1.4.7
soupsieve                 2.5
stack_data                0.6.3
terminado                 0.18.1
tinycss2                  1.4.0
tomli                     2.2.1
tornado                   6.4.2
traitlets                 5.14.3
types-python-dateutil     2.9.0.20241206
typing_extensions         4.12.2
typing_utils              0.1.0
tzdata                    2025.1
uri-template              1.3.0
urllib3                   2.2.2
wcwidth                   0.2.13
webcolors                 24.11.1
webencodings              0.5.1
websocket-client          1.8.0
wget                      3.2
win_inet_pton             1.1.0
zipp                      3.21.0

Load the relevant modules#

import netCDF4 as nc
import pandas as pd
import numpy as np
import datetime as dt
from datetime import datetime
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator
import cartopy
from cartopy import crs as ccrs, feature as cfeature
import os
import pprint

%matplotlib inline

Check the metadata information#

If your downloaded files are not in the directory you are running this code from, you will need to specify the full or relative path to that directory.

A NetCDF file contains global attributes, group attributes, variable attributes and data. We will guide you through how to read the NetCDF file in Python below.

First, let’s open the netCDF file and have a look at the global attributes of the CD37_GLORIA_PASS169.nc netCDF file

f = "CD37_GLORIA_PASS169.nc"
fnc = nc.Dataset(f)

print(fnc.ncattrs())
['Conventions', 'title', 'summary', 'acknowledgement', 'keywords', 'citation', 'license', 'history', 'source', 'comment', 'institution', 'contributor_name', 'contributor_role', 'project', 'references', 'publisher_name', 'publisher_type', 'publisher_email', 'publisher_url', 'time_coverage_start', 'time_coverage_end', 'geospatial_lon_min', 'geospatial_lon_max', 'geospatial_lat_min', 'geospatial_lat_max', 'geospatial_bounds_crs', 'metadata_link']

You can display key information about the NetCDF dataset (global attributes, variables, dimensions, groups) by just using a print function:

print(fnc)
<class 'netCDF4.Dataset'>
root group (NETCDF4 data model, file format HDF5):
    Conventions: ACDD-1.3, CF-1.12
    title: Geological Long Range Inclined Asdic (GLORIA) seabed side-scan sonar raw data acquired on Charles Darwin CD37 cruise in 1989
    summary: The GLORIA instrument was operated on the Royal Research Ship (RRS) Charles Darwin 37 (CD37) research cruise during January - April 1989. The study area was the Scotia Sea, North Scotia Ridge (NSR), South Sandwich Island, South Sandwich Arc, and West Antarctic Peninsula (WAP) continental shelf, within the broader region of the Southern Ocean. Raw data are presented in NetCDF format. These have been pre-processed from the binary pass data using the bas-gloria package (https://github.com/antarctica/bas-gloria). The data have been improved with additional metadata such as latitude, longitude and depth.
    acknowledgement: This project was funded by BAS under project code B6153: Scotia Sea tectonic evolution and palaeo-circulation.
    keywords: Antarctica,GLORIA,Southern Ocean,marine geology,marine geophysics,sidescan sonar
    citation:  (2025). Geological Long Range Inclined Asdic (GLORIA) seabed side-scan sonar raw data acquired on Charles Darwin CD37 cruise in 1989 (Version 1.0) [Data set]. NERC EDS UK Polar Data Centre. https://doi.org/10.5285/cf87183c-51df-4588-be73-ad0a45fea2d7
    license: http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/
    history: The acquisition instrument for this dataset was GLORIA II, operated on RRS Charles Darwin. The sonar towfish was 8m in length, and towed 300m behind the vessel at 50m depth. Data were collected on the RRS Charles Darwin CD37 scientific research cruise and stored on 9-track magnetic tapes, which are currently held by the British Antarctic Survey, Cambridge. Raw data were recovered from 9-track magnetic tapes in 2021. Transcription from tape was performed by Troika International/Interica. There was some data loss, due to stiction causing read errors. Heat treatment of the tapes improved data recovery at this stage. A Python package was developed by Paul Breen (BAS) to handle the GLORIA raw pass files. Conversion to NetCDF and generation of quicklooks for the GLORIA data from CD37 was performed in 2024/2025 using the package. This can be accessed here: https://github.com/antarctica/bas-gloria. Decoding of the data has been performed following the structure as descibed in Table 1 of Searle et al. 1989. The geographic position of the GLORIA instrument relative to the ship was calculated from the CD37 cruise track by introducing a fixed time offset of 90 seconds to the datetime of the ship at each recorded coordinate point. Latitude and longitude were subsequently interpolated, to increase the frequency of the coordinate information such that this could be added to the NetCDF attribute metadata by matching the track information with passes based on the datetime field.
    source: Geological Long-Range Inclined Asdic (GLORIA) II
    comment: In the initial data recovery, PASS245 was long and PASS246 was missed. This was determined to be caused by a reading error, resulting in concatenation of consecutive data from PASS246 to PASS245. These passes were then read from tape separately, and are now considered complete. In the recovered raw data, some passes were missing or partially complete. PASS038, PASS227 and PASS236 were partially complete, and PASS039, PASS040 and PASS231 were missing. Copies of these data held at BODC were provided in CDF format, which were converted to NetCDF. These passes are now considered complete. As the CDF files did not contain data for the slant range correction code, zero flag, hour mark flag and unused attributes (which were determined to be non-significant in the recovered raw data), a NaN value of 9999 has been used in the converted files for these passes. A fixed 90 second time offset was added to the ship track datetime to account for tow distance of the GLORIA instrument behind the ship (the output of this was the GLORIA track CSV). The latitude and longitude of the GLORIA track was then interpolated to provide the value of these coordinates at the original datetime of the ship track. This was done in order to map geographic information to the timestamps within the netCDF metadata. Interpolation on the latitude and longitude fields from ship track data was done with the Pandas Python library. Depth values within the NetCDF file metadata are provided by the International Bathymetric Chart of the Southern Ocean (IBCSO) version 2. Due to the resolution of IBCSO, the depth in the GLORIA NetCDF metadata is provided with a horizontal resolution of 500x500m, leading to some positive values close to coastline areas.
    institution: British Antarctic Survey
    contributor_name: Peter F. Barker, Roy A. Livermore, Jeremy S. Tomlinson, Richard Woollett, Alexander P. Cunningham, Robert D. Larter, Carol J. Pudsey, Richard W. Jordan
    contributor_role: Chief Scientific Officer, Researcher, Researcher, Researcher, Researcher, Researcher, Researcher, Researcher
    project: This project was funded by BAS under project code B6153: Scotia Sea tectonic evolution and palaeo-circulation.
    references: Cunningham, Alexander P.. 1998 Geophysical Investigations of the North Scotia Ridge. University of London, PhD Thesis, Tomlinson, J.S.; Pudsey, C.J.; Livermore, R.A.; Larter, Robert D. ; Barker, Peter F.. 1992 Long-range sidescan sonar (GLORIA) survey of the Antarctic Peninsula Pacific margin. In: Yoshida, Y.; Kaminuma, K.; Shiraishi, K., (eds.) Recent progress in Antarctic earth science. Proceedings of the Sixth International Symposium on Antarctic Earth Sciences. Ranzan, Saitama, Japan, September 1991. Tokyo, Terra Scientific Publishing, 423-429, Searle, R. C., Le Bas, T. P., Mitchell, N. C., Somers, M. L., Parson, L. M., & Patriat, P. H. (1990). GLORIA image processing: The state of the art. Marine geophysical researches, 12, 21-39,  Searle, R. C., & Hunter, P. M. (1986). The use of GLORIA long-range sidescan sonar for deep-ocean mapping. In Autocarto London (Vol. 2, pp. 339-388).
    publisher_name: NERC EDS UK Polar Data Centre
    publisher_type: institution
    publisher_email: pdc@bas.ac.uk
    publisher_url: https://www.bas.ac.uk/data/uk-pdc/
    time_coverage_start: 1989-01-04
    time_coverage_end: 1989-04-02
    geospatial_lon_min: -74.8
    geospatial_lon_max: 0
    geospatial_lat_min: -65
    geospatial_lat_max: -51.5
    geospatial_bounds_crs: EPSG:4326
    metadata_link: https://doi.org/10.5285/cf87183c-51df-4588-be73-ad0a45fea2d7
    dimensions(sizes): 
    variables(dimensions): 
    groups: scan1, scan2, scan3, scan4, scan5, scan6, scan7, scan8, scan9, scan10, scan11, scan12, scan13, scan14, scan15, scan16, scan17, scan18, scan19, scan20, scan21, scan22, scan23, scan24, scan25, scan26, scan27, scan28, scan29, scan30, scan31, scan32, scan33, scan34, scan35, scan36, scan37, scan38, scan39, scan40, scan41, scan42, scan43, scan44, scan45, scan46, scan47, scan48, scan49, scan50, scan51, scan52, scan53, scan54, scan55, scan56, scan57, scan58, scan59, scan60, scan61, scan62, scan63, scan64, scan65, scan66, scan67, scan68, scan69, scan70, scan71, scan72, scan73, scan74, scan75, scan76, scan77, scan78, scan79, scan80, scan81, scan82, scan83, scan84, scan85, scan86, scan87, scan88, scan89, scan90, scan91, scan92, scan93, scan94, scan95, scan96, scan97, scan98, scan99, scan100, scan101, scan102, scan103, scan104, scan105, scan106, scan107, scan108, scan109, scan110, scan111, scan112, scan113, scan114, scan115, scan116, scan117, scan118, scan119, scan120, scan121, scan122, scan123, scan124, scan125, scan126, scan127, scan128, scan129, scan130, scan131, scan132, scan133, scan134, scan135, scan136, scan137, scan138, scan139, scan140, scan141, scan142, scan143, scan144, scan145, scan146, scan147, scan148, scan149, scan150, scan151, scan152, scan153, scan154, scan155, scan156, scan157, scan158, scan159, scan160, scan161, scan162, scan163, scan164, scan165, scan166, scan167, scan168, scan169, scan170, scan171, scan172, scan173, scan174, scan175, scan176, scan177, scan178, scan179, scan180, scan181, scan182, scan183, scan184, scan185, scan186, scan187, scan188, scan189, scan190, scan191, scan192, scan193, scan194, scan195, scan196, scan197, scan198, scan199, scan200, scan201, scan202, scan203, scan204, scan205, scan206, scan207, scan208, scan209, scan210, scan211, scan212, scan213, scan214, scan215, scan216, scan217, scan218, scan219, scan220, scan221, scan222, scan223, scan224, scan225, scan226, scan227, scan228, scan229, scan230, scan231, scan232, scan233, scan234, scan235, scan236, scan237, scan238, scan239, scan240, scan241, scan242, scan243, scan244, scan245, scan246, scan247, scan248, scan249, scan250, scan251, scan252, scan253, scan254, scan255, scan256, scan257, scan258, scan259, scan260, scan261, scan262, scan263, scan264, scan265, scan266, scan267, scan268, scan269, scan270, scan271, scan272, scan273, scan274, scan275, scan276, scan277, scan278, scan279, scan280, scan281, scan282, scan283, scan284, scan285, scan286, scan287, scan288, scan289, scan290, scan291, scan292, scan293, scan294, scan295, scan296, scan297, scan298, scan299, scan300, scan301, scan302, scan303, scan304, scan305, scan306, scan307, scan308, scan309, scan310, scan311, scan312, scan313, scan314, scan315, scan316, scan317, scan318, scan319, scan320, scan321, scan322, scan323, scan324, scan325, scan326, scan327, scan328, scan329, scan330, scan331, scan332, scan333, scan334, scan335, scan336, scan337, scan338, scan339, scan340, scan341, scan342, scan343, scan344, scan345, scan346, scan347, scan348, scan349, scan350, scan351, scan352, scan353, scan354, scan355, scan356, scan357, scan358, scan359, scan360, scan361, scan362, scan363, scan364, scan365, scan366, scan367, scan368, scan369, scan370, scan371, scan372, scan373, scan374, scan375, scan376, scan377, scan378, scan379, scan380, scan381, scan382, scan383, scan384, scan385, scan386, scan387, scan388, scan389, scan390, scan391, scan392, scan393, scan394, scan395, scan396, scan397, scan398, scan399, scan400, scan401, scan402, scan403, scan404, scan405, scan406, scan407, scan408, scan409, scan410, scan411, scan412, scan413, scan414, scan415, scan416, scan417, scan418, scan419, scan420, scan421, scan422, scan423, scan424, scan425, scan426, scan427, scan428, scan429, scan430, scan431, scan432, scan433, scan434, scan435, scan436, scan437, scan438, scan439, scan440, scan441, scan442, scan443, scan444, scan445, scan446, scan447, scan448, scan449, scan450, scan451, scan452, scan453, scan454, scan455, scan456, scan457, scan458, scan459, scan460, scan461, scan462, scan463, scan464, scan465, scan466, scan467, scan468, scan469, scan470, scan471, scan472, scan473, scan474, scan475, scan476, scan477, scan478, scan479, scan480, scan481, scan482, scan483, scan484, scan485, scan486, scan487, scan488, scan489, scan490, scan491, scan492, scan493, scan494, scan495, scan496, scan497, scan498, scan499, scan500, scan501, scan502, scan503, scan504, scan505, scan506, scan507, scan508, scan509, scan510, scan511, scan512, scan513, scan514, scan515, scan516, scan517, scan518, scan519, scan520, scan521, scan522, scan523, scan524, scan525, scan526, scan527, scan528, scan529, scan530, scan531, scan532, scan533, scan534, scan535, scan536, scan537, scan538, scan539, scan540, scan541, scan542, scan543, scan544, scan545, scan546, scan547, scan548, scan549, scan550, scan551, scan552, scan553, scan554, scan555, scan556, scan557, scan558, scan559, scan560, scan561, scan562, scan563, scan564, scan565, scan566, scan567, scan568, scan569, scan570, scan571, scan572, scan573, scan574, scan575, scan576, scan577, scan578, scan579, scan580, scan581, scan582, scan583, scan584, scan585, scan586, scan587, scan588, scan589, scan590, scan591, scan592, scan593, scan594, scan595, scan596, scan597, scan598, scan599, scan600, scan601, scan602, scan603, scan604, scan605, scan606, scan607, scan608, scan609, scan610, scan611, scan612, scan613, scan614, scan615, scan616, scan617, scan618, scan619, scan620, scan621, scan622, scan623, scan624, scan625, scan626, scan627, scan628, scan629, scan630, scan631, scan632, scan633, scan634, scan635, scan636, scan637, scan638, scan639, scan640, scan641, scan642, scan643, scan644, scan645, scan646, scan647, scan648, scan649, scan650, scan651, scan652, scan653, scan654, scan655, scan656, scan657, scan658, scan659, scan660, scan661, scan662, scan663, scan664, scan665, scan666, scan667, scan668, scan669, scan670, scan671, scan672, scan673, scan674, scan675, scan676, scan677, scan678, scan679, scan680, scan681, scan682, scan683, scan684, scan685, scan686, scan687, scan688, scan689, scan690, scan691, scan692, scan693, scan694, scan695, scan696, scan697, scan698, scan699, scan700, scan701, scan702, scan703, scan704, scan705, scan706, scan707, scan708, scan709, scan710, scan711, scan712, scan713, scan714, scan715, scan716, scan717, scan718, scan719, scan720

You can also access directly a single global attribute value by treating their values as if they are key-value pairs in a dictionary:

print(fnc.__dict__['history'])
The acquisition instrument for this dataset was GLORIA II, operated on RRS Charles Darwin. The sonar towfish was 8m in length, and towed 300m behind the vessel at 50m depth. Data were collected on the RRS Charles Darwin CD37 scientific research cruise and stored on 9-track magnetic tapes, which are currently held by the British Antarctic Survey, Cambridge. Raw data were recovered from 9-track magnetic tapes in 2021. Transcription from tape was performed by Troika International/Interica. There was some data loss, due to stiction causing read errors. Heat treatment of the tapes improved data recovery at this stage. A Python package was developed by Paul Breen (BAS) to handle the GLORIA raw pass files. Conversion to NetCDF and generation of quicklooks for the GLORIA data from CD37 was performed in 2024/2025 using the package. This can be accessed here: https://github.com/antarctica/bas-gloria. Decoding of the data has been performed following the structure as descibed in Table 1 of Searle et al. 1989. The geographic position of the GLORIA instrument relative to the ship was calculated from the CD37 cruise track by introducing a fixed time offset of 90 seconds to the datetime of the ship at each recorded coordinate point. Latitude and longitude were subsequently interpolated, to increase the frequency of the coordinate information such that this could be added to the NetCDF attribute metadata by matching the track information with passes based on the datetime field.

Checking the NetCDF data#

Now let’s access the data by opening the NetCDF file in “read” mode (“r” option in nc.Dataset object construction), and store the metadata information in lists to work with later.

with nc.Dataset(f, mode = "r") as ds:
    
    group_names = list(ds.groups.keys())

    # Initialize a dictionary to store each group's attributes as an indexable sub-dict. 
    attributes = {}
    data = {}

    # Iterate through all groups and access their data
    for group_name, group in ds.groups.items():
        
        # Access the 'scan' variable which contains the sample values (data)
        if 'scan' in group.variables:
            scan_data = group.variables['scan'][:]
            data.update({group_name: scan_data})

    for group_name in group_names:
        
        group = ds.groups[group_name]

        # Initialize a dictionary to store attributes of the current group
        attributes_of_group = {}
        
        # Access and store group attributes
        for attr_name in group.ncattrs():
            attr_value = group.getncattr(attr_name)
            attributes_of_group[attr_name] = attr_value  # Store attributes in a dictionary
        
        # Append the dictionary of attributes for the current group to the list
        attributes.update({group_name: attributes_of_group})

List group attributes and data structure#

The group structure is as follows: each group represents one GLORIA scan, and the group attributes provide the metadata for this scan. For complete passes, 720 scans will be present. We can check the number of group and list them as follows:

print(f"Groups found: {group_names}")
print(f" The total number of passes is {len(group_names)}")
Groups found: ['scan1', 'scan2', 'scan3', 'scan4', 'scan5', 'scan6', 'scan7', 'scan8', 'scan9', 'scan10', 'scan11', 'scan12', 'scan13', 'scan14', 'scan15', 'scan16', 'scan17', 'scan18', 'scan19', 'scan20', 'scan21', 'scan22', 'scan23', 'scan24', 'scan25', 'scan26', 'scan27', 'scan28', 'scan29', 'scan30', 'scan31', 'scan32', 'scan33', 'scan34', 'scan35', 'scan36', 'scan37', 'scan38', 'scan39', 'scan40', 'scan41', 'scan42', 'scan43', 'scan44', 'scan45', 'scan46', 'scan47', 'scan48', 'scan49', 'scan50', 'scan51', 'scan52', 'scan53', 'scan54', 'scan55', 'scan56', 'scan57', 'scan58', 'scan59', 'scan60', 'scan61', 'scan62', 'scan63', 'scan64', 'scan65', 'scan66', 'scan67', 'scan68', 'scan69', 'scan70', 'scan71', 'scan72', 'scan73', 'scan74', 'scan75', 'scan76', 'scan77', 'scan78', 'scan79', 'scan80', 'scan81', 'scan82', 'scan83', 'scan84', 'scan85', 'scan86', 'scan87', 'scan88', 'scan89', 'scan90', 'scan91', 'scan92', 'scan93', 'scan94', 'scan95', 'scan96', 'scan97', 'scan98', 'scan99', 'scan100', 'scan101', 'scan102', 'scan103', 'scan104', 'scan105', 'scan106', 'scan107', 'scan108', 'scan109', 'scan110', 'scan111', 'scan112', 'scan113', 'scan114', 'scan115', 'scan116', 'scan117', 'scan118', 'scan119', 'scan120', 'scan121', 'scan122', 'scan123', 'scan124', 'scan125', 'scan126', 'scan127', 'scan128', 'scan129', 'scan130', 'scan131', 'scan132', 'scan133', 'scan134', 'scan135', 'scan136', 'scan137', 'scan138', 'scan139', 'scan140', 'scan141', 'scan142', 'scan143', 'scan144', 'scan145', 'scan146', 'scan147', 'scan148', 'scan149', 'scan150', 'scan151', 'scan152', 'scan153', 'scan154', 'scan155', 'scan156', 'scan157', 'scan158', 'scan159', 'scan160', 'scan161', 'scan162', 'scan163', 'scan164', 'scan165', 'scan166', 'scan167', 'scan168', 'scan169', 'scan170', 'scan171', 'scan172', 'scan173', 'scan174', 'scan175', 'scan176', 'scan177', 'scan178', 'scan179', 'scan180', 'scan181', 'scan182', 'scan183', 'scan184', 'scan185', 'scan186', 'scan187', 'scan188', 'scan189', 'scan190', 'scan191', 'scan192', 'scan193', 'scan194', 'scan195', 'scan196', 'scan197', 'scan198', 'scan199', 'scan200', 'scan201', 'scan202', 'scan203', 'scan204', 'scan205', 'scan206', 'scan207', 'scan208', 'scan209', 'scan210', 'scan211', 'scan212', 'scan213', 'scan214', 'scan215', 'scan216', 'scan217', 'scan218', 'scan219', 'scan220', 'scan221', 'scan222', 'scan223', 'scan224', 'scan225', 'scan226', 'scan227', 'scan228', 'scan229', 'scan230', 'scan231', 'scan232', 'scan233', 'scan234', 'scan235', 'scan236', 'scan237', 'scan238', 'scan239', 'scan240', 'scan241', 'scan242', 'scan243', 'scan244', 'scan245', 'scan246', 'scan247', 'scan248', 'scan249', 'scan250', 'scan251', 'scan252', 'scan253', 'scan254', 'scan255', 'scan256', 'scan257', 'scan258', 'scan259', 'scan260', 'scan261', 'scan262', 'scan263', 'scan264', 'scan265', 'scan266', 'scan267', 'scan268', 'scan269', 'scan270', 'scan271', 'scan272', 'scan273', 'scan274', 'scan275', 'scan276', 'scan277', 'scan278', 'scan279', 'scan280', 'scan281', 'scan282', 'scan283', 'scan284', 'scan285', 'scan286', 'scan287', 'scan288', 'scan289', 'scan290', 'scan291', 'scan292', 'scan293', 'scan294', 'scan295', 'scan296', 'scan297', 'scan298', 'scan299', 'scan300', 'scan301', 'scan302', 'scan303', 'scan304', 'scan305', 'scan306', 'scan307', 'scan308', 'scan309', 'scan310', 'scan311', 'scan312', 'scan313', 'scan314', 'scan315', 'scan316', 'scan317', 'scan318', 'scan319', 'scan320', 'scan321', 'scan322', 'scan323', 'scan324', 'scan325', 'scan326', 'scan327', 'scan328', 'scan329', 'scan330', 'scan331', 'scan332', 'scan333', 'scan334', 'scan335', 'scan336', 'scan337', 'scan338', 'scan339', 'scan340', 'scan341', 'scan342', 'scan343', 'scan344', 'scan345', 'scan346', 'scan347', 'scan348', 'scan349', 'scan350', 'scan351', 'scan352', 'scan353', 'scan354', 'scan355', 'scan356', 'scan357', 'scan358', 'scan359', 'scan360', 'scan361', 'scan362', 'scan363', 'scan364', 'scan365', 'scan366', 'scan367', 'scan368', 'scan369', 'scan370', 'scan371', 'scan372', 'scan373', 'scan374', 'scan375', 'scan376', 'scan377', 'scan378', 'scan379', 'scan380', 'scan381', 'scan382', 'scan383', 'scan384', 'scan385', 'scan386', 'scan387', 'scan388', 'scan389', 'scan390', 'scan391', 'scan392', 'scan393', 'scan394', 'scan395', 'scan396', 'scan397', 'scan398', 'scan399', 'scan400', 'scan401', 'scan402', 'scan403', 'scan404', 'scan405', 'scan406', 'scan407', 'scan408', 'scan409', 'scan410', 'scan411', 'scan412', 'scan413', 'scan414', 'scan415', 'scan416', 'scan417', 'scan418', 'scan419', 'scan420', 'scan421', 'scan422', 'scan423', 'scan424', 'scan425', 'scan426', 'scan427', 'scan428', 'scan429', 'scan430', 'scan431', 'scan432', 'scan433', 'scan434', 'scan435', 'scan436', 'scan437', 'scan438', 'scan439', 'scan440', 'scan441', 'scan442', 'scan443', 'scan444', 'scan445', 'scan446', 'scan447', 'scan448', 'scan449', 'scan450', 'scan451', 'scan452', 'scan453', 'scan454', 'scan455', 'scan456', 'scan457', 'scan458', 'scan459', 'scan460', 'scan461', 'scan462', 'scan463', 'scan464', 'scan465', 'scan466', 'scan467', 'scan468', 'scan469', 'scan470', 'scan471', 'scan472', 'scan473', 'scan474', 'scan475', 'scan476', 'scan477', 'scan478', 'scan479', 'scan480', 'scan481', 'scan482', 'scan483', 'scan484', 'scan485', 'scan486', 'scan487', 'scan488', 'scan489', 'scan490', 'scan491', 'scan492', 'scan493', 'scan494', 'scan495', 'scan496', 'scan497', 'scan498', 'scan499', 'scan500', 'scan501', 'scan502', 'scan503', 'scan504', 'scan505', 'scan506', 'scan507', 'scan508', 'scan509', 'scan510', 'scan511', 'scan512', 'scan513', 'scan514', 'scan515', 'scan516', 'scan517', 'scan518', 'scan519', 'scan520', 'scan521', 'scan522', 'scan523', 'scan524', 'scan525', 'scan526', 'scan527', 'scan528', 'scan529', 'scan530', 'scan531', 'scan532', 'scan533', 'scan534', 'scan535', 'scan536', 'scan537', 'scan538', 'scan539', 'scan540', 'scan541', 'scan542', 'scan543', 'scan544', 'scan545', 'scan546', 'scan547', 'scan548', 'scan549', 'scan550', 'scan551', 'scan552', 'scan553', 'scan554', 'scan555', 'scan556', 'scan557', 'scan558', 'scan559', 'scan560', 'scan561', 'scan562', 'scan563', 'scan564', 'scan565', 'scan566', 'scan567', 'scan568', 'scan569', 'scan570', 'scan571', 'scan572', 'scan573', 'scan574', 'scan575', 'scan576', 'scan577', 'scan578', 'scan579', 'scan580', 'scan581', 'scan582', 'scan583', 'scan584', 'scan585', 'scan586', 'scan587', 'scan588', 'scan589', 'scan590', 'scan591', 'scan592', 'scan593', 'scan594', 'scan595', 'scan596', 'scan597', 'scan598', 'scan599', 'scan600', 'scan601', 'scan602', 'scan603', 'scan604', 'scan605', 'scan606', 'scan607', 'scan608', 'scan609', 'scan610', 'scan611', 'scan612', 'scan613', 'scan614', 'scan615', 'scan616', 'scan617', 'scan618', 'scan619', 'scan620', 'scan621', 'scan622', 'scan623', 'scan624', 'scan625', 'scan626', 'scan627', 'scan628', 'scan629', 'scan630', 'scan631', 'scan632', 'scan633', 'scan634', 'scan635', 'scan636', 'scan637', 'scan638', 'scan639', 'scan640', 'scan641', 'scan642', 'scan643', 'scan644', 'scan645', 'scan646', 'scan647', 'scan648', 'scan649', 'scan650', 'scan651', 'scan652', 'scan653', 'scan654', 'scan655', 'scan656', 'scan657', 'scan658', 'scan659', 'scan660', 'scan661', 'scan662', 'scan663', 'scan664', 'scan665', 'scan666', 'scan667', 'scan668', 'scan669', 'scan670', 'scan671', 'scan672', 'scan673', 'scan674', 'scan675', 'scan676', 'scan677', 'scan678', 'scan679', 'scan680', 'scan681', 'scan682', 'scan683', 'scan684', 'scan685', 'scan686', 'scan687', 'scan688', 'scan689', 'scan690', 'scan691', 'scan692', 'scan693', 'scan694', 'scan695', 'scan696', 'scan697', 'scan698', 'scan699', 'scan700', 'scan701', 'scan702', 'scan703', 'scan704', 'scan705', 'scan706', 'scan707', 'scan708', 'scan709', 'scan710', 'scan711', 'scan712', 'scan713', 'scan714', 'scan715', 'scan716', 'scan717', 'scan718', 'scan719', 'scan720']
 The total number of passes is 720

To access the group attribute of a particular scan (here scan1); you can just use the following command:

attributes['scan1']
{'pass_number': np.int64(169),
 'scan_number': np.int64(1),
 'hour_mark_flag': np.int64(0),
 'slant_range_correction_code': np.int64(50),
 'zero_flag': np.int64(0),
 'pulse_repetition_period': np.int64(51),
 'vehicle_heading': '104',
 'year': '89',
 'edge_mark_start': np.int64(65535),
 'edge_mark_end': np.int64(65535),
 'julian_day': '061',
 'hours': '18',
 'minutes': '00',
 'seconds': '',
 'checksum': np.int64(392),
 'unused': np.int64(0),
 'datetime': '1989-03-02T18:00:00',
 'latitude': np.float64(-59.3227),
 'longitude': np.float64(-43.0247),
 'depth_IBCSO': np.int64(-4039)}

The variable ‘scan’, with dimensions samples, contains 994 sample values, which are the reflected acoustic returns from the instrument signal. This can be checked as follows:

print(len(data['scan1']))
print(data['scan1'])
994
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 3 4 4 5 4 7 0 0 6 0 0 0 1 3 4
 5 0 2 3 4 0 0 6 7 2 1 2 2 5 3 2 2 2 0 7 0 2 3 0 4 5 4 2 4 1 0 1 0 0 0 3 7
 0 7 4 3 2 5 9 9 13 6 5 3 1 4 10 6 3 4 5 3 4 7 6 4 10 3 2 3 8 8 6 3 2 1 4
 6 0 0 3 5 2 4 4 6 6 3 5 11 6 6 9 12 5 5 10 8 9 6 4 7 8 6 8 5 3 8 4 4 3 5
 5 8 5 0 7 4 4 2 12 10 10 10 6 6 11 9 12 12 17 14 19 14 13 17 14 24 22 32
 9 15 26 30 24 14 17 16 23 23 9 4 7 18 10 15 26 23 19 18 33 20 33 32 33 20
 25 33 42 25 26 26 18 13 14 20 19 32 34 33 32 18 18 29 32 29 35 38 44 23
 31 28 26 21 23 22 29 27 39 20 30 27 23 41 48 54 47 28 47 37 39 29 30 33
 32 35 36 42 33 31 44 51 39 37 46 36 31 38 39 43 23 36 36 40 37 50 37 49
 56 45 58 64 64 60 43 40 55 49 54 45 51 40 48 46 52 57 28 39 34 47 55 62
 46 42 56 40 58 70 56 48 47 47 37 39 55 56 40 43 59 48 65 45 57 70 55 64
 57 47 54 49 53 42 65 55 53 59 45 52 64 45 61 67 67 59 44 65 64 74 62 61
 58 55 55 56 52 69 50 47 62 41 41 60 53 60 46 62 46 37 39 45 43 46 36 37
 40 37 39 47 27 34 36 37 27 38 38 31 34 24 18 16 21 27 23 14 18 11 14 22
 30 14 15 17 27 7 22 33 21 14 17 35 40 35 48 64 68 75 51 38 6 3 7 1 5 4 6
 5 0 0 3 5 1 5 5 4 0 5 19 27 21 28 31 35 14 12 33 25 24 19 15 18 11 20 24
 30 16 33 21 10 21 40 38 26 41 31 35 12 10 26 28 26 22 12 15 10 11 3 3 4 6
 10 7 0 0 3 3 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -- -- 0 0 13 95 7 0 1
 1 1 0 0 0 0 1 2 1 1 2 3 4 13 18 5 9 22 16 7 28 12 20 13 21 13 10 25 14 15
 15 24 9 15 22 6 15 16 12 31 18 13 6 13 10 16 38 25 18 23 18 24 23 38 31
 42 18 21 31 13 26 12 14 18 11 6 10 11 14 10 8 8 8 12 8 8 7 5 3 5 5 4 6 6
 8 94 76 39 32 41 22 14 22 29 19 21 16 23 38 37 37 37 27 22 38 41 41 45 35
 66 41 46 47 53 50 45 48 66 60 64 56 64 66 66 72 76 75 92 98 93 75 100 65
 96 92 99 79 73 70 65 71 62 68 96 72 93 93 68 68 69 65 93 91 83 85 72 65
 79 49 86 91 69 80 79 66 75 83 53 62 65 78 66 52 76 70 44 81 97 70 81 91
 92 82 73 80 78 89 81 65 75 76 67 65 50 69 75 64 79 81 77 64 64 49 68 69
 37 67 73 62 71 50 52 70 56 65 63 49 74 62 62 62 62 51 55 65 64 64 54 56
 49 45 62 71 57 51 54 32 43 77 64 65 50 59 48 36 49 58 60 64 49 55 37 56
 35 26 55 55 55 47 55 52 48 57 72 47 24 50 36 45 41 39 54 36 51 51 70 64
 57 50 38 41 36 28 35 32 24 32 18 42 37 39 56 67 67 58 66 69 47 63 45 36
 42 34 23 48 37 35 42 41 37 34 42 57 43 42 35 29 51 37 35 48 34 52 37 33
 51 44 33 34 42 51 50 48 53 44 39 48 39 36 35 31 37 29 38 32 32 43 30 35
 30 28 30 17 12 23 21 23 24 14 24 23 38 39 26 14 30 29 32 28 24 14 14 9 10
 15 14 8 3 12 12 12 6 12 7 22 12 30 24 14 32 23 23 31 20 32 52 43 39 40 33
 34 28 34 26 29 28 18 9 10 15 32 17 12 12 4 6 15 5 10 11 16 7 6 10 5 7 3 6
 10 10 8 4 16 8 4 4 12 6 1 3 8 7 9 13 12 5 7 2 3 6 0 7 12 4 2 7 9 6 5 4 4
 5 4 2 14 10 4 3 6 0 2 11 5 4 2 2 2 2 2 0 0 1 1 0 1 0 1 0 0]

Plot data for first scan#

We can now create a simple plot with the sonar samples from the first scan (or any desired scan number) in our pass file. The x axis is the sample number, from port to starboard, and the y axis is the amplitude of the returned signal. A peak is observed in the middle of the plotting window, which is the direct nadir of the GLORIA instrument looking down at the water column beneath. There is a small “envelope” around this peak, which are the returns from either side of the nadir. This envelope contains nonvalid information and is usually corrected in post-processing.

scan = 'scan1'

# Create figure and add title
fig = plt.figure()
fig.suptitle(f"{os.path.basename(f)} ({scan.capitalize()})")
ax = fig.add_subplot()

# Plot axis labels
ax.set_ylabel('Amplitude')
ax.set_xlabel('Samples')

# Plot the scan data
ax.plot(data['scan1'], label='scan{:.0f}'.format(data['scan1'][0]))

plt.show() 
../_images/654715eebc8ede41f2757ce53bd91aaf94334b535aa51962403d903a15f48a5b.png

Interrogate time coverage and scanning frequency of pass file#

It is also possible to have a look at the start and end time of each file. Most of the scans have a ~6 hours length.

# Storing datetime values for all scans in the pass inside a list.
datetimes = []
[datetimes.append(attributes[i]['datetime']) for i in attributes]

# Finding the start and end of GLORIA data in the pass.
start = dt.datetime.strptime(min(datetimes), "%Y-%m-%dT%H:%M:%S")
end = dt.datetime.strptime(max(datetimes), "%Y-%m-%dT%H:%M:%S")
# Creating a timedelta duration object from this information.
dur = end-start
# Function to extract the individual time components from the duration
def convert_timedelta(duration):
    days, seconds = duration.days, duration.seconds
    hours = days * 24 + seconds // 3600
    minutes = (seconds % 3600) // 60
    seconds = (seconds % 60)
    return hours, minutes, seconds

hours, minutes, seconds = convert_timedelta(dur)

print(f"The time coverage of this pass is {start} - {end}, which corresponds to {hours} hours and {minutes} minutes.")
The time coverage of this pass is 1989-03-02 18:00:00 - 1989-03-02 23:59:00, which corresponds to 5 hours and 59 minutes.

The mean scanning frequency of the pass can be calculated by: time coverage / number of scans.

# Finding the number of scans in the pass file.
scans = len(data)

print(f"The scanning frequency of this pass file is {dur / scans}.") # This produces another timedelta object - the final field is microseconds.
The scanning frequency of this pass file is 0:00:29.916667.

Generate summary statistics for each attribute#

Let’s display summary statistics for a desired attribute using pd.describe(). This example is for the depth of the seafloor (extracted from IBCSO data):

depth = []

for group in attributes:
    depth.append(attributes[group]['depth_IBCSO'])

depth = pd.DataFrame(depth, columns = ['depth_IBSCO (m)'])
depth.describe()
depth_IBSCO (m)
count 720.00000
mean -3820.40000
std 426.34211
min -4102.00000
25% -4005.00000
50% -3905.00000
75% -3860.00000
max -1678.00000

Compute these statistics for all metadata attributes, and combine these into a Pandas dataframe. As the ship heading attribute has a dtype of string, this will need converting to an integer.

depth = []
prp = []
heading = []

for group in attributes:
    depth.append(attributes[group]['depth_IBCSO'])
    prp.append(attributes[group]['pulse_repetition_period'])
    heading.append(int(attributes[group]['vehicle_heading']))
stats = pd.DataFrame([prp, depth, heading]).transpose()
stats = stats.set_axis(['Pulse repetition period (s)', 'Depth_IBCSO (m)', 'Heading_deg (deg)'], axis=1)
stats.describe()
Pulse repetition period (s) Depth_IBCSO (m) Heading_deg (deg)
count 720.0 720.00000 720.000000
mean 51.0 -3820.40000 108.644444
std 0.0 426.34211 1.728827
min 51.0 -4102.00000 103.000000
25% 51.0 -4005.00000 107.000000
50% 51.0 -3905.00000 109.000000
75% 51.0 -3860.00000 110.000000
max 51.0 -1678.00000 113.000000

Bounding box of GLORIA dataset#

By extracting the coordinate information from the pass, it is possible to find the geographic bounds of the data in the currently loaded pass file.

latitude = []
longitude = []

[latitude.append(attributes[group]['latitude']) for group in attributes]
[longitude.append(attributes[group]['longitude']) for group in attributes]

west, east, south, north = min(np.array(longitude)), max(np.array(longitude)), min(np.array(latitude)), max(np.array(latitude))

print(f"The bounding box for the current PASS is: {west}W {east}E {south}S {north}N")
The bounding box for the current PASS is: -43.0247W -41.74535E -59.53945S -59.3227N

The coordinate values can be used to create a map of the studied area. Here we will use the cartopy library.

# Create a figure with Matplotlib
fig = plt.figure()
fig.set_size_inches(14,14)

# Add a projection and set extent of the axes
ax = plt.axes(projection=cartopy.crs.PlateCarree())
ax.set_title(f"Bounding box of {os.path.basename(f)}")
ax.set_extent([west - 25, east + 25, south - 10, north + 10])

# Close the figure to suppress display at this point
plt.close()

Add features from Cartopy’s Feature Interface (coastlines, land, ocean) using GeoAxes, add gridlines, and display figure in window.

ax.add_feature(cfeature.COASTLINE)
ax.add_feature(cfeature.LAND)
ax.add_feature(cfeature.OCEAN)

gl = ax.gridlines(draw_labels=True, linewidth=2, color='gray', alpha=0.5, linestyle='--')

Plot latitude and longitude data of the pass file as a line (representing the instrument track).

ax.plot(longitude, latitude, color="red", linewidth=2)

fig
../_images/1ccc8635ae0b78159a9b4698a9569ed59730bb54b31b832008c2e7572201e283.png

Plot a simple sonargram with data from first scan in the file#

Creating the parameters of the sonargram plot.

nscans = len(data)
nsamples = 994
xaxis = np.linspace(1.0, float(nscans), nscans)
yaxis = np.linspace(1.0, float(nsamples), nsamples)

Populating the plot with the extracted data from the pass.

# Store each scan as a column in a matrix
cols = np.zeros((nsamples, nscans))

# Storing sample values from each scan inside their respective columns (along the x axis).
for i, scan in enumerate(data):
    cols[:,i] = data[scan]

# Creating the matrix for the colourbar (sample value)
mat = np.asmatrix(cols)

dx = xaxis[1] - xaxis[0]
dy = yaxis[1] - yaxis[0]
xlim = [min(xaxis), max(xaxis)]
ylim = [max(yaxis), min(yaxis)]
extent = [min(xaxis) - dx/2.0, max(xaxis) + dx/2.0, max(yaxis) + dy/2.0, min(yaxis) - dy/2.0]
std_contrast = np.nanmax(np.abs(mat)[:])
contrast = 1.0

Add the axis labels, title and colourbar, and show the image in window.

plt.imshow(mat, cmap="gray", aspect="auto", extent=extent, vmin=-std_contrast/contrast, vmax=std_contrast/contrast)

plt.gca().set_xlabel("Scan number")
plt.gca().set_ylabel("Sample number")
plt.xlim(xlim)
plt.ylim(ylim)
plt.colorbar(label="Return signal intensity")
plt.suptitle(os.path.basename(f))
Text(0.5, 0.98, 'CD37_GLORIA_PASS169.nc')
../_images/7e429a92c991a580c8871f37ba490b784ac805a4a4c2edd489611b65d42d10c8.png

References#

The list of references below give additional context regarding the cruise and the processing of GLORIA data.#

  • CD37 889: RRS Charles Darwin Scotia and Bellingshausen Seas Geophysics January 1989 - April 1989 (https://www.bodc.ac.uk/resources/inventories/cruise_inventory/reports/cd37.pdf)

  • CD37 cruise inventory - RRS Charles Darwin CD37 - cruise summary report- https://www.bodc.ac.uk/resources/inventories/cruise_inventory/report/4591/

  • Cunningham, Alexander P.. 1998 Geophysical Investigations of the North Scotia Ridge. University of London, PhD Thesis.

  • Tomlinson, J.S.; Pudsey, C.J.; Livermore, R.A.; Larter, Robert D. ; Barker, Peter F.. 1992 Long-range sidescan sonar (GLORIA) survey of the Antarctic Peninsula Pacific margin. In: Yoshida, Y.; Kaminuma, K.; Shiraishi, K., (eds.) Recent progress in Antarctic earth science. Proceedings of the Sixth International Symposium on Antarctic Earth Sciences. Ranzan, Saitama, Japan, September 1991. Tokyo, Terra Scientific Publishing, 423-429.

  • Searle, R. C., Le Bas, T. P., Mitchell, N. C., Somers, M. L., Parson, L. M., & Patriat, P. H. (1990). GLORIA image processing: The state of the art. Marine geophysical researches, 12, 21-39.

  • Searle, R. C., & Hunter, P. M. (1986). The use of GLORIA long-range sidescan sonar for deep-ocean mapping. In Autocarto London (Vol. 2, pp. 339-388).

  • Cunningham, A. P.; Barker, P. F.; Tomlinson, J. S.. 1998 Tectonics and sedimentary environment of the North Scotia Ridge region revealed by side-scan sonar. Journal of the Geological Society, 155 (6). 941-956. 10.1144/gsjgs.155.6.0941

  • Livermore, R. A., & Woollett, R. W. (1993). Seafloor spreading in the Weddell Sea and southwest Atlantic since the Late Cretaceous. Earth and Planetary Science Letters, 117(3-4), 475-495.