diff --git a/openeo_driver/datacube.py b/openeo_driver/datacube.py index ffbbf09d..629e3447 100644 --- a/openeo_driver/datacube.py +++ b/openeo_driver/datacube.py @@ -319,8 +319,14 @@ def from_geodataframe( return cls(geometries=geometries_df, cube=cube) else: - # TODO: add a dummy 1D no-data cube? - return cls(geometries=data) + # Use 1D dummy cube of NaN values + cube: xarray.DataArray = xarray.DataArray( + data=numpy.full(shape=[data.shape[0]], fill_value=numpy.nan), + dims=[cls.DIM_GEOMETRIES], + coords={cls.DIM_GEOMETRIES: data.geometry.index.to_list()}, + attrs={"vector_cube_dummy": True}, + ) + return cls(geometries=data, cube=cube) @classmethod def from_fiona( diff --git a/tests/test_vectorcube.py b/tests/test_vectorcube.py index e07ed2e5..708ad874 100644 --- a/tests/test_vectorcube.py +++ b/tests/test_vectorcube.py @@ -145,7 +145,18 @@ def test_to_internal_json_defaults(self, gdf): "attrs": {}, }, ), - ([], None), + ( + [], + { + "name": None, + "dims": ("geometries",), + "coords": { + "geometries": {"attrs": {}, "data": [0, 1], "dims": ("geometries",)}, + }, + "data": [IsNan(), IsNan()], + "attrs": {}, + }, + ), ( ["pop", "id"], { @@ -359,7 +370,18 @@ def test_from_geodataframe_default(self, gdf): "attrs": {}, }, ), - ([], None), + ( + [], + { + "name": None, + "dims": ("geometries",), + "coords": { + "geometries": {"attrs": {}, "data": [0, 1], "dims": ("geometries",)}, + }, + "data": [IsNan(), IsNan()], + "attrs": {"vector_cube_dummy": True}, + }, + ), ( ["id"], {