Skip to content

Commit 8f87ed6

Browse files
author
dsamaey
committed
Issue #392 array_contains support (fixed tests)
1 parent 86b99e2 commit 8f87ed6

File tree

7 files changed

+70
-28
lines changed

7 files changed

+70
-28
lines changed

openeo-geotrellis/src/main/scala/org/openeo/geotrellis/OpenEOProcessScriptBuilder.scala

-1
Original file line numberDiff line numberDiff line change
@@ -672,7 +672,6 @@ class OpenEOProcessScriptBuilder {
672672
val reverse = (arguments.getOrDefault("reverse",Boolean.box(false).asInstanceOf[Object]) == Boolean.box(true) || arguments.getOrDefault("reverse",None) == "true" )
673673
resultingDataType = ShortConstantNoDataCellType
674674

675-
676675
val arrayfindProcess = (context: Map[String, Any]) => (tiles: Seq[Tile]) => {
677676
val value_input: Seq[Tile] = evaluateToTiles(value, context, tiles)
678677
val data_input: Seq[Tile] = evaluateToTiles(data, context, tiles)

openeo-geotrellis/src/main/scala/org/openeo/geotrellis/package.scala

-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import java.time.temporal.ChronoUnit
2727
import java.time.{Duration, Instant}
2828
import java.util.concurrent.ConcurrentHashMap
2929
import scala.compat.java8.FunctionConverters._
30-
import scala.reflect.io.Directory
3130

3231

3332
package object geotrellis {

openeo-geotrellis/src/test/java/org/openeo/geotrellis/TestOpenEOProcessScriptBuilder.java

+1
Original file line numberDiff line numberDiff line change
@@ -1257,6 +1257,7 @@ public void testArrayContains() {
12571257

12581258
Tile result = transformation.apply(JavaConverters.asScalaBuffer(Arrays.asList(tile0, tile1, tile2, tile3))).head();
12591259
BitArrayTile expectedResult = BitArrayTile.fromBytes(new byte[]{(byte)153, (byte)153}, 4, 4);
1260+
System.out.println(transformation);
12601261
assertTileEquals(expectedResult, result);
12611262
}
12621263

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"contains": {
3+
"process_id": "array_contains",
4+
"arguments": {
5+
"data": {
6+
"from_parameter": "data"
7+
},
8+
"value": 5
9+
},
10+
"result": true
11+
}
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"find": {
3+
"process_id": "array_find",
4+
"arguments": {
5+
"data": {
6+
"from_parameter": "data"
7+
},
8+
"value": 5
9+
},
10+
"result": true
11+
}
12+
}

openeo-geotrellis/src/test/scala/org/openeo/geotrellis/OpenEOProcessGraphBuilderTest.scala

+19-26
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@ package org.openeo.geotrellis
33
import org.apache.commons.io.IOUtils
44
import org.junit.Test
55
import com.fasterxml.jackson.databind.ObjectMapper
6-
import geotrellis.raster.{ByteArrayTile, ByteConstantNoDataCellType, ShortArrayTile, Tile}
7-
import org.junit.jupiter.api.Assertions.{assertEquals, assertNotNull}
6+
import geotrellis.raster.{BitArrayTile, ByteArrayFiller, ByteArrayTile, ByteConstantNoDataArrayTile, ByteConstantNoDataCellType, ShortArrayTile, ShortConstantNoDataCellType, ShortConstantNoDataCellType$, Tile}
7+
import org.junit.jupiter.api.Assertions.{assertArrayEquals, assertEquals, assertNotNull}
88

9+
import java.net.URL
910
import java.nio.charset.Charset
1011
import java.util
12+
import java.util.Arrays
13+
import scala.collection.JavaConverters
1114
import scala.collection.mutable.ArrayBuffer
1215

1316
class OpenEOProcessGraphBuilderTest {
@@ -69,11 +72,10 @@ class OpenEOProcessGraphBuilderTest {
6972
}
7073

7174
def assertTileEquals(expected: Tile, actual: Tile):Unit = {
72-
assertEquals(1,1)
7375
assertEquals(expected.cols, actual.cols)
7476
assertEquals(expected.rows, actual.rows)
7577
assertEquals(expected.cellType, actual.cellType)
76-
assert(expected.toArray sameElements actual.toArray)
78+
assertArrayEquals(expected.toArray, actual.toArray)
7779
}
7880

7981
def fillShortArrayTile(cols: Int, rows: Int, values: Int *)= {
@@ -105,31 +107,22 @@ class OpenEOProcessGraphBuilderTest {
105107

106108
@Test
107109
def testArrayFind(): Unit = {
108-
val graphPath = IOUtils.toString(getClass.getResource("/org/openeo/geotrellis/testArrayFindProcessGraph.json"), Charset.defaultCharset())
109-
val visitor = (new GeotrellisTileProcessGraphVisitor).create()
110-
val graph = new ObjectMapper().readValue(graphPath,classOf[util.Map[String,Object]])
111-
println(graph)
112-
visitor._acceptDict(graph)
113-
// val processes = visitor.processes
114-
// assert(processes.size==4)
115-
// for (process <- processes) {
116-
// print(process)
117-
// }
110+
val transformation = org.openeo.geotrellis.testutil.fromUrl(getClass.getResource("/org/openeo/geotrellis/testArrayFindProcessGraph.json"))
111+
val tile0 = ByteArrayTile.fill(10.toByte, 4, 4)
112+
val tile1 = ByteArrayTile.fill(5.toByte, 4, 4)
113+
val result = transformation.apply(JavaConverters.asScalaBuffer(util.Arrays.asList(tile0, tile1)))
114+
val expectedResult = ByteArrayTile.fill(1.toByte, 4, 4)
115+
assertTileEquals(expectedResult.convert(ShortConstantNoDataCellType), result.head)
118116
}
119117

120-
121118
@Test
122119
def testArrayContains(): Unit = {
123-
val graphPath = IOUtils.toString(getClass.getResource("/org/openeo/geotrellis/testArrayContainsProcessGraph.json"), Charset.defaultCharset())
124-
val visitor = (new GeotrellisTileProcessGraphVisitor).create()
125-
val graph = new ObjectMapper().readValue(graphPath,classOf[util.Map[String,Object]])
126-
println(graph)
127-
visitor.acceptProcessGraph(graph)
128-
// val processes = visitor.processes
129-
// assert(processes.size==4)
130-
// for (process <- processes) {
131-
// print(process)
132-
// }
120+
val transformation = org.openeo.geotrellis.testutil.fromUrl(getClass.getResource("/org/openeo/geotrellis/testArrayContainsProcessGraph.json"))
121+
val tile0 = ByteArrayTile.fill(10.toByte, 4, 4)
122+
val tile1 = ByteArrayTile.fill(5.toByte, 4, 4)
123+
val result = transformation.apply(JavaConverters.asScalaBuffer(util.Arrays.asList(tile0, tile1)))
124+
val expectedResult = new BitArrayTile(Array.ofDim[Byte](((4 * 4) + 7) / 8).fill(255.toByte), 4, 4) // BitArrayTile.fill(1, 4, 4) seems bugged
125+
assertTileEquals(expectedResult, result.head)
133126
}
134127

135128

@@ -148,4 +141,4 @@ class OpenEOProcessGraphBuilderTest {
148141
assert(true)
149142
}
150143

151-
}
144+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package org.openeo.geotrellis
2+
3+
import _root_.geotrellis.raster._
4+
import com.fasterxml.jackson.databind.ObjectMapper
5+
import org.apache.commons.io.IOUtils
6+
7+
import java.net.URL
8+
import java.nio.charset.Charset
9+
import java.util
10+
11+
12+
package object testutil {
13+
14+
def fromUrl(url: URL): Seq[Tile] => Seq[Tile] = {
15+
val graphPath = IOUtils.toString(url, Charset.defaultCharset())
16+
fromString(graphPath)
17+
}
18+
19+
def fromString(graphPath: String): Seq[Tile] => Seq[Tile] = {
20+
val visitor = (new GeotrellisTileProcessGraphVisitor).create()
21+
val graph = new ObjectMapper().readValue(graphPath, classOf[util.Map[String, Object]])
22+
visitor.acceptProcessGraph(graph)
23+
val transformation = visitor.builder.generateFunction()
24+
transformation
25+
}
26+
}

0 commit comments

Comments
 (0)