From 50b12d9ca2d0f63eaf3cd898475c02fdcfe8465b Mon Sep 17 00:00:00 2001 From: Ziga Cernigoj Date: Thu, 31 Aug 2023 15:16:28 +0200 Subject: [PATCH 1/2] save datacube metadata to evalscript's userdata output --- src/pg_to_evalscript/evalscript.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/pg_to_evalscript/evalscript.py b/src/pg_to_evalscript/evalscript.py index 7ddcfe5..c3fdd11 100644 --- a/src/pg_to_evalscript/evalscript.py +++ b/src/pg_to_evalscript/evalscript.py @@ -66,12 +66,31 @@ def write(self): {self.write_ndarray_definition()} {self.write_datacube_definition()} {newline.join([node.write_function() for node in self.nodes])} + +// this var gets metadata about the dimensions of the datacube for postprocessing +// it is saved as userdata.json +let forUserData = {{}}; + function evaluatePixel(samples, scenes) {{ {self.write_datacube_creation()} {(newline + tab).join([node.write_call() for node in self.nodes])} + + forUserData = {{ + outputDimensions: node_load1.dimensions, + outputDatacubeMetadata: {{ + shape: node_load1.data.shape, + stride: node_load1.data.stride, + offset: node_load1.data.offset + }} + }} + const finalOutput = {self.write_output_variable()}{".encodeData()" if self.encode_result else '.flattenToArray()'} return Array.isArray(finalOutput) ? finalOutput : [finalOutput]; }} + +function updateOutputMetadata(scenes, inputMetadata, outputMetadata) {{ + outputMetadata.userData = forUserData; +}} """ def write_datacube_definition(self): From caab9d4b37c96475d72968dd6b20182903350453 Mon Sep 17 00:00:00 2001 From: Ziga Cernigoj Date: Fri, 15 Sep 2023 14:02:49 +0200 Subject: [PATCH 2/2] use write_output_variable instead of hardcoded node name --- src/pg_to_evalscript/evalscript.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pg_to_evalscript/evalscript.py b/src/pg_to_evalscript/evalscript.py index c3fdd11..be701d9 100644 --- a/src/pg_to_evalscript/evalscript.py +++ b/src/pg_to_evalscript/evalscript.py @@ -74,16 +74,16 @@ def write(self): function evaluatePixel(samples, scenes) {{ {self.write_datacube_creation()} {(newline + tab).join([node.write_call() for node in self.nodes])} - + forUserData = {{ - outputDimensions: node_load1.dimensions, + outputDimensions: {self.write_output_variable()}.dimensions, outputDatacubeMetadata: {{ - shape: node_load1.data.shape, - stride: node_load1.data.stride, - offset: node_load1.data.offset + shape: {self.write_output_variable()}.data.shape, + stride: {self.write_output_variable()}.data.stride, + offset: {self.write_output_variable()}.data.offset }} }} - + const finalOutput = {self.write_output_variable()}{".encodeData()" if self.encode_result else '.flattenToArray()'} return Array.isArray(finalOutput) ? finalOutput : [finalOutput]; }}