Skip to content

Commit ef1e297

Browse files
committed
Issue #270 to_scl_dilation_mask: define as DriverDataCube method
makes things easier to track
1 parent 8a8ebf4 commit ef1e297

File tree

3 files changed

+31
-20
lines changed

3 files changed

+31
-20
lines changed

openeo_driver/ProcessGraphDeserializer.py

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1995,24 +1995,20 @@ def mask_scl_dilation(args: Dict, env: EvalEnv):
19951995
@process_registry_2xx.add_function(spec=read_spec("openeo-processes/experimental/to_scl_dilation_mask.json"))
19961996
def to_scl_dilation_mask(args: ProcessArgs, env: EvalEnv):
19971997
cube: DriverDataCube = args.get_required("data", expected_type=DriverDataCube)
1998-
1999-
if hasattr(cube, "to_scl_dilation_mask"):
2000-
# Get default values from spec
2001-
spec = read_spec("openeo-processes/experimental/to_scl_dilation_mask.json")
2002-
defaults = {param["name"]: param["default"] for param in spec["parameters"] if "default" in param}
2003-
optionals = {
2004-
arg: args.get_optional(arg, default=defaults[arg])
2005-
for arg in [
2006-
"erosion_kernel_size",
2007-
"mask1_values",
2008-
"mask2_values",
2009-
"kernel1_size",
2010-
"kernel2_size",
2011-
]
2012-
}
2013-
return cube.to_scl_dilation_mask(**optionals)
2014-
else:
2015-
raise FeatureUnsupportedException(message="to_scl_dilation_mask is not supported")
1998+
# Get default values for other args from spec
1999+
spec = read_spec("openeo-processes/experimental/to_scl_dilation_mask.json")
2000+
defaults = {param["name"]: param["default"] for param in spec["parameters"] if "default" in param}
2001+
optionals = {
2002+
arg: args.get_optional(arg, default=defaults[arg])
2003+
for arg in [
2004+
"erosion_kernel_size",
2005+
"mask1_values",
2006+
"mask2_values",
2007+
"kernel1_size",
2008+
"kernel2_size",
2009+
]
2010+
}
2011+
return cube.to_scl_dilation_mask(**optionals)
20162012

20172013

20182014
@process_registry_100.add_function(spec=read_spec("openeo-processes/experimental/mask_l1c.json"))

openeo_driver/datacube.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,17 @@ def resample_spatial(
222222
):
223223
self._not_implemented()
224224

225+
def to_scl_dilation_mask(
226+
self,
227+
erosion_kernel_size: int,
228+
mask1_values: List[int],
229+
mask2_values: List[int],
230+
kernel1_size: int,
231+
kernel2_size: int,
232+
) -> DriverDataCube:
233+
# Note: this is a non-standard process
234+
self._not_implemented()
235+
225236

226237
class VectorCubeError(InternalException):
227238
code = "VectorCubeError"

openeo_driver/dry_run.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
These source constraints can then be fetched from the EvalEnv at `load_collection` time.
3333
3434
"""
35+
from __future__ import annotations
3536
import logging
3637
from enum import Enum
3738
from typing import List, Union, Tuple, Any, Optional
@@ -737,11 +738,14 @@ def atmospheric_correction(
737738
def mask_scl_dilation(self, **kwargs) -> 'DriverDataCube':
738739
return self._process("custom_cloud_mask", arguments={**{"method":"mask_scl_dilation"},**kwargs})
739740

740-
def to_scl_dilation_mask(self, erosion_kernel_size: int,
741+
def to_scl_dilation_mask(
742+
self,
743+
erosion_kernel_size: int,
741744
mask1_values: List[int],
742745
mask2_values: List[int],
743746
kernel1_size: int,
744-
kernel2_size: int) -> 'DriverDataCube':
747+
kernel2_size: int,
748+
) -> DryRunDataCube:
745749
cube = self._process("process_type", [ProcessType.FOCAL_SPACE])
746750
size = kernel2_size
747751
cube = cube._process("pixel_buffer", arguments={"buffer_size": [size/2.0,size/2.0]})

0 commit comments

Comments
 (0)