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:
Subsatellite point
Calibration coefficients
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:
The geolocation is in a separate file, used for all bands
VIS data is calibrated to Albedo (or reflectance)
IR data is calibrated to radiance.
VIS data is downsampled to IR resolution (4km)
File name differs also slightly
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.
- 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:
BaseFileHandler
File handler for GOES Geolocation data in EUM netCDF format.
Initialize the reader.
- 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:
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.
- 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:
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.
- property end_time
End timestamp of the dataset.
- 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:
GOESNCBaseFileHandler
File handler for GOES Imager data in netCDF format.
Initialize the reader.
- 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 –