Skip to content

Commit c3f51b0

Browse files
committed
catalog format: return items instead of files #1111
1 parent 44ce15e commit c3f51b0

File tree

2 files changed

+86
-1
lines changed

2 files changed

+86
-1
lines changed

openeogeotrellis/geopysparkdatacube.py

+17-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import pathlib
88
import subprocess
99
import tempfile
10+
import uuid
1011
from datetime import datetime, date
1112
from functools import partial
1213
from typing import Dict, List, Union, Tuple, Iterable, Callable, Optional
@@ -2317,7 +2318,22 @@ def add_gdalinfo_objects(assets_original):
23172318
message="Format {f!r} is not supported".format(f=format),
23182319
code="FormatUnsupported", status_code=400
23192320
)
2320-
return {str(os.path.basename(filename)): {"href": filename, "roles": ["data"]}}
2321+
2322+
item_id = str(uuid.uuid4())
2323+
return {
2324+
item_id: {
2325+
"id": item_id,
2326+
"properties": {"datetime": None},
2327+
"geometry": None,
2328+
"bbox": None,
2329+
"assets": {
2330+
"openEO": {
2331+
"href": filename,
2332+
"roles": ["data"],
2333+
},
2334+
},
2335+
},
2336+
}
23212337

23222338
def get_labels(self, geometries, feature_id_property=None):
23232339
# TODO: return more descriptive labels/ids than these autoincrement strings (when possible)?

tests/test_batch_result.py

+69
Original file line numberDiff line numberDiff line change
@@ -3084,3 +3084,72 @@ def test_unified_asset_keys_stitch_tile_grid(tmp_path):
30843084

30853085
for item in items:
30863086
assert set(item["assets"].keys()) == {"openEO"}
3087+
3088+
3089+
def test_unified_asset_keys_catalog(tmp_path):
3090+
process_graph = {
3091+
"load2": {
3092+
"process_id": "load_collection",
3093+
"arguments": {
3094+
"bands": [
3095+
"Flat:0",
3096+
"Flat:1",
3097+
"Flat:2",
3098+
],
3099+
"id": "TestCollection-LonLat16x16",
3100+
"spatial_extent": {
3101+
"west": 0,
3102+
"south": 50,
3103+
"east": 2,
3104+
"north": 51,
3105+
},
3106+
"temporal_extent": ["2025-04-01", "2025-04-21"],
3107+
},
3108+
},
3109+
"save1": {
3110+
"process_id": "save_result",
3111+
"arguments": {
3112+
"data": {"from_node": "load2"},
3113+
"format": "GTIFF",
3114+
"options": {
3115+
"parameters": {"catalog": True},
3116+
},
3117+
},
3118+
"result": True,
3119+
},
3120+
}
3121+
3122+
process = {
3123+
"process_graph": process_graph,
3124+
}
3125+
3126+
job_dir = tmp_path
3127+
metadata_file = job_dir / "job_metadata.json"
3128+
3129+
run_job(
3130+
process,
3131+
output_file=job_dir / "catalog.tiff",
3132+
metadata_file=metadata_file,
3133+
api_version="2.0.0",
3134+
job_dir=job_dir,
3135+
dependencies=[],
3136+
)
3137+
3138+
tiff_files = {file for file in os.listdir(job_dir) if file.endswith(".tiff")}
3139+
assert tiff_files == {"catalog.tiff"}
3140+
3141+
with open(metadata_file) as f:
3142+
job_metadata = json.load(f)
3143+
3144+
items = job_metadata["items"]
3145+
print(f"items={json.dumps(items, indent=2)}")
3146+
3147+
assert len(items) == 1
3148+
item = items[0]
3149+
3150+
# at job-level rather than on Item
3151+
assert item["properties"].get("datetime") == None
3152+
assert job_metadata["start_datetime"] == "2025-04-01T00:00:00Z"
3153+
assert job_metadata["end_datetime"] == "2025-04-21T00:00:00Z"
3154+
3155+
assert set(item["assets"].keys()) == {"openEO"}

0 commit comments

Comments
 (0)