diff --git a/spark/common/src/main/scala/org/apache/sedona/sql/UDF/Catalog.scala b/spark/common/src/main/scala/org/apache/sedona/sql/UDF/Catalog.scala index b49706d700..0b2a069300 100644 --- a/spark/common/src/main/scala/org/apache/sedona/sql/UDF/Catalog.scala +++ b/spark/common/src/main/scala/org/apache/sedona/sql/UDF/Catalog.scala @@ -256,7 +256,9 @@ object Catalog { function[RS_AsImage](), function[RS_ZonalStats](), function[RS_ZonalStatsAll](), - function[RS_Resample]() + function[RS_Resample](), + function[RS_FromNetCDF](), + function[RS_NetCDFInfo]() ) val aggregateExpressions: Seq[Aggregator[Geometry, Geometry, Geometry]] = Seq( diff --git a/spark/common/src/main/scala/org/apache/spark/sql/sedona_sql/expressions/raster/RasterConstructors.scala b/spark/common/src/main/scala/org/apache/spark/sql/sedona_sql/expressions/raster/RasterConstructors.scala index f7880aafe2..15f6430589 100644 --- a/spark/common/src/main/scala/org/apache/spark/sql/sedona_sql/expressions/raster/RasterConstructors.scala +++ b/spark/common/src/main/scala/org/apache/spark/sql/sedona_sql/expressions/raster/RasterConstructors.scala @@ -62,3 +62,23 @@ case class RS_MakeEmptyRaster(inputExpressions: Seq[Expression]) copy(inputExpressions = newChildren) } } + + +case class RS_FromNetCDF(inputExpressions: Seq[Expression]) + extends InferredExpression( + inferrableFunction2(RasterConstructors.fromNetCDF), inferrableFunction4(RasterConstructors.fromNetCDF)) { + + override def foldable: Boolean = false + protected def withNewChildrenInternal(newChildren: IndexedSeq[Expression]) = { + copy(inputExpressions = newChildren) + } +} + +case class RS_NetCDFInfo(inputExpressions: Seq[Expression]) + extends InferredExpression(RasterConstructors.getRecordInfo _) { + + protected def withNewChildrenInternal(newChildren: IndexedSeq[Expression]) = { + copy(inputExpressions = newChildren) + } +} +