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])
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)