Ejemplo n.º 1
0
    def test_basic_numbered_1_tile(self, use_save_dataset, caplog):
        """Test creating a single numbered tile."""
        from satpy.writers.awips_tiled import AWIPSTiledWriter
        data = self._get_test_data()
        area_def = self._get_test_area()
        input_data_arr = self._get_test_lcc_data(data, area_def)
        with caplog.at_level(logging.DEBUG):
            w = AWIPSTiledWriter(base_dir=self.base_dir, compress=True)
            if use_save_dataset:
                w.save_dataset(input_data_arr,
                               sector_id='TEST',
                               source_name='TESTS')
            else:
                w.save_datasets([input_data_arr],
                                sector_id='TEST',
                                source_name='TESTS')

        assert "no routine matching" not in caplog.text
        assert "Can't format string" not in caplog.text
        all_files = glob(os.path.join(self.base_dir, 'TESTS_AII*.nc'))
        assert len(all_files) == 1
        assert os.path.basename(
            all_files[0]
        ) == 'TESTS_AII_PLAT_SENSOR_test_ds_TEST_T001_20180101_1200.nc'
        for fn in all_files:
            unmasked_ds = xr.open_dataset(fn, mask_and_scale=False)
            output_ds = xr.open_dataset(fn, mask_and_scale=True)
            check_required_properties(unmasked_ds, output_ds)
            scale_factor = output_ds['data'].encoding['scale_factor']
            np.testing.assert_allclose(input_data_arr.values,
                                       output_ds['data'].data,
                                       atol=scale_factor / 2)
Ejemplo n.º 2
0
    def test_basic_numbered_1_tile(self, use_save_dataset):
        """Test creating a single numbered tile."""
        import xarray as xr
        from satpy.writers.awips_tiled import AWIPSTiledWriter
        input_data_arr = self._get_test_lcc_data()
        w = AWIPSTiledWriter(base_dir=self.base_dir, compress=True)
        if use_save_dataset:
            w.save_dataset(input_data_arr,
                           sector_id='TEST',
                           source_name='TESTS')
        else:
            w.save_datasets([input_data_arr],
                            sector_id='TEST',
                            source_name='TESTS')

        all_files = glob(os.path.join(self.base_dir, 'TESTS_AII*.nc'))
        assert len(all_files) == 1
        assert os.path.basename(
            all_files[0]
        ) == 'TESTS_AII_PLAT_SENSOR_test_ds_TEST_T001_20180101_1200.nc'
        for fn in all_files:
            output_ds = xr.open_dataset(fn, mask_and_scale=False)
            check_required_common_attributes(output_ds)
            output_ds = xr.open_dataset(fn, mask_and_scale=True)
            scale_factor = output_ds['data'].encoding['scale_factor']
            np.testing.assert_allclose(input_data_arr.values,
                                       output_ds['data'].data,
                                       atol=scale_factor / 2)
Ejemplo n.º 3
0
 def test_units_length_warning(self):
     """Test long 'units' warnings are raised."""
     from satpy.writers.awips_tiled import AWIPSTiledWriter
     data = self._get_test_data()
     area_def = self._get_test_area()
     input_data_arr = self._get_test_lcc_data(data, area_def)
     input_data_arr.attrs["units"] = "this is a really long units string"
     w = AWIPSTiledWriter(base_dir=self.base_dir, compress=True)
     with pytest.warns(
             UserWarning,
             match=r'.*this is a really long units string.*too long.*'):
         w.save_dataset(input_data_arr,
                        sector_id='TEST',
                        source_name='TESTS')
Ejemplo n.º 4
0
 def test_units_length_warning(self):
     """Test long 'units' warnings are raised."""
     from satpy.writers.awips_tiled import AWIPSTiledWriter
     data = self._get_test_data()
     area_def = self._get_test_area()
     input_data_arr = self._get_test_lcc_data(data, area_def)
     input_data_arr.attrs["units"] = "this is a really long units string"
     w = AWIPSTiledWriter(base_dir=self.base_dir, compress=True)
     with warnings.catch_warnings(record=True) as caught_warnings:
         w.save_dataset(input_data_arr, sector_id='TEST', source_name='TESTS')
     assert len(caught_warnings) == 1
     warn_msg = caught_warnings[0].message.args[0]
     assert "too long" in warn_msg
     assert "this is a really long units string" in warn_msg