Esempio n. 1
0
    def test_add_proj_satpos(self):
        """Test adding projection and satellite position."""
        ir_108 = mock.MagicMock(
            attrs={
                'orbital_parameters': {
                    'projection_longitude': 'lon0',
                    'projection_latitude': 'lat0',
                    'projection_altitude': 'h',
                    'satellite_actual_longitude': 10,
                    'satellite_actual_latitude': 20,
                    'satellite_actual_altitude': 30
                },
                'georef_offset_corrected': True
            })

        scene = Scene()
        scene.attrs = {
            'area':
            mock.MagicMock(proj_dict={
                'a': 1,
                'b': 2
            },
                           area_extent=[1, 2, 3, 4])
        }
        scene['IR_108'] = ir_108

        # Add projection and satellite position
        seviri2pps.add_proj_satpos(scene)

        # Test global attributes
        scene.attrs.pop('area', None)
        attrs_exp = {
            'projection': 'geos',
            'projection_semi_major_axis': 1,
            'projection_semi_minor_axis': 2,
            'projection_longitude': 'lon0',
            'projection_latitude': 'lat0',
            'projection_altitude': 'h'
        }
        self.assertDictEqual(scene.attrs, attrs_exp)

        # Test variables
        np.testing.assert_array_equal(scene['projection_area_extent'],
                                      [[1, 2, 3, 4]])
        np.testing.assert_array_equal(scene['georef_offset_corrected'], [1])
        np.testing.assert_array_equal(scene['satellite_longitude'], [10])
        np.testing.assert_array_equal(scene['satellite_latitude'], [20])
        np.testing.assert_array_equal(scene['satellite_altitude'], [30])
Esempio n. 2
0
    def test_get_encoding(self):
        """Test get encoding."""
        seviri2pps.BANDNAMES = ['VIS006', 'IR_108']
        vis006 = mock.MagicMock(attrs={'name': 'image0', 'id_tag': 'ch_r06'})
        ir_108 = mock.MagicMock(attrs={'name': 'image1', 'id_tag': 'ch_tb11'})
        lat = mock.MagicMock(attrs={'name': 'lat'})
        lon = mock.MagicMock(attrs={'name': 'lon'})
        sunzenith = mock.MagicMock(attrs={
            'name': 'image11',
            'id_tag': 'sunzenith'
        })
        satzenith = mock.MagicMock(attrs={
            'name': 'image12',
            'id_tag': 'satzenith'
        })
        azimuthdiff = mock.MagicMock(attrs={
            'name': 'image13',
            'id_tag': 'azimuthdiff'
        })
        scene = Scene()
        scene.attrs = {'start_time': dt.datetime(2009, 7, 1, 12, 15)}
        scene_dict = {
            'VIS006': vis006,
            'IR_108': ir_108,
            'lat': lat,
            'lon': lon,
            'sunzenith': sunzenith,
            'satzenith': satzenith,
            'azimuthdiff': azimuthdiff
        }
        for key in scene_dict:
            pps_name = scene_dict[key].attrs['name']
            scene[key] = scene_dict[key]
            scene[key].attrs['name'] = pps_name

        enc_exp_angles = {
            'dtype': 'int16',
            'scale_factor': 0.01,
            'zlib': True,
            'complevel': 4,
            '_FillValue': -32767,
            'add_offset': 0.0,
            'chunksizes': (1, 512, 3712)
        }
        enc_exp_coords = {
            'dtype': 'float32',
            'zlib': True,
            'complevel': 4,
            '_FillValue': -999.0,
            'chunksizes': (512, 3712)
        }
        enc_exp_time = {
            'units': 'days since 2004-01-01 00:00',
            'calendar': 'standard',
            '_FillValue': None,
            'chunksizes': [1]
        }
        enc_exp_acq = {
            'units': 'milliseconds since 2009-07-01 12:15',
            'calendar': 'standard',
            '_FillValue': -9999.0
        }
        encoding_exp = {
            'image0': {
                'dtype': 'int16',
                'scale_factor': 0.01,
                'zlib': True,
                'complevel': 4,
                '_FillValue': -32767,
                'add_offset': 0.0,
                'chunksizes': (1, 512, 3712)
            },
            'image1': {
                'dtype': 'int16',
                'scale_factor': 0.01,
                '_FillValue': -32767,
                'zlib': True,
                'complevel': 4,
                'add_offset': 273.15,
                'chunksizes': (1, 512, 3712)
            },
            'image11': enc_exp_angles,
            'image12': enc_exp_angles,
            'image13': enc_exp_angles,
            'lon': enc_exp_coords,
            'lat': enc_exp_coords,
            'time': enc_exp_time,
            'acq_time': enc_exp_acq
        }
        encoding = seviri2pps.get_encoding_seviri(scene)
        self.assertDictEqual(encoding, encoding_exp)