Usage

Through Satpy

The preferred way of using Pygac is through Satpy. Results are returned as dask-friendly xarray DataArrays with proper dataset/coordinate names and additional metadata. It is also possible to select a user-defined range of scanlines. Furthermore, Satpy provides many options for resampling, visualizing and saving the data.

import satpy

# Channel set for KLM satellites. For POD satellites the channels are
# ['1', '2', '3', '4', '5'].
channels = ['1', '2', '3a', '3b', '4', '5']
ancillary = ['solar_zenith_angle',
             'sensor_zenith_angle',
             'solar_azimuth_angle',
             'sensor_azimuth_angle',
             'sun_sensor_azimuth_difference_angle',
             'qual_flags',
             'latitude',
             'longitude']

scene = satpy.Scene(filenames=['NSS.GHRR.NP.D15361.S0121.E0315.B3547172.SV'],
                    reader='avhrr_l1b_gaclac',
                    reader_kwargs={'tle_dir': '/path/to/tle/',
                                   'tle_name': 'TLE_%(satname)s.txt'})
scene.load(channels + ancillary)

For a list of Satpy reader keyword arguments see satpy.readers.avhrr_l1b_gaclac and for further Pygac reader keyword arguments see pygac.reader.Reader. Especially it is possible to choose a different version of calibration coefficients or even specify your own.

Direct Usage

Alternatively you can also use Pygac directly.

from pygac import get_reader_cls

filename = 'NSS.GHRR.NP.D15361.S0121.E0315.B3547172.SV'
reader_cls = get_reader_cls(filename)
reader = reader_cls(tle_dir='/path/to/tle', tle_name='TLE_%(satname)s.txt')
reader.read(filename)

channels = reader.get_calibrated_channels()
lons, lats = reader.get_lonlat()
scanline_times = reader.get_times()
bad_quality_lines = reader.mask

Legacy CLI

Note

Usage of the legacy command line program pygac-run is deprecated in favour of the above options.

There is also a legacy command line program pygac-run which saves the results to HDF5 and requires a configuration file.

Copy the template file etc/pygac.cfg.template to pygac.cfg and place it in a directory as you please. Set the environment variable PYGAC_CONFIG_FILE pointing to the file. e.g.

PYGAC_CONFIG_FILE=/home/user/pygac.cfg; export PYGAC_CONFIG_FILE

Also adapt the configuration file to your needs. The tledir parameter should be set to where your Two Line Element (TLE) files are located.

Then call pygac-run on a GAC/LAC file.

pygac-run testdata/NSS.GHRR.NL.D02187.S1904.E2058.B0921517.GC 0 0

The last two digits are the start and end scanline numbers, thus specifying the portion of the GAC orbit that user wants to process. The first scanline number starts at 0. If zeroes are specified at both locations, then the entire orbit will be processed.

The result will be three hdf5 files, one with the calibrated AVHRR data, the other with sun-satellite viewing geometry data and this third with scanline quality information.