def setUp(self, new_fh_init):
     """Setup the hrit file handler for testing."""
     blob = '$HALFTONE:=10\r\n_NAME:=albedo\r\n_UNIT:=percent\r\n0:=0.0\r\n1023:=100.0\r\n'.encode()
     mda = {'projection_parameters': {'SSP_longitude': -123.0},
            'spectral_channel_id': 1,
            'image_data_function': blob}
     HRITGOESFileHandler.filename = 'filename'
     HRITGOESFileHandler.mda = mda
     self.prologue = mock.MagicMock()
     self.prologue.prologue = test_pro
     self.reader = HRITGOESFileHandler('filename', {}, {}, self.prologue)
Exemple #2
0
class TestHRITGOESFileHandler(unittest.TestCase):
    """Test the HRITFileHandler."""
    @mock.patch('satpy.readers.goes_imager_hrit.HRITFileHandler.__init__')
    def setUp(self, new_fh_init):
        """Set up the hrit file handler for testing."""
        blob = '$HALFTONE:=10\r\n_NAME:=albedo\r\n_UNIT:=percent\r\n0:=0.0\r\n1023:=100.0\r\n'.encode(
        )
        mda = {
            'projection_parameters': {
                'SSP_longitude': -123.0
            },
            'spectral_channel_id': 1,
            'image_data_function': blob
        }
        HRITGOESFileHandler.filename = 'filename'
        HRITGOESFileHandler.mda = mda
        self.prologue = mock.MagicMock()
        self.prologue.prologue = test_pro
        self.reader = HRITGOESFileHandler('filename', {}, {}, self.prologue)

    def test_init(self):
        """Test the init."""
        blob = '$HALFTONE:=10\r\n_NAME:=albedo\r\n_UNIT:=percent\r\n0:=0.0\r\n1023:=100.0\r\n'.encode(
        )
        mda = {
            'spectral_channel_id': 1,
            'projection_parameters': {
                'SSP_longitude': 100.1640625
            },
            'image_data_function': blob
        }
        self.assertEqual(self.reader.mda, mda)

    @mock.patch('satpy.readers.goes_imager_hrit.HRITFileHandler.get_dataset')
    def test_get_dataset(self, base_get_dataset):
        """Test get_dataset."""
        key = make_dataid(name="CH1", calibration='reflectance')
        base_get_dataset.return_value = DataArray(np.arange(25).reshape(5, 5))
        res = self.reader.get_dataset(key, {})
        expected = np.array(
            [[np.nan, 0.097752, 0.195503, 0.293255, 0.391007],
             [0.488759, 0.58651, 0.684262, 0.782014, 0.879765],
             [0.977517, 1.075269, 1.173021, 1.270772, 1.368524],
             [1.466276, 1.564027, 1.661779, 1.759531, 1.857283],
             [1.955034, 2.052786, 2.150538, 2.248289, 2.346041]])

        self.assertTrue(np.allclose(res.values, expected, equal_nan=True))
        self.assertEqual(res.attrs['units'], '%')
        self.assertDictEqual(
            res.attrs['orbital_parameters'], {
                'projection_longitude':
                self.reader.mda['projection_parameters']['SSP_longitude'],
                'projection_latitude':
                0.0,
                'projection_altitude':
                ALTITUDE
            })
Exemple #3
0
class TestHRITGOESFileHandler(unittest.TestCase):
    """Test the HRITFileHandler."""
    @mock.patch('satpy.readers.goes_imager_hrit.HRITFileHandler.__init__')
    def setUp(self, new_fh_init):
        """Set up the hrit file handler for testing."""
        blob = '$HALFTONE:=10\r\n_NAME:=albedo\r\n_UNIT:=percent\r\n0:=0.0\r\n1023:=100.0\r\n'.encode(
        )
        mda = {
            'projection_parameters': {
                'SSP_longitude': -123.0
            },
            'spectral_channel_id': 1,
            'image_data_function': blob
        }
        HRITGOESFileHandler.filename = 'filename'
        HRITGOESFileHandler.mda = mda
        self.prologue = mock.MagicMock()
        self.prologue.prologue = test_pro
        self.reader = HRITGOESFileHandler('filename', {}, {}, self.prologue)

    def test_init(self):
        """Test the init."""
        blob = '$HALFTONE:=10\r\n_NAME:=albedo\r\n_UNIT:=percent\r\n0:=0.0\r\n1023:=100.0\r\n'.encode(
        )
        mda = {
            'spectral_channel_id': 1,
            'projection_parameters': {
                'SSP_longitude': 100.1640625
            },
            'image_data_function': blob
        }
        self.assertEqual(self.reader.mda, mda)

    @mock.patch('satpy.readers.goes_imager_hrit.HRITFileHandler.get_dataset')
    def test_get_dataset(self, base_get_dataset):
        """Test get_dataset."""
        key = make_dataid(name="CH1", calibration='reflectance')
        base_get_dataset.return_value = DataArray(np.arange(25).reshape(5, 5))
        res = self.reader.get_dataset(key, {})
        expected = np.array(
            [[np.nan, 0.097752, 0.195503, 0.293255, 0.391007],
             [0.488759, 0.58651, 0.684262, 0.782014, 0.879765],
             [0.977517, 1.075269, 1.173021, 1.270772, 1.368524],
             [1.466276, 1.564027, 1.661779, 1.759531, 1.857283],
             [1.955034, 2.052786, 2.150538, 2.248289, 2.346041]])

        self.assertTrue(np.allclose(res.values, expected, equal_nan=True))
        self.assertEqual(res.attrs['units'], '%')
        self.assertDictEqual(
            res.attrs['orbital_parameters'], {
                'projection_longitude':
                self.reader.mda['projection_parameters']['SSP_longitude'],
                'projection_latitude':
                0.0,
                'projection_altitude':
                ALTITUDE
            })

    def test_get_area_def(self):
        """Test getting the area definition."""
        self.reader.mda.update({
            'cfac': 10216334,
            'lfac': 10216334,
            'coff': 1408.0,
            'loff': 944.0,
            'number_of_lines': 464,
            'number_of_columns': 2816
        })
        dsid = make_dataid(name="CH1",
                           calibration='reflectance',
                           resolution=3000)
        area = self.reader.get_area_def(dsid)

        a, b = proj4_radius_parameters(area.proj_dict)
        assert a == EQUATOR_RADIUS
        assert b == POLE_RADIUS
        assert area.proj_dict['h'] == ALTITUDE
        assert area.proj_dict['lon_0'] == 100.1640625
        assert area.proj_dict['proj'] == 'geos'
        assert area.proj_dict['units'] == 'm'
        assert area.width == 2816
        assert area.height == 464
        assert area.area_id == 'goes-15_goes_imager_fd_3km'
        area_extent_exp = (-5639254.900260435, 1925159.4881528523,
                           5643261.475678028, 3784210.48191544)
        np.testing.assert_allclose(area.area_extent, area_extent_exp)