satpy.readers.gms.gms5_vissr_l1b module

Reader for GMS-5 VISSR Level 1B data.


The gms5_vissr_l1b reader can decode, navigate and calibrate Level 1B data from the Visible and Infrared Spin Scan Radiometer (VISSR) in VISSR archive format. Corresponding platforms are GMS-5 (Japanese Geostationary Meteorological Satellite) and GOES-09 (2003-2006 backup after MTSAT-1 launch failure).

VISSR has four channels, each stored in a separate file:


This is how to read them with Satpy:

from satpy import Scene
import glob

filenames = glob.glob(""/data/VISSR*")
scene = Scene(filenames, reader="gms5-vissr_l1b")
scene.load(["VIS", "IR1"])


Details about platform, instrument and data format can be found in the following references:


Gzip-compressed VISSR files can be decompressed on the fly using FSFile:

import fsspec
from satpy import Scene
from satpy.readers import FSFile

filename = "VISSR_19960217_2331_IR1.A.IMG.gz"
open_file =, compression="gzip")
fs_file = FSFile(open_file)
scene = Scene([fs_file], reader="gms5-vissr_l1b")


Sensor counts are calibrated by looking up reflectance/temperature values in the calibration tables included in each file. See section 2.2 in the VISSR user guide.

Space Pixels

VISSR produces data for pixels outside the Earth disk (i.e. atmospheric limb or deep space pixels). By default, these pixels are masked out as they contain data of limited or no value, but some applications do require these pixels. To turn off masking, set mask_space=False upon scene creation:

import satpy
import glob

filenames = glob.glob("VISSR*.IMG")
scene = satpy.Scene(filenames,
                    reader_kwargs={"mask_space": False})
scene.load(["VIS", "IR1])


Dataset attributes include metadata such as time and orbital parameters, see Metadata.

Partial Scans

Between 2001 and 2003 VISSR also recorded partial scans of the northern hemisphere. On demand a special Typhoon schedule would be activated between 03:00 and 05:00 UTC.

class satpy.readers.gms.gms5_vissr_l1b.AreaDefEstimator(coord_conv_params, metadata)[source]

Bases: object

Estimate area definition for VISSR images.

Initialize the area definition estimator.

  • coord_conv_params – Coordinate conversion parameters

  • metadata – VISSR file metadata

full_disk_size = {'IR': 2366, 'VIS': 9464}

Get full disk area definition with uniform sampling.


dataset_id – ID of the corresponding dataset.

class satpy.readers.gms.gms5_vissr_l1b.Calibrator(calib_table)[source]

Bases: object

Calibrate VISSR data to reflectance or brightness temperature.

Reference: Section 2.2 in the VISSR User Guide.

Initialize the calibrator.


calib_table – Calibration table

_lookup_calib_table(counts, calib_table)[source]
_make_data_array(interp, counts)[source]
_postproc(res, calibration)[source]
calibrate(counts, calibration)[source]

Transform counts to given calibration level.

class satpy.readers.gms.gms5_vissr_l1b.GMS5VISSRFileHandler(filename, filename_info, filetype_info, mask_space=True)[source]

Bases: BaseFileHandler

File handler for GMS-5 VISSR data in VISSR archive format.

Initialize the file handler.

  • filename – Name of file to be read

  • filename_info – Information obtained from filename

  • filetype_info – Information about file type

  • mask_space – Mask space pixels.

_attach_lons_lats(dataset, dataset_id)[source]
_calibrate(counts, dataset_id)[source]
static _concat_orbit_prediction(orb_pred_1, orb_pred_2)[source]

Concatenate orbit prediction data.

It is split over two image parameter blocks in the header.

property _coord_conv
static _get_channel_type(parameter_block_size)[source]
_get_lons_lats(dataset, dataset_id)[source]

Get predictions of time-dependent navigation parameters.


Get static navigation parameters.

Note that, “central_line_number_of_vissr_frame” is different for each channel, even if their spatial resolution is identical. For example:

VIS: 5513.0 IR1: 1378.5 IR2: 1378.7 IR3: 1379.1001

_make_lons_lats_data_array(lons, lats)[source]
_mask_space_pixels(dataset, space_masker)[source]
property _mode_block
static _read_image_param(file_obj, param, channel_type)[source]

Read a single image parameter block from the header.

_read_image_params(file_obj, channel_type)[source]

Read image parameters from the header.

_update_attrs(dataset, dataset_id, ds_info)[source]
property end_time

Nominal end time of the dataset.

get_dataset(dataset_id, ds_info)[source]

Get dataset from file.

property start_time

Nominal start time of the dataset.

class satpy.readers.gms.gms5_vissr_l1b.SpaceMasker(image_data, channel)[source]

Bases: object

Mask pixels outside the earth disk.

Initialize the space masker.

  • image_data – Image data

  • channel – Channel name


Correct VIS edges.

VIS data contains earth edges of IR channel. Compensate for that by scaling with a factor of 4 (1 IR pixel ~ 4 VIS pixels).

_fill_value = -1

Mask space pixels in the given dataset.

satpy.readers.gms.gms5_vissr_l1b._recarr2dict(arr, preserve=None)[source]
satpy.readers.gms.gms5_vissr_l1b.get_earth_mask(shape, earth_edges, fill_value=-1)[source]

Get binary mask where 1/0 indicates earth/space.

  • shape – Image shape

  • earth_edges – First and last earth pixel in each scanline

  • fill_value – Fill value for scanlines not intersecting the earth.


Check if it’s the visible channel.

satpy.readers.gms.gms5_vissr_l1b.read_from_file_obj(file_obj, dtype, count, offset=0)[source]

Read data from file object.

  • file_obj – An open file object.

  • dtype – Data type to be read.

  • count – Number of elements to be read.

  • offset – Byte offset where to start reading.