Skip to content
Draft
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion openeo_driver/delayed_vector.py
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,6 @@ def _read_geojson_crs(geojson: Dict) -> pyproj.CRS:
crs = geojson.get("crs", {}).get("properties", {}).get("name")
return pyproj.CRS("epsg:4326") if crs is None else pyproj.CRS(crs)

def to_driver_vector_cube(self):
def to_driver_vector_cube(self) -> DriverVectorCube:
gdf = self.as_geodataframe()
return DriverVectorCube.from_geodataframe(gdf, dimension_name="bands")
2 changes: 1 addition & 1 deletion openeo_driver/save_result.py
Original file line number Diff line number Diff line change
Expand Up @@ -1010,7 +1010,7 @@ def to_save_result(data: Any, format: Optional[str] = None, options: Optional[di
return JSONResult(data.geojson, format="geojson", options=options)
else:
data = data.to_driver_vector_cube()
elif isinstance(data, DriverDataCube):
if isinstance(data, DriverDataCube):

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JeroenVerstraelen I found this while checking with mypy. This makes sure the 'data' used in the object that is returned

return ImageCollectionResult(data, format=format, options=options)
elif isinstance(data, DriverVectorCube):
return VectorCubeResult(cube=data, format=format, options=options)
Expand Down
12 changes: 11 additions & 1 deletion tests/test_save_result_parquet.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import pytest

from openeo_driver.datacube import DriverVectorCube
from openeo_driver.save_result import AggregatePolygonSpatialResult
from openeo_driver.delayed_vector import DelayedVector
from openeo_driver.save_result import AggregatePolygonSpatialResult, to_save_result, VectorCubeResult
from .data import get_path

import geopandas as gpd
Expand Down Expand Up @@ -48,3 +49,12 @@ def test_write_driver_vector_cube_to_parquet(tmp_path):
vector_cube.write_assets(tmp_path / "dummy", format="Parquet")

assert gpd.read_parquet(tmp_path / "vectorcube.parquet").shape == (2, 3)


def test_write_delayed_vector_cube_to_parquet(tmp_path):
dv = DelayedVector(str(get_path("geojson/FeatureCollection02.json")))
vector_cube = to_save_result(dv, format="parquet")
assert isinstance(vector_cube, VectorCubeResult)
vector_cube.write_assets(tmp_path / "dummy")
# TODO: Why are id and pop columns missing here?
assert gpd.read_parquet(tmp_path / "vectorcube.parquet").shape == (2, 1)