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