diff --git a/openeo-geotrellis/src/main/scala/org/openeo/geotrellis/OpenEOProcessScriptBuilder.scala b/openeo-geotrellis/src/main/scala/org/openeo/geotrellis/OpenEOProcessScriptBuilder.scala index 1b57d447b..64bb1ca30 100644 --- a/openeo-geotrellis/src/main/scala/org/openeo/geotrellis/OpenEOProcessScriptBuilder.scala +++ b/openeo-geotrellis/src/main/scala/org/openeo/geotrellis/OpenEOProcessScriptBuilder.scala @@ -1118,6 +1118,7 @@ class OpenEOProcessScriptBuilder { case "date_shift" => dateShift(arguments) case "date_replace_component" => dateReplaceComponent(arguments) case "if" => ifProcess(arguments) + case "constant" if hasX => constantFunction(arguments) // Comparison operators case "gt" if hasXY => xyFunction(Greater.apply, convertBitCells = false) case "lt" if hasXY => xyFunction(Less.apply, convertBitCells = false) @@ -1749,4 +1750,15 @@ class OpenEOProcessScriptBuilder { } clipFunction } + + private def constantFunction(arguments:java.util.Map[String,Object]): OpenEOProcess = { + val (value, dataType) = arguments.get("x") match { + case x: java.lang.Short => (x, ShortConstantNoDataCellType) + case x: Integer => (x,IntConstantNoDataCellType) + case x: java.lang.Float =>(x,FloatConstantNoDataCellType) + case x: java.lang.Double => (x, DoubleConstantNoDataCellType) + } + resultingDataType = dataType + wrapSimpleProcess(createConstantTileFunction(value)) + } } diff --git a/openeo-geotrellis/src/test/java/org/openeo/geotrellis/TestOpenEOProcessScriptBuilder.java b/openeo-geotrellis/src/test/java/org/openeo/geotrellis/TestOpenEOProcessScriptBuilder.java index 86c06058b..8054e776e 100644 --- a/openeo-geotrellis/src/test/java/org/openeo/geotrellis/TestOpenEOProcessScriptBuilder.java +++ b/openeo-geotrellis/src/test/java/org/openeo/geotrellis/TestOpenEOProcessScriptBuilder.java @@ -263,7 +263,11 @@ private void testLogicalComparisonWithConstant(String operator, int... expectedV builder.expressionStart(operator, args); builder.argumentStart("x"); builder.argumentEnd(); - builder.constantArgument("y", 10); + builder.argumentStart("y"); + Map arg = map1("x",10); + builder.expressionStart("constant",arg); + builder.expressionEnd("constant",arg); + builder.argumentEnd(); builder.expressionEnd(operator, args); Function1, Seq> transformation = builder.generateFunction();