satpy.readers.goes_imager_nc module

Reader for GOES 8-15 imager data in netCDF format from NOAA CLASS.

Also handles GOES 15 data in netCDF format reformated by Eumetsat

GOES Imager netCDF files contain geolocated detector counts. If ordering via NOAA CLASS, select 16 bits/pixel. The instrument oversamples the viewed scene in E-W direction by a factor of 1.75: IR/VIS pixels are 112/28 urad on a side, but the instrument samples every 64/16 urad in E-W direction (see [BOOK-I] and [BOOK-N]).

Important note: Some essential information are missing in the netCDF files, which might render them inappropriate for certain applications. The unknowns are:

  1. Subsatellite point

  2. Calibration coefficients

  3. Detector-scanline assignment, i.e. information about which scanline was recorded by which detector

Items 1. and 2. are not critical because the images are geo-located and NOAA provides static calibration coefficients ([VIS], [IR]). The detector-scanline assignment however cannot be reconstructed properly. This is where an approximation has to be applied (see below).

Calibration

Calibration is performed according to [VIS] and [IR], but with an average calibration coefficient applied to all detectors in a certain channel. The reason for and impact of this approximation is described below.

The GOES imager simultaneously records multiple scanlines per sweep using multiple detectors per channel. The VIS channel has 8 detectors, the IR channels have 1-2 detectors (see e.g. Figures 3-5a/b, 3-6a/b and 3-7/a-b in [BOOK-N]). Each detector has its own calibration coefficients, so in order to perform an accurate calibration, the detector-scanline assignment is needed.

In theory it is known which scanline was recorded by which detector (VIS: 5,6,7,8,1,2,3,4; IR: 1,2). However, the plate on which the detectors are mounted flexes due to thermal gradients in the instrument which leads to a N-S shift of +/- 8 visible or +/- 2 IR pixels. This shift is compensated in the GVAR scan formation process, but in a way which is hard to reconstruct properly afterwards. See [GVAR], section 3.2.1. for details.

Since the calibration coefficients of the detectors in a certain channel only differ slightly, a workaround is to calibrate each scanline with the average calibration coefficients. A worst case estimate of the introduced error can be obtained by calibrating all possible counts with both the minimum and the maximum calibration coefficients and computing the difference. The maximum differences are:

GOES-8

Channel

Diff

Unit

00_7

0.0

% # Counts are normalized

03_9

0.187

K

06_8

0.0

K # only one detector

10_7

0.106

K

12_0

0.036

K

GOES-9

Channel

Diff

Unit

00_7

0.0

% # Counts are normalized

03_9

0.0

K # coefs identical

06_8

0.0

K # only one detector

10_7

0.021

K

12_0

0.006

K

GOES-10

Channel

Diff

Unit

00_7

1.05

%

03_9

0.0

K # coefs identical

06_8

0.0

K # only one detector

10_7

0.013

K

12_0

0.004

K

GOES-11

Channel

Diff

Unit

00_7

1.25

%

03_9

0.0

K # coefs identical

06_8

0.0

K # only one detector

10_7

0.0

K # coefs identical

12_0

0.065

K

GOES-12

Channel

Diff

Unit

00_7

0.8

%

03_9

0.0

K # coefs identical

06_5

0.044

K

10_7

0.0

K # coefs identical

13_3

0.0

K # only one detector

GOES-13

Channel

Diff

Unit

00_7

1.31

%

03_9

0.0

K # coefs identical

06_5

0.085

K

10_7

0.008

K

13_3

0.0

K # only one detector

GOES-14

Channel

Diff

Unit

00_7

0.66

%

03_9

0.0

K # coefs identical

06_5

0.043

K

10_7

0.006

K

13_3

0.003

K

GOES-15

Channel

Diff

Unit

00_7

0.86

%

03_9

0.0

K # coefs identical

06_5

0.02

K

10_7

0.009

K

13_3

0.008

K

References: - [GVAR] https://goes.gsfc.nasa.gov/text/GVARRDL98.pdf - [BOOK-N] https://goes.gsfc.nasa.gov/text/GOES-N_Databook/databook.pdf - [BOOK-I] https://goes.gsfc.nasa.gov/text/databook/databook.pdf - [IR] https://www.ospo.noaa.gov/Operations/GOES/calibration/gvar-conversion.html - [VIS] https://www.ospo.noaa.gov/Operations/GOES/calibration/goes-vis-ch-calibration.html - [FAQ] https://www.ncdc.noaa.gov/sites/default/files/attachments/Satellite-Frequently-Asked-Questions_2.pdf - [SCHED-W] http://www.ospo.noaa.gov/Operations/GOES/west/imager-routine.html - [SCHED-E] http://www.ospo.noaa.gov/Operations/GOES/east/imager-routine.html

Eumetsat formatted netCDF data:

The main differences are:

  1. The geolocation is in a separate file, used for all bands

  2. VIS data is calibrated to Albedo (or reflectance)

  3. IR data is calibrated to radiance.

  4. VIS data is downsampled to IR resolution (4km)

  5. File name differs also slightly

  6. Data is received via EumetCast

class satpy.readers.goes_imager_nc.GOESCoefficientReader(ir_url, vis_url)[source]

Bases: object

Read GOES Imager calibration coefficients from NOAA reference HTMLs.

Init the coef reader.

get_coefs(platform, channel)[source]

Get the coefs.

gvar_channels = {'GOES-10': {'00_7': 1, '03_9': 2, '06_8': 3, '10_7': 4, '12_0': 5}, 'GOES-11': {'00_7': 1, '03_9': 2, '06_8': 3, '10_7': 4, '12_0': 5}, 'GOES-12': {'00_7': 1, '03_9': 2, '06_5': 3, '10_7': 4, '13_3': 6}, 'GOES-13': {'00_7': 1, '03_9': 2, '06_5': 3, '10_7': 4, '13_3': 6}, 'GOES-14': {'00_7': 1, '03_9': 2, '06_5': 3, '10_7': 4, '13_3': 6}, 'GOES-15': {'00_7': 1, '03_9': 2, '06_5': 3, '10_7': 4, '13_3': 6}, 'GOES-8': {'00_7': 1, '03_9': 2, '06_8': 3, '10_7': 4, '12_0': 5}, 'GOES-9': {'00_7': 1, '03_9': 2, '06_8': 3, '10_7': 4, '12_0': 5}}
ir_tables = {'GOES-10': '2-3', 'GOES-11': '2-4', 'GOES-12': '2-5a', 'GOES-13': '2-6', 'GOES-14': '2-7c', 'GOES-15': '2-8b', 'GOES-8': '2-1', 'GOES-9': '2-2'}
vis_tables = {'GOES-10': 'Table 2.', 'GOES-11': 'Table 3.', 'GOES-12': 'Table 4.', 'GOES-13': 'Table 5.', 'GOES-14': 'Table 6.', 'GOES-15': 'Table 7.', 'GOES-8': 'Table 1.', 'GOES-9': 'Table 1.'}
class satpy.readers.goes_imager_nc.GOESEUMGEONCFileHandler(filename, filename_info, filetype_info)[source]

Bases: satpy.readers.file_handlers.BaseFileHandler

File handler for GOES Geolocation data in EUM netCDF format.

Initialize the reader.

get_dataset(key, info)[source]

Load dataset designated by the given key from file.

property resolution

Specify the spatial resolution of the dataset.

In the EUMETSAT format VIS data is downsampled to IR resolution (4km).

class satpy.readers.goes_imager_nc.GOESEUMNCFileHandler(filename, filename_info, filetype_info, geo_data)[source]

Bases: satpy.readers.goes_imager_nc.GOESNCBaseFileHandler

File handler for GOES Imager data in EUM netCDF format.

TODO: Remove datasets which are not available in the file (counts, VIS radiance) via available_datasets() -> See #434

Initialize the reader.

calibrate(data, calibration, channel)[source]

Perform calibration.

get_dataset(key, info)[source]

Load dataset designated by the given key from file.

ir_sectors = {(566, 3464): 'Southern Hemisphere (GOES-East)', (1062, 2760): 'Southern Hemisphere (GOES-West)', (1354, 3312): 'Northern Hemisphere (GOES-West)', (1826, 3464): 'Northern Hemisphere (GOES-East)', (2704, 5208): 'Full Disc'}
vis_sectors = {(566, 3464): 'Southern Hemisphere (GOES-East)', (1062, 2760): 'Southern Hemisphere (GOES-West)', (1354, 3312): 'Northern Hemisphere (GOES-West)', (1826, 3464): 'Northern Hemisphere (GOES-East)', (2704, 5208): 'Full Disc'}
class satpy.readers.goes_imager_nc.GOESNCBaseFileHandler(filename, filename_info, filetype_info, geo_data=None)[source]

Bases: satpy.readers.file_handlers.BaseFileHandler

File handler for GOES Imager data in netCDF format.

Initialize the reader.

available_datasets(configured_datasets=None)[source]

Update information for or add datasets provided by this file.

If this file handler can load a dataset then it will supplement the dataset info with the resolution and possibly coordinate datasets needed to load it. Otherwise it will continue passing the dataset information down the chain.

See satpy.readers.file_handlers.BaseFileHandler.available_datasets() for details.

abstract calibrate(data, calibration, channel)[source]

Perform calibration.

property end_time

End timestamp of the dataset.

abstract get_dataset(key, info)[source]

Load dataset designated by the given key from file.

get_shape(key, info)[source]

Get the shape of the data.

Returns

Number of lines, number of columns

abstract property ir_sectors

Get the ir sectors.

property meta

Derive metadata from the coordinates.

property resolution

Specify the spatial resolution of the dataset.

Channel 13_3’s spatial resolution changes from one platform to another while the wavelength and file format remain the same. In order to avoid multiple YAML reader definitions for the same file format, read the channel’s resolution from the file instead of defining it in the YAML dataset. This information will then be used by the YAML reader to complement the YAML definition of the dataset.

Returns

Spatial resolution in kilometers

property start_time

Start timestamp of the dataset.

abstract property vis_sectors

Get the vis sectors.

class satpy.readers.goes_imager_nc.GOESNCFileHandler(filename, filename_info, filetype_info)[source]

Bases: satpy.readers.goes_imager_nc.GOESNCBaseFileHandler

File handler for GOES Imager data in netCDF format.

Initialize the reader.

calibrate(counts, calibration, channel)[source]

Perform calibration.

get_dataset(key, info)[source]

Load dataset designated by the given key from file.

ir_sectors = {(566, 3464): 'Southern Hemisphere (GOES-East)', (1062, 2760): 'Southern Hemisphere (GOES-West)', (1354, 3312): 'Northern Hemisphere (GOES-West)', (1826, 3464): 'Northern Hemisphere (GOES-East)', (2704, 5208): 'Full Disc'}
vis_sectors = {(2267, 13852): 'Southern Hemisphere (GOES-East)', (4251, 11044): 'Southern Hemisphere (GOES-West)', (5419, 13244): 'Northern Hemisphere (GOES-West)', (7307, 13852): 'Northern Hemisphere (GOES-East)', (10819, 20800): 'Full Disc'}
satpy.readers.goes_imager_nc.test_coefs(ir_url, vis_url)[source]

Test calibration coefficients against NOAA reference pages.

Currently the reference pages are:

ir_url = https://www.ospo.noaa.gov/Operations/GOES/calibration/gvar-conversion.html vis_url = https://www.ospo.noaa.gov/Operations/GOES/calibration/goes-vis-ch-calibration.html

Parameters
  • ir_url – Path or URL to HTML page with IR coefficients

  • vis_url – Path or URL to HTML page with VIS coefficients

Raises

ValueError if coefficients don't match the reference