Skip to content

Commit 1425d37

Browse files
authored
Merge pull request #433 from s22s/fix/assert-mask-no-nodata
Fix for 409: assert on mask target must have NoData defined
2 parents 649417e + c2af888 commit 1425d37

File tree

5 files changed

+455
-381
lines changed

5 files changed

+455
-381
lines changed

core/src/main/scala/org/locationtech/rasterframes/expressions/transformers/Mask.scala

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ package org.locationtech.rasterframes.expressions.transformers
2323

2424
import com.typesafe.scalalogging.Logger
2525
import geotrellis.raster
26-
import geotrellis.raster.Tile
26+
import geotrellis.raster.{NoNoData, Tile}
2727
import geotrellis.raster.mapalgebra.local.{Undefined, InverseMask gtInverseMask, Mask gtMask}
2828
import org.apache.spark.sql.catalyst.analysis.TypeCheckResult
2929
import org.apache.spark.sql.catalyst.analysis.TypeCheckResult.{TypeCheckFailure, TypeCheckSuccess}
@@ -73,6 +73,10 @@ abstract class Mask(val left: Expression, val middle: Expression, val right: Exp
7373
override protected def nullSafeEval(targetInput: Any, maskInput: Any, maskValueInput: Any): Any = {
7474
implicit val tileSer = TileUDT.tileSerializer
7575
val (targetTile, targetCtx) = tileExtractor(targetExp.dataType)(row(targetInput))
76+
77+
require(! targetTile.cellType.isInstanceOf[NoNoData],
78+
s"Input data expression ${left.prettyName} must have a CellType with NoData defined in order to perform a masking operation. Found CellType ${targetTile.cellType.toString()}.")
79+
7680
val (maskTile, maskCtx) = tileExtractor(maskExp.dataType)(row(maskInput))
7781

7882
if (targetCtx.isEmpty && maskCtx.isDefined)

0 commit comments

Comments
 (0)