Source code for satpy.tests.reader_tests.test_viirs_vgac_l1c_nc

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright (c) 2023- Satpy developers
#
# satpy is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# satpy is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with satpy.  If not, see <http://www.gnu.org/licenses/>.
"""The viirs_vgac_l1b_nc reader tests package.

This version tests the readers for VIIIRS VGAC data preliminary version.

"""


import datetime

import numpy as np
import pytest
from netCDF4 import Dataset


[docs] @pytest.fixture def _nc_filename(tmp_path): now = datetime.datetime.utcnow() filename = f'VGAC_VJ10XMOD_A{now:%Y%j_%H%M}_n004946_K005.nc' filename_str = str(tmp_path / filename) # Create test data with Dataset(filename_str, 'w') as nc: nscn = 7 npix = 800 n_lut = 12000 nc.createDimension('npix', npix) nc.createDimension('nscn', nscn) nc.createDimension('n_lut', n_lut) nc.StartTime = "2023-03-28T09:08:07" nc.EndTime = "2023-03-28T10:11:12" for ind in range(1, 11, 1): ch_name = "M{:02d}".format(ind) r_a = nc.createVariable(ch_name, np.int16, dimensions=('nscn', 'npix')) r_a[:] = np.ones((nscn, npix)) * 10 attrs = {'scale_factor': 0.1, 'units': 'percent'} for attr in attrs: setattr(r_a, attr, attrs[attr]) for ind in range(12, 17, 1): ch_name = "M{:02d}".format(ind) tb_b = nc.createVariable(ch_name, np.int16, dimensions=('nscn', 'npix')) tb_b[:] = np.ones((nscn, npix)) * 800 attrs = {'units': 'radiances', 'scale_factor': 0.002} for attr in attrs: setattr(tb_b, attr, attrs[attr]) tb_lut = nc.createVariable(ch_name + "_LUT", np.float32, dimensions=('n_lut')) tb_lut[:] = np.array(range(0, n_lut)) * 0.5 return filename_str
[docs] class TestVGACREader: """Test the VGACFileHandler reader."""
[docs] def test_read_vgac(self, _nc_filename): """Test reading reflectances and BT.""" from satpy.scene import Scene # Read data scn_ = Scene( reader='viirs_vgac_l1c_nc', filenames=[_nc_filename]) scn_.load(["M05", "M15"]) assert (scn_["M05"][0, 0] == 100) assert (scn_["M15"][0, 0] == 400) assert scn_.start_time == datetime.datetime(year=2023, month=3, day=28, hour=9, minute=8, second=7) assert scn_.end_time == datetime.datetime(year=2023, month=3, day=28, hour=10, minute=11, second=12)