diff --git a/satpy/scene.py b/satpy/scene.py index 4fab319c09..47dc8c5e14 100644 --- a/satpy/scene.py +++ b/satpy/scene.py @@ -905,6 +905,9 @@ def to_xarray_dataset(self, datasets=None): """ dataarrays = self._get_dataarrays_from_identifiers(datasets) + if len(dataarrays) == 0: + return xr.Dataset() + ds_dict = {i.attrs['name']: i.rename(i.attrs['name']) for i in dataarrays if i.attrs.get('area') is not None} mdata = combine_metadata(*tuple(i.attrs for i in dataarrays)) if mdata.get('area') is None or not isinstance(mdata['area'], SwathDefinition): diff --git a/satpy/tests/test_scene.py b/satpy/tests/test_scene.py index ea74b1e6e8..3e4dbdfc47 100644 --- a/satpy/tests/test_scene.py +++ b/satpy/tests/test_scene.py @@ -1745,6 +1745,16 @@ def test_save_dataset_default(self): class TestSceneConversions(unittest.TestCase): """Test Scene conversion to geoviews, xarray, etc.""" + def test_to_xarray_dataset_with_empty_scene(self): + """Test converting empty Scene to xarray dataset.""" + from satpy import Scene + from xarray import Dataset + scn = Scene() + xrds = scn.to_xarray_dataset() + assert isinstance(xrds, Dataset) + assert len(xrds.variables) == 0 + assert len(xrds.coords) == 0 + def test_geoviews_basic_with_area(self): """Test converting a Scene to geoviews with an AreaDefinition.""" from satpy import Scene