CSV & Rasters: Multi-dataset Survey with Derivative Products

This example demonstrates the typical workflow for creating a GS file for an AEM survey in its entirety, i.e., the NetCDF file contains all related datasets together, e.g., raw data, processed data, inverted models, and derivative products. Specifically, this survey contains:

  1. Minimally processed (raw) AEM data and raw/processed magnetic data provided by SkyTEM

  2. Fully processed AEM data used as input to inversion

  3. Laterally constrained inverted resistivity models

  4. Point-data estimates of bedrock depth derived from the AEM models

  5. Interpolated magnetic and bedrock depth grids

Note: To make the size of this example more managable, some of the input datasets have been downsampled relative to the source files in the data release referenced below.

Source Reference: Minsley, B.J, Bloss, B.R., Hart, D.J., Fitzpatrick, W., Muldoon, M.A., Stewart, E.K., Hunt, R.J., James, S.R., Foks, N.L., and Komiskey, M.J., 2022, Airborne electromagnetic and magnetic survey data, northeast Wisconsin (ver. 1.1, June 2022): U.S. Geological Survey data release, https://doi.org/10.5066/P93SY9LI.

import matplotlib.pyplot as plt
from os.path import join
import numpy as np
import gspy
from gspy import Survey
import xarray as xr
from pprint import pprint
import warnings
warnings.filterwarnings('ignore')

Initialize the Survey

# Path to example files
data_path = '..//data_files//skytem_csv'

# Survey metadata file
metadata = join(data_path, "data//skytem_survey.yml")

# Establish the Survey
survey = Survey.from_dict(metadata)
Survey YAML file
  1dataset_attrs:
  2    title: SkyTEM Airborne Electromagnetic (AEM) Survey, Northeast Wisconsin Bedrock Mapping
  3    institution: USGS Geology, Geophysics, and Geochemistry Science Center
  4    source:  SkyTEM raw data, USGS processed data and inverted resistivity models, and depth to bedrock surface
  5    history: (1) Data acquisition 01/2021 - 02/2021 by SkyTEM Canada Inc.; (2) AEM and magnetic data processing by SkyTEM Canada Inc. 02/2021 - 03/2021; raw and minimally processed AEM data, and processed magnetic data, received by USGS from SkyTEM Canada Inc 03/2021; Minimally processed AEM data exported to netCDF group /survey/data/raw_data group; (3) Minimally processed binary data and system response information received from the contractor were imported into the Aarhus Workbench software (v 6.0.1.0) where data were processed by USGS 03/2021 - 06/2021. Processed AEM data exported to netCDF group /survey/data/processed_data; (4) Processed data were inverted in Aarhus Workbench software using laterally constrained inversion to recover 40-layer fixed depth blocky resistivity models by USGS 03/2021 - 06/2021; Inverted resistivity models exported to netCDF group /survey/models/inverted_models. (5) Resistivity models were imported into the Geoscene3D software (v. 12.0.0.680) and points were generated at the first depth where resistivity exceeded 325 ohm-meters. These points were visually inspected and manually adjusted in selected areas to produce an AEM-derived estmiate of the elevation of the top of bedrock by USGS together with WGNHS 06/2021 - 07/2021. Points were exported to netCDF group /survey/data/depth_to_bedrock. (6) Bedrock elevation points were interpolated using kriging in Geoscene3D software to produce a regular bedrock elevation grid 07/2021. (7) A bedrock depth grid was calculated in QGIS software (v. 3.14.1-Pi) by subtracting the bedrock elevation from land surface elevation. (8) Bedrock elevation, bedrock depth, and SkyTEM-provided magnetic grids were aligned to a common 100m x 100m grid and exported to netCDF group /survey/derived_products/maps.
  6    references: Minsley, Burke J., B.R. Bloss, D.J. Hart, W. Fitzpatrick, M.A. Muldoon, E.K. Stewart, R.J. Hunt, S.R. James, N.L. Foks, and M.J. Komiskey, 2021, Airborne electromagnetic and magnetic survey data, northeast Wisconsin, 2021, U.S. Geological Survey data release, https://doi.org/10.5066/P93SY9LI.
  7    comment: This dataset includes minimally processed (raw) AEM and raw/processed magnetic data provided by SkyTEM, fully processed data used as input to inversion, laterally constrained inverted resistivity models, and derived estimates of bedrock depth.
  8    summary: Airborne electromagnetic (AEM) and magnetic survey data were collected during January and February 2021 over a distance of 3,170 line kilometers in northeast Wisconsin. These data were collected in support of an effort to improve estimates of depth to bedrock through a collaborative project between the U.S. Geological Survey (USGS), Wisconsin Department of Agriculture, Trade, and Consumer Protection (DATCP), and Wisconsin Geological and Natural History Survey (WGNHS). Data were acquired by SkyTEM Canada Inc. with the SkyTEM 304M time-domain helicopter-borne electromagnetic system together with a Geometrics G822A cesium vapor magnetometer. The survey was acquired at a nominal flight height of 30 - 40 m above terrain along parallel flight lines oriented northwest-southeast with nominal line spacing of 0.5 miles (800 m). AEM data were inverted to produce models of electrical resistivity along flight paths, with typical depth of investigation up to about 300 m and 1 - 2 m near-surface resolution. Shallow resistivity transitions were used to estimate depth to bedrock across the survey area.
  9    content: Wisconsin SkyTEM survey information 
 10
 11survey_information:
 12    contractor_project_number: 20022
 13    contractor: SkyTEM Canada Inc
 14    client: U.S. Geological Survey
 15    survey_type: EM/Mag
 16    survey_area_name: Northeast Wisconsin Bedrock Mapping
 17    state: WI
 18    country: USA
 19    acquisition_start: 20210117
 20    acquisition_end: 20210207
 21    survey_attributes_units: SI
 22
 23spatial_ref:
 24    wkid: 3071
 25    authority: EPSG
 26    vertical_crs: NAVD88
 27
 28flightline_information:
 29    traverse_line_spacing: 800 m
 30    traverse_line_direction: nw-se
 31    tie_line_spacing: n/a
 32    tie_line_direction: n/a
 33    nominal_terrain_clearance: 30 m
 34    final_line_kilometers: 3170 km
 35    traverse_line_numbers: 100101 - 115201
 36    repeat_line_numbers: 920001 - 920006
 37    pre_zero_line_numbers: n/a
 38    post_zero_line_numbers: n/a
 39
 40survey_equipment:
 41    aircraft: Eurocopter Astar 350 B3
 42    magnetometer: Geometrics G822A, Kroum KMAG4 counter
 43    magnetometer_installation: Front of transmitter frame
 44    electromagnetic_system: SkyTEM 304M
 45    electromagnetic_installation: Rigid transmitter frame 40m beneath helicopter, Receiver coils at rear of transmitter frame 2m vertical offset
 46    spectrometer_system: n/a
 47    spectrometer_installation: n/a
 48    spectrometer_sample_rate: n/a
 49    radar_altimeter_system: n/a
 50    radar_altimeter_sample_rate: n/a
 51    laser_altimeter_system: MDL ILM 300R (2)
 52    laser_altimeter_sample_rate: 0.033 s
 53    inclinometer_system: n/a
 54    inclinometer_sample_rate: n/a
 55    navigation_system: Real-time differential GPS Trimble Bullet III
 56    navigation_sample_rate: 1.0 s
 57    acquisition_system: skytem
 58
 59nominal_system:
 60    type: system
 61    mode: airborne
 62    method: electromagnetic, time domain
 63    instrument: SkyTEM 304M
 64
 65    dimensions:
 66        gate_times:
 67            standard_name: raw_gate_times
 68            long_name: raw gate times
 69            units: seconds
 70            missing_value: not_defined
 71            centers: [5.636500E-05, 6.336500E-05, 7.236500E-05, 8.386500E-05, 9.836500E-05, 1.163650E-04, 1.388650E-04, 1.668650E-04, 2.023650E-04, 2.478650E-04, 3.048650E-04, 3.768650E-04, 4.678650E-04, 5.818650E-04, 7.258650E-04, 9.073650E-04, 1.135865E-03, 1.424365E-03, 1.788365E-03, 2.246865E-03, 2.825365E-03, 3.544365E-03]
 72
 73        lm_gate_times:
 74            standard_name: lm_gate_times
 75            long_name: calibrated low moment gate times
 76            units: seconds
 77            missing_value: not_defined
 78            bounds: [[-1.420000e-06, -8.500000e-07],
 79                    [-4.200000e-07,  1.150000e-06],
 80                    [ 1.580000e-06,  3.150000e-06],
 81                    [ 3.580000e-06,  5.150000e-06],
 82                    [ 5.580000e-06,  7.150000e-06],
 83                    [ 7.580000e-06,  9.150000e-06],
 84                    [ 9.580000e-06,  1.115000e-05],
 85                    [ 1.158000e-05,  1.415000e-05],
 86                    [ 1.458000e-05,  1.815000e-05],
 87                    [ 1.858000e-05,  2.315000e-05],
 88                    [ 2.358000e-05,  2.915000e-05],
 89                    [ 2.958000e-05,  3.715000e-05],
 90                    [ 3.758000e-05,  4.715000e-05],
 91                    [ 4.758000e-05,  6.015000e-05],
 92                    [ 6.056500e-05,  7.616500e-05],
 93                    [ 7.656500e-05,  9.616500e-05],
 94                    [ 9.656500e-05,  1.211650e-04],
 95                    [ 1.215650e-04,  1.521650e-04],
 96                    [ 1.525650e-04,  1.921650e-04],
 97                    [ 1.925650e-04,  2.431650e-04],
 98                    [ 2.435650e-04,  3.061650e-04],
 99                    [ 3.065650e-04,  3.871650e-04],
100                    [ 3.875650e-04,  4.881650e-04],
101                    [ 4.885650e-04,  6.151650e-04],
102                    [ 6.155650e-04,  7.761650e-04],
103                    [ 7.765650e-04,  9.781650e-04],
104                    [ 9.785650e-04,  1.233165e-03],
105                    [ 1.233565e-03,  1.555165e-03]]
106            centers: [-1.135000E-06,  3.650000E-07,  2.365000E-06,  4.365000E-06, 6.365000E-06,  8.365000E-06,  1.036500E-05,  1.286500E-05, 1.636500E-05,  2.086500E-05,  2.636500E-05,  3.336500E-05, 4.236500E-05,  5.386500E-05,  6.836500E-05,  8.636500E-05, 1.088650E-04,  1.368650E-04,  1.723650E-04,  2.178650E-04, 2.748650E-04,  3.468650E-04,  4.378650E-04,  5.518650E-04, 6.958650E-04,  8.773650E-04,  1.105865E-03,  1.394365E-03]
107        hm_gate_times:
108            standard_name: hm_gate_times
109            long_name: calibrated high moment gate times
110            units: seconds
111            missing_value: not_defined
112            bounds: [[2.85800e-05, 2.91500e-05],
113                    [2.95800e-05, 3.11500e-05],
114                    [3.15800e-05, 3.31500e-05],
115                    [3.35800e-05, 3.51500e-05],
116                    [3.55800e-05, 3.71500e-05],
117                    [3.75800e-05, 3.91500e-05],
118                    [3.95800e-05, 4.11500e-05],
119                    [4.15800e-05, 4.41500e-05],
120                    [4.45800e-05, 4.81500e-05],
121                    [4.85800e-05, 5.31500e-05],
122                    [5.35800e-05, 5.91500e-05],
123                    [5.95800e-05, 6.71500e-05],
124                    [6.75800e-05, 7.71500e-05],
125                    [7.75800e-05, 9.01500e-05],
126                    [9.05800e-05, 1.06150e-04],
127                    [1.06580e-04, 1.26150e-04],
128                    [1.26580e-04, 1.51150e-04],
129                    [1.51580e-04, 1.82150e-04],
130                    [1.82580e-04, 2.22150e-04],
131                    [2.22580e-04, 2.73150e-04],
132                    [2.73580e-04, 3.36150e-04],
133                    [3.36580e-04, 4.17150e-04],
134                    [4.17580e-04, 5.18150e-04],
135                    [5.18580e-04, 6.45150e-04],
136                    [6.45580e-04, 8.06150e-04],
137                    [8.06580e-04, 1.00815e-03],
138                    [1.00858e-03, 1.26315e-03],
139                    [1.26358e-03, 1.58515e-03],
140                    [1.58558e-03, 1.99115e-03],
141                    [1.99158e-03, 2.50215e-03],
142                    [2.50258e-03, 3.14815e-03],
143                    [3.14858e-03, 3.94015e-03]]
144            centers: [2.886500E-05, 3.036500E-05, 3.236500E-05, 3.436500E-05, 3.636500E-05, 3.836500E-05, 4.036500E-05, 4.286500E-05, 4.636500E-05, 5.086500E-05, 5.636500E-05, 6.336500E-05, 7.236500E-05, 8.386500E-05, 9.836500E-05, 1.163650E-04, 1.388650E-04, 1.668650E-04, 2.023650E-04, 2.478650E-04, 3.048650E-04, 3.768650E-04, 4.678650E-04, 5.818650E-04, 7.258650E-04, 9.073650E-04, 1.135865E-03, 1.424365E-03, 1.788365E-03, 2.246865E-03, 2.825365E-03, 3.544365E-03]
145
146        n_loop_vertices:
147            standard_name: number_of_loop_vertices
148            long_name: number of loop vertices
149            units: not_defined
150            missing_value: not_defined
151            length: 8
152
153        xyz:
154            standard_name: xyz_coordinates
155            long_name: coordinates of the loop vertices
156            units: not_defined
157            missing_value: not_defined
158            length: 3
159
160    variables:
161
162        data_normalized: True
163        skytem_skb_gex_available: True
164        reference_frame: right-handed positive down
165        coil_orientations: X, Z
166
167        transmitter:
168            label: [LM, HM]
169            number_of_turns: [1, 4]
170            coordinates:
171                values: [[[-12.64,-2.10,0.00],[-6.14,-8.58,0.00],[6.14,-8.58,0.00],[11.41,-3.31,0.00],[11.41,3.31,0.00],[6.14,8.58,0.00],[-6.14,8.58,0.00],[-12.64,2.10,0.00]],
172                         [[-12.64,-2.10,0.00],[-6.14,-8.58,0.00],[6.14,-8.58,0.00],[11.41,-3.31,0.00],[11.41,3.31,0.00],[6.14,8.58,0.00],[-6.14,8.58,0.00],[-12.64,2.10,0.00]]]
173                dimensions: ['n_transmitter', 'n_loop_vertices', 'xyz']
174            area: [342, 342]
175            waveform_type: [trapezoid, trapezoid]
176            waveform_time:
177                values: [[-3.1810E-003, -3.1019E-003, -2.9844E-003, -2.3810E-003, -2.3781E-003, -2.3779E-003, -2.3776E-003, -2.3763E-003, -8.0000E-004, -7.2093E-004, -6.0345E-004, 0.0000E+000, 3.0000E-008, 7.0000E-008, 2.7200E-006, 2.8000E-006, 2.9000E-006, 3.0100E-006, 3.1300E-006, 3.4100E-006, 4.7400E-006],
178                         [-6.9167E-02, -6.9157E-02, -6.9153E-02, -6.9150E-02, -6.9143E-02, -6.9122E-02, -6.9118E-02, -6.9114E-02, -6.9107E-02, -6.9083E-02, -6.8159E-02, -6.6667E-02, -6.6627E-02, -6.6626E-02, -6.6622E-02, -2.5000E-03, -2.4899E-03, -2.4862E-03, -2.4830E-03, -2.4767E-03, -2.4637E-03, -2.4547E-03, -2.4510E-03, -2.4475E-03, -2.4442E-03, -2.4406E-03, -2.4159E-03, -2.2328E-03, -1.4913E-03, 0.0000E+00, 6.4270E-07, 8.9870E-07, 1.4267E-05, 4.0291E-05, 4.1331E-05, 4.4539E-05]]
179                long_name: waveform time
180                missing_value: not_defined
181                units: s
182            waveform_current:
183                values: [[-0.0000E+000, -1.4067E-001, -3.0174E-001, -1.0000E+000, -7.5094E-003, 2.2879E-002, 3.7669E-002, -0.0000E+000, 0.0000E+000, 1.4063E-001, 3.0168E-001, 1.0000E+000, 9.9851E-001, 9.8817E-001, 5.9260E-002, 3.2392E-002, 7.5094E-003, -1.2284E-002, -2.6411E-002, -3.8086E-002, 0.0000E+000],
184                         [-0.0000E+00, -3.3580E-02, -6.8755E-02, -1.0992E-01, -2.4885E-01, -7.3516E-01, -8.1234E-01, -8.6553E-01, -9.0296E-01, -9.2188E-01, -9.6364E-01, -1.0000E+00, -8.2124E-03, 7.2510E-03, -0.0000E+00, 0.0000E+00, 3.3780E-02, 6.5400E-02, 1.0996E-01, 2.3303E-01, 5.4048E-01, 7.4152E-01, 8.1301E-01, 8.6142E-01, 8.8900E-01, 9.0249E-01, 9.2195E-01, 9.3742E-01, 9.6367E-01, 1.0000E+00, 9.9562E-01, 9.8391E-01, 6.4740E-01, 9.9177E-04, -1.1094E-02, 0.0000E+00]]
185                dimensions: ['n_transmitter', 'waveform_time']
186            current_scale_factor: 1.0
187            peak_current: [9.0, 110.0]
188            base_frequency: [210.0, 75.0]
189            on_time: [800E-06, 2500e-6]
190            off_time: [1581E-06, 4167e-6]
191            orientation: [z, z]
192
193        receiver:
194            label: [z, x]
195            orientation: [z, x]
196            coil_low_pass_filter: [628000.0, 250000.0]
197            instrument_low_pass_filter: [500000.0, 500000.0]
198            area:
199                values: [105.0, 115.0]
200                units: m^2
201
202        couplet:
203            transmitters: [lm, hm, lm, hm]
204            receivers: [z, z, x, x]
205            txrx_dx: [-13.25, -13.25, -14.65, -14.65]
206            txrx_dy: [0.0, 0.0, 0.0, 0.0]
207            txrx_dz: [-2.0, 0.0, -2.0, 0.0]
208            data_type: [dBdt, dBdt, dBdt, dBdt]
209            gate_times: [LM_gate_times, HM_gate_times, LM_gate_times, HM_gate_times]
210
211
212magnetic_system:
213    type: system
214    mode: airborne
215    method: magnetic
216    instrument: Geometrics G-822A cesium‑vapor magnetometer 
217
218    prefixes: ['base_magnetometer']
219
220    dimensions:
221        base_mag_locations:
222            standard_name: base_mag_locations
223            long_name: Base Magnetometer Location Index Numbers
224            units: not_defined
225            missing_value: not_defined
226            centers: [1, 2]
227            discrete: True
228
229    variables: 
230
231        transmitter:
232            label: passive
233            description: No artificial magnetic transmitter was used. The system measures the scalar Larmor precession frequency induced by the Earth's magnetic field.
234
235        receiver:
236            label: scalar_magnetometer
237            sensor_type: cesium-vapor split-beam
238            sensor_model: G-822A
239            sensor_manufacturer: Geometrics
240            description: Scalar cesium-vapor magnetometer mounted in the aircraft tail stinger. Measures total magnetic field through Larmor precession frequency.
241            orientation: Tail-stinger mounted; scalar measurement independent of orientation.
242            coordinates: not_reported   
243            lag_correction: Lag was negligible and no lag correction was applied
244            heading_correction: Heading was negligible and no heading correction was applied
245
246        couplet:
247            transmitters: [passive]
248            receivers: [scalar_magnetometer]
249            description: The magnetic measurement system consists of the Earth's field as a passive transmitter and a single scalar magnetometer mounted in the tail stinger.
250
251        base_magnetometer: 
252            label: base_magnetometer
253            description: The base station magnetometer was placed in a location of low magnetic gradient, away from electrical transmission lines and moving metallic objects, such as motor vehicles and aircrafts. 
254
255            location_names:
256                values: ["Door County", "Manitowoc"]
257                dimensions: 'base_mag_locations'
258
259            values:
260                values: [54538, 54194.7]
261                units: nT
262                dimensions: 'base_mag_locations'
263
264            latitude:
265                values: [44.849335, 44.127998]
266                long_name: Latitude in WGS84
267                units: decial degrees
268                dimensions: 'base_mag_locations'
269
270            longitude:
271                values: [87.422440, 87.685524]
272                long_name: Longitude in WGS84
273                units: decial degrees
274                dimensions: 'base_mag_locations'
275            
276            elevation:
277                values: [178.1, 164.4]
278                long_name: Elevation
279                datum: WGS84
280                units: m
281                dimensions: 'base_mag_locations'
282
283        diurnal_correction: Diurnal signal removed using 3 second Fraser low-pass filter and subtracting base-station magnetometer values.
284        tieline_levelling: No tie line-leveling were applied
285        microlevelling: No micro-levelling were applied 
286        igrf_model_date: "2015, 15th generation" 
287        igrf_model_location: variable according to GPS WGS84 longitude and latitude
288        igrf_model_height: variable according to magnetic sensor altitude derived from DGPS data      

Create a Data Branch

data_container = survey.gs.add_container('data', **dict(content = "raw and processed data",
                                                        comment = "<extra info goes here>"))

Attach leaves to the data branch

  1. Raw Data

# Import raw AEM data from CSV-format.
# Define input data file and associated metadata file
d_data1 = join(data_path, 'data//skytem_contractor_data.csv')
d_supp1 = join(data_path, 'data//skytem_contractor_data.yml')

raw_systems = {"skytem_system" : survey["nominal_system"],
          "magnetic_system" : survey["magnetic_system"]}

# Add the raw AEM data as a tabular dataset,
# pass the EM system from the survey
rd = data_container.gs.add(key='raw_data', data_filename=d_data1,
                           metadata_file=d_supp1, system=raw_systems)
  1. Processed Data

# Import processed AEM data from CSV-format.
# Define input data file and associated metadata file
d_data2 = join(data_path, 'data//skytem_processed_data.csv')
d_supp2 = join(data_path, 'data//skytem_processed_data.yml')

Example of how systems can be selected and modified to accurately match the processed data

proc_systems = {"skytem_system" : survey["nominal_system"].isel(lm_gate_times=np.s_[1:],
                                                          hm_gate_times=np.s_[10:]),
          "magnetic_system" : survey["magnetic_system"]}

Add the processed AEM data as a tabular dataset, passing the updated systems

pd = data_container.gs.add(key='processed_data', data_filename=d_data2,
                           metadata_file=d_supp2, system=proc_systems)
Processed Data YAML file
  1dataset_attrs:
  2    content: processed data
  3    comment: This dataset includes processed AEM data produced by USGS
  4    type: data
  5    structure: tabular
  6    mode: airborne
  7    method: electromagnetic, time domain
  8    instrument: skytem
  9
 10coordinates:
 11    x: E_N83WTM
 12    y: N_N83WTM
 13    z: ELEVATION
 14    t: TIMESTAMP
 15
 16
 17variables:
 18    pINDEX:
 19        standard_name: processing_index
 20        long_name: Unique index number for processing
 21        units: not_defined
 22        missing_value: not_defined
 23
 24    sLINE_NO:
 25        standard_name: master_line
 26        long_name: Master line number
 27        units: not_defined
 28        missing_value: not_defined
 29
 30    E_N83WTM:
 31        standard_name: easting_nad83
 32        long_name: Easting, Wisconsin Transverse Mercator (WTM), North American Datum of 1983 (NAD83)
 33        units: meter
 34        missing_value: not_defined
 35
 36    N_N83WTM:
 37        standard_name: northing_nad83
 38        long_name: Northing, Wisconsin Transverse Mercator (WTM), North American Datum of 1983 (NAD83)
 39        units: meter
 40        missing_value: not_defined
 41
 42    TIMESTAMP:
 43        standard_name: timestamp
 44        long_name: Time, decimal days
 45        units: day
 46        missing_value: not_defined
 47        datum: January 1, 1900
 48
 49    RECORD:
 50        standard_name: record
 51        long_name: Workbench record number
 52        units: not_defined
 53        missing_value: not_defined
 54
 55    ELEVATION:
 56        standard_name: elevation
 57        long_name: Digital elevation model
 58        units: meter
 59        missing_value: not_defined
 60        positive: up
 61        datum: North American Vertical Datum of 1988 (NAVD88)
 62
 63    ALT:
 64        standard_name: altitude
 65        long_name: DGPS instrument altitude
 66        units: meter
 67        missing_value: not_defined
 68
 69    NUMDATA:
 70        standard_name: number_of_data
 71        long_name: Number of active time gates
 72        units: not_defined
 73        missing_value: not_defined
 74
 75    LM_Data:
 76        standard_name: em_data_lmz
 77        long_name: EM data, low moment z-component
 78        units: picoVolt per Ampere per meter^4
 79        missing_value: -9999.99
 80        system_couplet: lm_z
 81        dimensions: [index, lm_gate_times]
 82
 83    LM_DataSTD:
 84        standard_name: em_data_error_lmz
 85        long_name: EM data error standard deviation, low moment z-component
 86        units: picoVolt per Ampere per meter^4
 87        missing_value: -9999.99
 88        system_couplet: lm_z
 89        dimensions: [index, lm_gate_times]
 90
 91    HM_Data:
 92        standard_name: em_data_hmz
 93        long_name: EM data, high moment z-component
 94        units: picoVolt per Ampere per meter^4
 95        missing_value: -9999.99
 96        system_couplet: hm_z
 97        dimensions: [index, hm_gate_times]
 98
 99    HM_DataSTD:
100        standard_name: em_data_error_hmz
101        long_name: EM data error standard deviation, high moment z-component
102        units: picoVolt per Ampere per meter^4
103        missing_value: -9999.99
104        system_couplet: hm_z
105        dimensions: [index, hm_gate_times]
106
107    TX_ALTITUDE:
108        standard_name: transmitter_altitude
109        long_name: Processed transmitter altitude
110        units: meter
111        missing_value: -9999.99
112
113    TX_ALTITUDE_STD:
114        standard_name: transmitter_altitude_error
115        long_name: Standard deviation for transmitter altitude
116        units: meter
117        missing_value: -9999.99
118
119    RX_ALTITUDE:
120        standard_name: receiver_altitude
121        long_name: Processed receiver altitude
122        units: meter
123        missing_value: -9999.99
124
125    RX_ALTITUDE_STD:
126        standard_name: receiver_altitude_error
127        long_name: Standard deviation for receiver altitude
128        units: meter
129        missing_value: -9999.99
130
131    txrx_dx:
132        standard_name: txrx_dx
133        long_name: Nominal inline transmitter-receiver offset
134        units: meter
135        missing_value: -9999.99
136
137    txrx_dy:
138        standard_name: txrx_dy
139        long_name: Nominal transverse transmitter-receiver offset
140        units: meter
141        missing_value: -9999.99
142
143    txrx_dz:
144        standard_name: txrx_dz
145        long_name: Calculated vertical transmitter-receiver offset
146        units: meter
147        missing_value: -9999.99
148
149    LINE_NO:
150        standard_name: line_number
151        long_name: Line number
152        units: not_defined
153        missing_value: not_defined

Create a Models Branch

# Create a new container for models
model_container = survey.gs.add_container('models', **dict(content = "Inverted models",
                                                          comment = "This is a test"))
  1. Inverted Models

# Import inverted AEM models from CSV-format.
# Define input data file and associated metadata file
m_data3 = join(data_path, 'model//skytem_inverted_models.csv')
m_supp3 = join(data_path, 'model//skytem_inverted_models.yml')

# Add the inverted AEM models as a tabular dataset
mods = model_container.gs.add(key='inverted_models', data_filename=m_data3,
                              metadata_file=m_supp3)
Inverted Models YAML file
  1dataset_attrs:
  2    content: inverted resistivity models
  3    comment: This dataset includes inverted resistivity models derived from processed AEM data produced by USGS
  4    type: model
  5    structure: tabular
  6    mode: airborne
  7    method: electromagnetic, time domain
  8    instrument: SkyTEM 304M
  9    property: electrical resistivity
 10
 11inversion_parameters:
 12    dataset_attrs:
 13        type: parameters
 14        method: electromagnetic, time domain
 15        instrument: RESOSkyTEM 304MLVE
 16        mode: airborne
 17        property: electrical resistivity
 18
 19    variables:
 20        model_file: WI_SkyTEM_2021_InvertedModels.csv
 21        inversion_software: Aarhus Workbench
 22        software_version: "v 6.0.1.0"
 23        date: "03/2021 - 06/2021"
 24        comment: "Processed data were inverted in Aarhus Workbench software (v 6.0.1.0) using laterally constrained inversion to recover 40-layer fixed depth blocky resistivity models by USGS 03/2021 - 06/2021; Inverted resistivity models were exported to netCDF 11/2021."
 25        data_file: WI_SkyTEM_2021_ProcessedData.csv
 26
 27coordinates:
 28    x: E_N83WTM
 29    y: N_N83WTM
 30    z: ELEVATION
 31    t: TIMESTAMP
 32
 33dimensions:
 34    layer_depth:
 35        standard_name: layer_depth
 36        long_name: Depth to model layer
 37        units: meters
 38        missing_value: not_defined
 39        centers: [0.375,   1.16 ,   2.02 ,
 40                    2.965,   4.005,   5.145,
 41                    6.39 , 7.755,   9.255,
 42                    10.9  ,  12.7  ,  14.675,
 43                    16.845,  19.22 , 21.825,
 44                    24.685,  27.815,  31.25 ,
 45                    35.02 ,  39.15 ,  43.68 ,
 46                    48.65 ,  54.095,  60.065,
 47                    66.615,  73.795,  81.67 ,
 48                    90.31 , 99.78 , 110.16 ,
 49                    121.545, 134.03 , 147.72 ,
 50                    162.73 , 179.19 , 197.24 ,
 51                    217.035, 238.745, 262.55 , 343.75]
 52        bounds: [[  0.0  ,   0.75],
 53                    [  0.75,   1.57],
 54                    [  1.57,   2.47],
 55                    [  2.47,   3.46],
 56                    [  3.46,   4.55],
 57                    [  4.55,   5.74],
 58                    [  5.74,   7.04],
 59                    [  7.04,   8.47],
 60                    [  8.47,  10.04],
 61                    [ 10.04,  11.76],
 62                    [ 11.76,  13.64],
 63                    [ 13.64,  15.71],
 64                    [ 15.71,  17.98],
 65                    [ 17.98,  20.46],
 66                    [ 20.46,  23.19],
 67                    [ 23.19,  26.18],
 68                    [ 26.18,  29.45],
 69                    [ 29.45,  33.05],
 70                    [ 33.05,  36.99],
 71                    [ 36.99,  41.31],
 72                    [ 41.31,  46.05],
 73                    [ 46.05,  51.25],
 74                    [ 51.25,  56.94],
 75                    [ 56.94,  63.19],
 76                    [ 63.19,  70.04],
 77                    [ 70.04,  77.55],
 78                    [ 77.55,  85.79],
 79                    [ 85.79,  94.83],
 80                    [ 94.83, 104.73],
 81                    [104.73, 115.59],
 82                    [115.59, 127.5 ],
 83                    [127.5 , 140.56],
 84                    [140.56, 154.88],
 85                    [154.88, 170.58],
 86                    [170.58, 187.8 ],
 87                    [187.8 , 206.68],
 88                    [206.68, 227.39],
 89                    [227.39, 250.1 ],
 90                    [250.1 , 275.0  ],
 91                    [275.0  , 412.5 ]]
 92
 93variables:
 94    pINDEX:
 95        standard_name: processing_index
 96        long_name: Unique index number for processing
 97        units: not_defined
 98        missing_value: not_defined
 99
100    sLINE_NO:
101        standard_name: master_line
102        long_name: Master line number
103        units: not_defined
104        missing_value: not_defined
105
106    E_N83WTM:
107        standard_name: easting_nad83
108        long_name: Easting, Wisconsin Transverse Mercator (WTM), North American Datum of 1983 (NAD83)
109        units: meter
110        missing_value: not_defined
111        axis: x
112
113    N_N83WTM:
114        standard_name: northing_nad83
115        long_name: Northing, Wisconsin Transverse Mercator (WTM), North American Datum of 1983 (NAD83)
116        units: meter
117        missing_value: not_defined
118        axis: y
119
120    TIMESTAMP:
121        standard_name: timestamp
122        long_name: Time, decimal days since January 1, 1900
123        units: day
124        missing_value: not_defined
125        axis: t
126        datum: January 1, 1900
127
128    RECORD:
129        standard_name: record
130        long_name: Workbench record number
131        units: not_defined
132        missing_value: not_defined
133
134    ELEVATION:
135        standard_name: elevation
136        long_name: Digital elevation model
137        units: meter
138        missing_value: not_defined
139        axis: z
140        positive: up
141        datum: North American Vertical Datum of 1988 (NAVD88)
142
143    ALT:
144        standard_name: altitude
145        long_name: DGPS instrument altitude
146        units: meter
147        missing_value: not_defined
148
149    INVALT:
150        standard_name: inverted_altitude
151        long_name: Inverted instrument altitude
152        units: meter
153        missing_value: not_defined
154
155    INVALTSTD:
156        standard_name: inverted_altitude_uncertainty
157        long_name: Standard deviation of inverted instrument altitude
158        units: meter
159        missing_value: not_defined
160
161    DELTAALT:
162        standard_name: inverted_altitude_difference
163        long_name: Measured minus inverted altitude
164        units: meter
165        missing_value: not_defined
166
167    NUMDATA:
168        standard_name: number_of_data
169        long_name: Number of active time gates
170        units: not_defined
171        missing_value: not_defined
172
173    RESDATA:
174        standard_name: data_residual
175        long_name: Error-weighted inversion data misfit (target = 1.0)
176        units: not_defined
177        missing_value: not_defined
178
179    RESTOTAL:
180        standard_name: total_residual
181        long_name: Total inversion residual (data and model regularization)
182        units: not_defined
183        missing_value: not_defined
184
185    RHO_I:
186        standard_name: layer_resistivity
187        long_name: Inverted layer resistivity
188        units: Ohm*meter
189        missing_value: not_defined
190        dimensions: [index, layer_depth]
191
192    RHO_I_STD:
193        standard_name: layer_resistivity_uncertainty
194        long_name: Uncertainty in inverted layer resistivity
195        units: not_defined
196        missing_value: not_defined
197        dimensions: [index, layer_depth]
198
199    DOI_CONSERVATIVE:
200        standard_name: depth_of_investigation_conservative
201        long_name: Conservative estimate of depth of investigation (DOI)
202        units: meter
203        missing_value: not_defined
204
205    DOI_STANDARD:
206        standard_name: depth_of_investigation_standard
207        long_name: Standard estimate of depth of investigation (DOI)
208        units: meter
209        missing_value: not_defined
210
211    DEP_TOP:
212        standard_name: depth_top
213        long_name: Top of model layers
214        units: meter
215        missing_value: not_defined
216        dimensions: [index, layer_depth]
217
218    DEP_BOT:
219        standard_name: depth_bottom
220        long_name: Bottom of model layers
221        units: meter
222        missing_value: not_defined
223        dimensions: [index, layer_depth]
224
225    LINE_NO:
226        standard_name: line_number
227        long_name: Line number
228        units: not_defined
229        missing_value: not_defined

Derivative Products

  1. Bedrock Picks

Adding bedrock picks to the ‘data’ branch

# Import AEM-based estimated of depth to bedrock from CSV-format.
# Define input data file and associated metadata file
d_data4 = join(data_path, 'data//top_dolomite_blocky_lidar.csv')
d_supp4 = join(data_path, 'data//bedrock_picks.yml')

# Add the AEM-based estimated of depth to bedrock as a tabular dataset
bedrock = data_container.gs.add(key='depth_to_bedrock', data_filename=d_data4,
                                metadata_file=d_supp4)
Bedrock Picks YAML file
 1dataset_attrs:
 2    content: bedrock elevation points
 3    comment: This dataset includes AEM-derived point estimates of the elevation of the top of bedrock produced by USGS
 4    type: data
 5    structure: tabular
 6    mode: airborne
 7    method: electromagnetic
 8    instrument: skytem
 9
10coordinates:
11    x: E_N83WTM
12    y: N_N83WTM
13
14variables:
15    ID:
16        standard_name: identifier
17        long_name: Unique identifier
18        units: not_defined
19        missing_value: not_defined
20
21    E_N83WTM:
22        standard_name: easting
23        long_name: Easting, Wisconsin Transverse Mercator (WTM), North American Datum of 1983 (NAD83)
24        units: meter
25        missing_value: not_defined
26        axis: x
27
28    N_N83WTM:
29        standard_name: northing
30        long_name: Northing, Wisconsin Transverse Mercator (WTM), North American Datum of 1983 (NAD83)
31        units: meter
32        missing_value: not_defined
33        axis: y
34
35    BR_ELEVATION:
36        standard_name: top_bedrock_elevation
37        long_name: Elevation, top of dolomite bedrock, North American Vertical Datum of 1988 (NAVD88)
38        units: meter
39        missing_value: not_defined
40
41    ZSTD:
42        standard_name: elevation_uncertainty
43        long_name: Standard devation of top bedrock elevation
44        units: meter
45        missing_value: not_defined
46
47    OriginType:
48        standard_name: point_origin
49        long_name: Point origin type; 3 = automated pick from resistivity value; 0 = manual pick
50        units: not_defined
51        missing_value: not_defined
52
53    EditDate:
54        standard_name: edit_date
55        long_name: Date of interpretation point
56        units: not_defined
57        format: M/D/YYYY H:MM
58        missing_value: not_defined
59        dtype: str
  1. Raster Maps

Create a 3rd container for the derived raaster maps

derived_maps = survey.gs.add_container('derived_maps', **dict(content = "raster products derived from airborne data and models"))

# Import interpolated bedrock and magnetic maps from TIF-format.
# Define input metadata file (which contains the TIF filenames linked to variable names)
m_supp5 = join(data_path, 'data//magnetics_bedrock_picks.yml')

# Add the interpolated maps as a raster dataset
maps = derived_maps.gs.add(key='maps', metadata_file=m_supp5)
Gridded Maps YAML file
 1dataset_attrs :
 2    content : gridded magnetic and bedrock maps
 3    comment: This dataset includes AEM-derived estimates of the elevation of the top of bedrock produced by USGS
 4    type: data
 5    structure: raster
 6    mode: airborne
 7    method: electromagnetic, time domain
 8    instrument: skytem
 9    property: [total magnetic intensity, depth to bedrock]
10
11coordinates:
12    x: E_Nad83
13    y: N_Nad83
14
15dimensions:
16    x: E_Nad83
17    y: N_Nad83
18
19variables:
20    magnetic_tmi:
21        standard_name: total_magnetic_intensity
22        long_name: Total magnetic intensity, diurnally corrected and filtered
23        units: nanoTesla
24        missing_value: -9999.99
25        files : [mag_tmi.tif]
26        dimensions: [x, y]
27
28    magnetic_rmf:
29        standard_name: residual_magnetic_field
30        long_name: Residual magnetic field, IGRF corrected from 2015 model
31        units: nanoTesla
32        missing_value: -9999.99
33        files : [mag_rmf.tif]
34        dimensions: [x, y]
35
36    bedrock_top_elevation:
37        standard_name: bedrock_top_elevation
38        long_name: Elevation, top of dolomite bedrock, North American Vertical Datum of 1988 (NAVD88)
39        units: foot
40        missing_value: -9999.99
41        files : [top_bedrock.tif]
42        dimensions: [x, y]
43
44    bedrock_depth:
45        standard_name: bedrock_depth
46        long_name: Depth to bedrock
47        units: foot
48        missing_value: -9999.9
49        files : [bedrock_depth.tif]
50        dimensions: [x, y]
51
52    E_Nad83:
53        standard_name: easting_nad83
54        long_name: Easting, Wisconsin Transverse Mercator (WTM), North American Datum of 1983 (NAD83)
55        units: meter
56        missing_value: not_defined
57        axis : x
58
59    N_Nad83:
60        standard_name: northing_nad83
61        long_name: Northing, Wisconsin Transverse Mercator (WTM), North American Datum of 1983 (NAD83)
62        units: meter
63        missing_value: not_defined
64        axis : y

Save to NetCDF file

d_out = join(data_path, 'skytem.nc')
survey.gs.to_netcdf(d_out)

Export just one branch to file

The gspy goal is to have the complete survey in a single file. However, we can also save containers or datasets separately.

data_container.gs.to_netcdf(join(data_path, 'test_datacontainer.nc'))

Opening a GS NetCDF

new_survey = gspy.open_datatree(d_out)['survey']

View the Data Tree

print(new_survey.gs.tree)
/survey
/survey/data
/survey/models
/survey/derived_maps
/survey/data/raw_data
/survey/data/processed_data
/survey/data/depth_to_bedrock
/survey/models/inverted_models
/survey/derived_maps/maps
/survey/data/raw_data/skytem_system
/survey/data/raw_data/magnetic_system
/survey/data/processed_data/skytem_system
/survey/data/processed_data/magnetic_system
/survey/models/inverted_models/inversion_parameters
print(new_survey)
<xarray.DataTree 'survey'>
Group: /survey
│   Dimensions:                 ()
│   Coordinates:
│       spatial_ref             float64 8B ...
│   Data variables:
│       survey_information      float64 8B ...
│       flightline_information  float64 8B ...
│       survey_equipment        float64 8B ...
│   Attributes:
│       type:          survey
│       title:         SkyTEM Airborne Electromagnetic (AEM) Survey, Northeast Wi...
│       institution:   USGS Geology, Geophysics, and Geochemistry Science Center
│       source:        SkyTEM raw data, USGS processed data and inverted resistiv...
│       history:       (1) Data acquisition 01/2021 - 02/2021 by SkyTEM Canada In...
│       references:    Minsley, Burke J., B.R. Bloss, D.J. Hart, W. Fitzpatrick, ...
│       comment:       This dataset includes minimally processed (raw) AEM and ra...
│       summary:       Airborne electromagnetic (AEM) and magnetic survey data we...
│       content:       Wisconsin SkyTEM survey information /survey;  /survey/nomi...
│       gspy_version:  2.2.4
│       conventions:   GS-2.0, CF-1.13
├── Group: /survey/data
│   │   Dimensions:      ()
│   │   Data variables:
│   │       spatial_ref  float64 8B ...
│   │   Attributes:
│   │       content:  raw and processed data
│   │       comment:  <extra info goes here>
│   │       type:     container
│   ├── Group: /survey/data/raw_data
│   │   │   Dimensions:          (index: 2000, hm_gate_times: 32, lm_gate_times: 28)
│   │   │   Coordinates:
│   │   │     * index            (index) float64 16kB 0.0 1.0 2.0 ... 1.998e+03 1.999e+03
│   │   │     * hm_gate_times    (hm_gate_times) float64 256B 2.886e-05 ... 0.003544
│   │   │     * lm_gate_times    (lm_gate_times) float64 224B -1.135e-06 ... 0.001394
│   │   │       spatial_ref      float64 8B ...
│   │   │       x                (index) float64 16kB ...
│   │   │       y                (index) float64 16kB ...
│   │   │       z                (index) float64 16kB ...
│   │   │       t                (index) float64 16kB ...
│   │   │   Data variables: (12/30)
│   │   │       _60hz_intensity  (index) float64 16kB ...
│   │   │       alt              (index) float64 16kB ...
│   │   │       anglex           (index) float64 16kB ...
│   │   │       angley           (index) float64 16kB ...
│   │   │       base_mag         (index) float64 16kB ...
│   │   │       curr_hm          (index) float64 16kB ...
│   │   │       ...               ...
│   │   │       mag_filt         (index) float64 16kB ...
│   │   │       mag_raw          (index) float64 16kB ...
│   │   │       n_wgs84          (index) float64 16kB ...
│   │   │       rmf              (index) float64 16kB ...
│   │   │       time             (index) object 16kB ...
│   │   │       tmi              (index) float64 16kB ...
│   │   │   Attributes:
│   │   │       content:     raw data
│   │   │       comment:     This dataset includes minimally processed (raw) AEM and raw/...
│   │   │       type:        data
│   │   │       structure:   tabular
│   │   │       mode:        airborne
│   │   │       method:      electromagnetic, time domain
│   │   │       instrument:  skytem
│   │   ├── Group: /survey/data/raw_data/skytem_system
│   │   │       Dimensions:                                      (gate_times: 22, nv: 2,
│   │   │                                                         lm_gate_times: 28,
│   │   │                                                         hm_gate_times: 32,
│   │   │                                                         n_loop_vertices: 8, xyz: 3,
│   │   │                                                         n_transmitter: 2,
│   │   │                                                         transmitter_lm_waveform_time: 21,
│   │   │                                                         transmitter_hm_waveform_time: 36,
│   │   │                                                         n_receiver: 2, n_couplet: 4,
│   │   │                                                         dim_0: 1)
│   │   │       Coordinates:
│   │   │         * gate_times                                   (gate_times) float64 176B 5....
│   │   │         * nv                                           (nv) float64 16B 0.0 1.0
│   │   │         * n_loop_vertices                              (n_loop_vertices) float64 64B ...
│   │   │         * xyz                                          (xyz) float64 24B 0.0 1.0 2.0
│   │   │         * n_transmitter                                (n_transmitter) float64 16B ...
│   │   │         * transmitter_lm_waveform_time                 (transmitter_lm_waveform_time) float64 168B ...
│   │   │         * transmitter_hm_waveform_time                 (transmitter_hm_waveform_time) float64 288B ...
│   │   │         * n_receiver                                   (n_receiver) float64 16B 0.0...
│   │   │         * n_couplet                                    (n_couplet) float64 32B 0.0 ...
│   │   │       Dimensions without coordinates: dim_0
│   │   │       Data variables: (12/35)
│   │   │           gate_times_bnds                              (gate_times, nv) float64 352B ...
│   │   │           lm_gate_times_bnds                           (lm_gate_times, nv) float64 448B ...
│   │   │           hm_gate_times_bnds                           (hm_gate_times, nv) float64 512B ...
│   │   │           n_loop_vertices_bnds                         (n_loop_vertices, nv) float64 128B ...
│   │   │           xyz_bnds                                     (xyz, nv) float64 48B ...
│   │   │           transmitter_label                            (n_transmitter) <U2 16B ...
│   │   │           ...                                           ...
│   │   │           couplet_data_type                            (n_couplet) <U4 64B ...
│   │   │           couplet_gate_times                           (n_couplet) <U13 208B ...
│   │   │           data_normalized                              (dim_0) bool 1B ...
│   │   │           skytem_skb_gex_available                     (dim_0) bool 1B ...
│   │   │           reference_frame                              <U26 104B ...
│   │   │           coil_orientations                            <U4 16B ...
│   │   │       Attributes:
│   │   │           type:        system
│   │   │           mode:        airborne
│   │   │           method:      electromagnetic, time domain
│   │   │           instrument:  SkyTEM 304M
│   │   │           name:        nominal_system
│   │   └── Group: /survey/data/raw_data/magnetic_system
│   │           Dimensions:                           (n_transmitter: 1, n_receiver: 1,
│   │                                                  n_couplet: 1, n_base_magnetometer: 1,
│   │                                                  base_mag_locations: 2)
│   │           Coordinates:
│   │             * n_transmitter                     (n_transmitter) float64 8B 0.0
│   │             * n_receiver                        (n_receiver) float64 8B 0.0
│   │             * n_couplet                         (n_couplet) float64 8B 0.0
│   │             * n_base_magnetometer               (n_base_magnetometer) float64 8B 0.0
│   │             * base_mag_locations                (base_mag_locations) float64 16B 1.0 2.0
│   │           Data variables: (12/28)
│   │               transmitter_label                 (n_transmitter) <U7 28B ...
│   │               transmitter_description           (n_transmitter) <U142 568B ...
│   │               receiver_label                    (n_receiver) <U19 76B ...
│   │               receiver_sensor_type              (n_receiver) <U23 92B ...
│   │               receiver_sensor_model             (n_receiver) <U6 24B ...
│   │               receiver_sensor_manufacturer      (n_receiver) <U10 40B ...
│   │               ...                                ...
│   │               diurnal_correction                <U110 440B ...
│   │               tieline_levelling                 <U33 132B ...
│   │               microlevelling                    <U31 124B ...
│   │               igrf_model_date                   <U21 84B ...
│   │               igrf_model_location               <U54 216B ...
│   │               igrf_model_height                 <U69 276B ...
│   │           Attributes:
│   │               type:        system
│   │               mode:        airborne
│   │               method:      magnetic
│   │               instrument:  Geometrics G-822A cesium‑vapor magnetometer
│   │               name:        magnetic_system
│   ├── Group: /survey/data/processed_data
│   │   │   Dimensions:          (index: 2000, lm_gate_times: 27, hm_gate_times: 22)
│   │   │   Coordinates:
│   │   │     * index            (index) float64 16kB 0.0 1.0 2.0 ... 1.998e+03 1.999e+03
│   │   │     * lm_gate_times    (lm_gate_times) float64 216B 3.65e-07 ... 0.001394
│   │   │     * hm_gate_times    (hm_gate_times) float64 176B 5.636e-05 ... 0.003544
│   │   │       spatial_ref      float64 8B ...
│   │   │       x                (index) float64 16kB ...
│   │   │       y                (index) float64 16kB ...
│   │   │       z                (index) float64 16kB ...
│   │   │       t                (index) float64 16kB ...
│   │   │   Data variables: (12/17)
│   │   │       pindex           (index) float64 16kB ...
│   │   │       sline_no         (index) float64 16kB ...
│   │   │       record           (index) float64 16kB ...
│   │   │       alt              (index) float64 16kB ...
│   │   │       numdata          (index) float64 16kB ...
│   │   │       lm_data          (index, lm_gate_times) float64 432kB ...
│   │   │       ...               ...
│   │   │       rx_altitude      (index) float64 16kB ...
│   │   │       rx_altitude_std  (index) float64 16kB ...
│   │   │       txrx_dx          (index) float64 16kB ...
│   │   │       txrx_dy          (index) float64 16kB ...
│   │   │       txrx_dz          (index) float64 16kB ...
│   │   │       line_no          (index) float64 16kB ...
│   │   │   Attributes:
│   │   │       content:     processed data
│   │   │       comment:     This dataset includes processed AEM data produced by USGS
│   │   │       type:        data
│   │   │       structure:   tabular
│   │   │       mode:        airborne
│   │   │       method:      electromagnetic, time domain
│   │   │       instrument:  skytem
│   │   ├── Group: /survey/data/processed_data/skytem_system
│   │   │       Dimensions:                                      (gate_times: 22, nv: 2,
│   │   │                                                         lm_gate_times: 27,
│   │   │                                                         hm_gate_times: 22,
│   │   │                                                         n_loop_vertices: 8, xyz: 3,
│   │   │                                                         n_transmitter: 2,
│   │   │                                                         transmitter_lm_waveform_time: 21,
│   │   │                                                         transmitter_hm_waveform_time: 36,
│   │   │                                                         n_receiver: 2, n_couplet: 4,
│   │   │                                                         dim_0: 1)
│   │   │       Coordinates:
│   │   │         * gate_times                                   (gate_times) float64 176B 5....
│   │   │         * nv                                           (nv) float64 16B 0.0 1.0
│   │   │         * n_loop_vertices                              (n_loop_vertices) float64 64B ...
│   │   │         * xyz                                          (xyz) float64 24B 0.0 1.0 2.0
│   │   │         * n_transmitter                                (n_transmitter) float64 16B ...
│   │   │         * transmitter_lm_waveform_time                 (transmitter_lm_waveform_time) float64 168B ...
│   │   │         * transmitter_hm_waveform_time                 (transmitter_hm_waveform_time) float64 288B ...
│   │   │         * n_receiver                                   (n_receiver) float64 16B 0.0...
│   │   │         * n_couplet                                    (n_couplet) float64 32B 0.0 ...
│   │   │       Dimensions without coordinates: dim_0
│   │   │       Data variables: (12/35)
│   │   │           gate_times_bnds                              (gate_times, nv) float64 352B ...
│   │   │           lm_gate_times_bnds                           (lm_gate_times, nv) float64 432B ...
│   │   │           hm_gate_times_bnds                           (hm_gate_times, nv) float64 352B ...
│   │   │           n_loop_vertices_bnds                         (n_loop_vertices, nv) float64 128B ...
│   │   │           xyz_bnds                                     (xyz, nv) float64 48B ...
│   │   │           transmitter_label                            (n_transmitter) <U2 16B ...
│   │   │           ...                                           ...
│   │   │           couplet_data_type                            (n_couplet) <U4 64B ...
│   │   │           couplet_gate_times                           (n_couplet) <U13 208B ...
│   │   │           data_normalized                              (dim_0) bool 1B ...
│   │   │           skytem_skb_gex_available                     (dim_0) bool 1B ...
│   │   │           reference_frame                              <U26 104B ...
│   │   │           coil_orientations                            <U4 16B ...
│   │   │       Attributes:
│   │   │           type:        system
│   │   │           mode:        airborne
│   │   │           method:      electromagnetic, time domain
│   │   │           instrument:  SkyTEM 304M
│   │   │           name:        nominal_system
│   │   └── Group: /survey/data/processed_data/magnetic_system
│   │           Dimensions:                           (n_transmitter: 1, n_receiver: 1,
│   │                                                  n_couplet: 1, n_base_magnetometer: 1,
│   │                                                  base_mag_locations: 2)
│   │           Coordinates:
│   │             * n_transmitter                     (n_transmitter) float64 8B 0.0
│   │             * n_receiver                        (n_receiver) float64 8B 0.0
│   │             * n_couplet                         (n_couplet) float64 8B 0.0
│   │             * n_base_magnetometer               (n_base_magnetometer) float64 8B 0.0
│   │             * base_mag_locations                (base_mag_locations) float64 16B 1.0 2.0
│   │           Data variables: (12/28)
│   │               transmitter_label                 (n_transmitter) <U7 28B ...
│   │               transmitter_description           (n_transmitter) <U142 568B ...
│   │               receiver_label                    (n_receiver) <U19 76B ...
│   │               receiver_sensor_type              (n_receiver) <U23 92B ...
│   │               receiver_sensor_model             (n_receiver) <U6 24B ...
│   │               receiver_sensor_manufacturer      (n_receiver) <U10 40B ...
│   │               ...                                ...
│   │               diurnal_correction                <U110 440B ...
│   │               tieline_levelling                 <U33 132B ...
│   │               microlevelling                    <U31 124B ...
│   │               igrf_model_date                   <U21 84B ...
│   │               igrf_model_location               <U54 216B ...
│   │               igrf_model_height                 <U69 276B ...
│   │           Attributes:
│   │               type:        system
│   │               mode:        airborne
│   │               method:      magnetic
│   │               instrument:  Geometrics G-822A cesium‑vapor magnetometer
│   │               name:        magnetic_system
│   └── Group: /survey/data/depth_to_bedrock
│           Dimensions:       (index: 82864)
│           Coordinates:
│             * index         (index) float64 663kB 0.0 1.0 2.0 ... 8.286e+04 8.286e+04
│               spatial_ref   float64 8B ...
│               x             (index) float64 663kB ...
│               y             (index) float64 663kB ...
│           Data variables:
│               id            (index) float64 663kB ...
│               br_elevation  (index) float64 663kB ...
│               zstd          (index) float64 663kB ...
│               origintype    (index) float64 663kB ...
│               editdate      (index) object 663kB ...
│           Attributes:
│               content:     bedrock elevation points
│               comment:     This dataset includes AEM-derived point estimates of the ele...
│               type:        data
│               structure:   tabular
│               mode:        airborne
│               method:      electromagnetic
│               instrument:  skytem
├── Group: /survey/models
│   │   Dimensions:      ()
│   │   Data variables:
│   │       spatial_ref  float64 8B ...
│   │   Attributes:
│   │       content:  Inverted models
│   │       comment:  This is a test
│   │       type:     container
│   └── Group: /survey/models/inverted_models
│       │   Dimensions:           (layer_depth: 40, nv: 2, index: 2000)
│       │   Coordinates:
│       │     * layer_depth       (layer_depth) float64 320B 0.375 1.16 2.02 ... 262.6 343.8
│       │     * nv                (nv) float64 16B 0.0 1.0
│       │     * index             (index) float64 16kB 0.0 1.0 2.0 ... 1.998e+03 1.999e+03
│       │       spatial_ref       float64 8B ...
│       │       x                 (index) float64 16kB ...
│       │       y                 (index) float64 16kB ...
│       │       z                 (index) float64 16kB ...
│       │       t                 (index) float64 16kB ...
│       │   Data variables: (12/18)
│       │       layer_depth_bnds  (layer_depth, nv) float64 640B ...
│       │       pindex            (index) float64 16kB ...
│       │       sline_no          (index) float64 16kB ...
│       │       record            (index) float64 16kB ...
│       │       alt               (index) float64 16kB ...
│       │       invalt            (index) float64 16kB ...
│       │       ...                ...
│       │       rho_i_std         (index, layer_depth) float64 640kB ...
│       │       dep_top           (index, layer_depth) float64 640kB ...
│       │       dep_bot           (index, layer_depth) float64 640kB ...
│       │       doi_conservative  (index) float64 16kB ...
│       │       doi_standard      (index) float64 16kB ...
│       │       line_no           (index) float64 16kB ...
│       │   Attributes:
│       │       content:     inverted resistivity models
│       │       comment:     This dataset includes inverted resistivity models derived fr...
│       │       type:        model
│       │       structure:   tabular
│       │       mode:        airborne
│       │       method:      electromagnetic, time domain
│       │       instrument:  SkyTEM 304M
│       │       property:    electrical resistivity
│       └── Group: /survey/models/inverted_models/inversion_parameters
│               Dimensions:             ()
│               Data variables:
│                   model_file          <U33 132B ...
│                   inversion_software  <U16 64B ...
│                   software_version    <U9 36B ...
│                   date                <U17 68B ...
│                   comment             <U253 1kB ...
│                   data_file           <U32 128B ...
│               Attributes:
│                   type:        parameters
│                   method:      electromagnetic, time domain
│                   instrument:  RESOSkyTEM 304MLVE
│                   mode:        airborne
│                   property:    electrical resistivity
│                   name:        inversion_parameters
└── Group: /survey/derived_maps
    │   Dimensions:      ()
    │   Data variables:
    │       spatial_ref  float64 8B ...
    │   Attributes:
    │       content:  raster products derived from airborne data and models
    │       type:     container
    └── Group: /survey/derived_maps/maps
            Dimensions:                (x: 799, nv: 2, y: 1155)
            Coordinates:
              * x                      (x) float64 6kB 6.551e+05 6.552e+05 ... 7.349e+05
              * nv                     (nv) float64 16B 0.0 1.0
              * y                      (y) float64 9kB 4.953e+05 4.952e+05 ... 3.799e+05
                spatial_ref            float64 8B ...
            Data variables:
                x_bnds                 (x, nv) float64 13kB ...
                y_bnds                 (y, nv) float64 18kB ...
                magnetic_tmi           (y, x) float64 7MB ...
                magnetic_rmf           (y, x) float64 7MB ...
                bedrock_top_elevation  (y, x) float32 4MB ...
                bedrock_depth          (y, x) float32 4MB ...
            Attributes:
                content:     gridded magnetic and bedrock maps
                comment:     This dataset includes AEM-derived estimates of the elevation...
                type:        data
                structure:   raster
                mode:        airborne
                method:      electromagnetic, time domain
                instrument:  skytem
                property:    ['total magnetic intensity', 'depth to bedrock']

Plotting Examples

plt.figure()
new_survey['data']['raw_data']['height'].plot()
plt.tight_layout()
spatial_ref = 0.0
pcd = new_survey['data']['processed_data']
plt.figure()
pcd['tx_altitude'].plot()
plt.tight_layout()
spatial_ref = 0.0
m = new_survey['derived_maps']['maps']
plt.figure()
m['magnetic_tmi'].plot(cmap='jet')
plt.tight_layout()

plt.show()
spatial_ref = 0.0

Total running time of the script: (0 minutes 1.498 seconds)

Gallery generated by Sphinx-Gallery