Skip to content

Commit

Permalink
standardize on rst_tooverlappingtiles, mark rst_to_overlapping_tiles …
Browse files Browse the repository at this point in the history
…as deprecated
  • Loading branch information
sllynn committed Sep 24, 2024
1 parent bee2b5d commit 391acf4
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ test_that("raster flatmap functions behave as intended", {
expect_equal(nrow(tessellate_sdf), 63)

overlap_sdf <- generate_singleband_raster_df()
overlap_sdf <- withColumn(overlap_sdf, "rst_to_overlapping_tiles", rst_to_overlapping_tiles(column("tile"), lit(200L), lit(200L), lit(10L)))
overlap_sdf <- withColumn(overlap_sdf, "rst_tooverlappingtiles", rst_tooverlappingtiles(column("tile"), lit(200L), lit(200L), lit(10L)))

expect_no_error(write.df(overlap_sdf, source = "noop", mode = "overwrite"))
expect_equal(nrow(overlap_sdf), 87)
Expand All @@ -76,7 +76,7 @@ test_that("raster flatmap functions behave as intended", {
test_that("raster aggregation functions behave as intended", {
collection_sdf <- generate_singleband_raster_df()
collection_sdf <- withColumn(collection_sdf, "extent", st_astext(rst_boundingbox(column("tile"))))
collection_sdf <- withColumn(collection_sdf, "tile", rst_to_overlapping_tiles(column("tile"), lit(200L), lit(200L), lit(10L)))
collection_sdf <- withColumn(collection_sdf, "tile", rst_tooverlappingtiles(column("tile"), lit(200L), lit(200L), lit(10L)))

merge_sdf <- summarize(
groupBy(collection_sdf, "path"),
Expand Down Expand Up @@ -127,7 +127,7 @@ test_that("the tessellate-join-clip-merge flow works on NetCDF files", {
raster_sdf <- withColumn(raster_sdf, "timestep", element_at(rst_metadata(column("tile")), "NC_GLOBAL#GDAL_MOSAIC_BAND_INDEX"))
raster_sdf <- where(raster_sdf, "timestep = 21")
raster_sdf <- withColumn(raster_sdf, "tile", rst_setsrid(column("tile"), lit(4326L)))
raster_sdf <- withColumn(raster_sdf, "tile", rst_to_overlapping_tiles(column("tile"), lit(20L), lit(20L), lit(10L)))
raster_sdf <- withColumn(raster_sdf, "tile", rst_tooverlappingtiles(column("tile"), lit(20L), lit(20L), lit(10L)))
raster_sdf <- withColumn(raster_sdf, "tile", rst_tessellate(column("tile"), lit(target_resolution)))

clipped_sdf <- join(raster_sdf, census_sdf, raster_sdf$tile.index_id == census_sdf$index_id)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ test_that("raster flatmap functions behave as intended", {
expect_equal(sdf_nrow(tessellate_sdf), 63)

overlap_sdf <- generate_singleband_raster_df() %>%
mutate(rst_to_overlapping_tiles = rst_to_overlapping_tiles(tile, 200L, 200L, 10L))
mutate(rst_tooverlappingtiles = rst_tooverlappingtiles(tile, 200L, 200L, 10L))

expect_no_error(spark_write_source(overlap_sdf, "noop", mode = "overwrite"))
expect_equal(sdf_nrow(overlap_sdf), 87)
Expand All @@ -105,7 +105,7 @@ test_that("raster flatmap functions behave as intended", {
test_that("raster aggregation functions behave as intended", {
collection_sdf <- generate_singleband_raster_df() %>%
mutate(extent = st_astext(rst_boundingbox(tile))) %>%
mutate(tile = rst_to_overlapping_tiles(tile, 200L, 200L, 10L))
mutate(tile = rst_tooverlappingtiles(tile, 200L, 200L, 10L))

merge_sdf <- collection_sdf %>%
group_by(path) %>%
Expand Down Expand Up @@ -167,7 +167,7 @@ test_that("the tessellate-join-clip-merge flow works on NetCDF files", {
indexed_raster_sdf <- sdf_sql(sc, "SELECT tile, element_at(rst_metadata(tile), 'NC_GLOBAL#GDAL_MOSAIC_BAND_INDEX') as timestep FROM raster") %>%
filter(timestep == 21L) %>%
mutate(tile = rst_setsrid(tile, 4326L)) %>%
mutate(tile = rst_to_overlapping_tiles(tile, 20L, 20L, 10L)) %>%
mutate(tile = rst_tooverlappingtiles(tile, 20L, 20L, 10L)) %>%
mutate(tile = rst_tessellate(tile, target_resolution))

clipped_sdf <- indexed_raster_sdf %>%
Expand Down
25 changes: 18 additions & 7 deletions python/mosaic/api/raster.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@
"rst_summary",
"rst_tessellate",
"rst_transform",
"rst_to_overlapping_tiles",
"rst_tooverlappingtiles",
"rst_to_overlapping_tiles", # <- deprecated
"rst_tryopen",
"rst_updatetype",
"rst_upperleftx",
Expand Down Expand Up @@ -1328,11 +1329,11 @@ def rst_tessellate(raster_tile: ColumnOrName, resolution: ColumnOrName) -> Colum
)


def rst_to_overlapping_tiles(
raster_tile: ColumnOrName,
width: ColumnOrName,
height: ColumnOrName,
overlap: ColumnOrName,
def rst_tooverlappingtiles(
raster_tile: ColumnOrName,
width: ColumnOrName,
height: ColumnOrName,
overlap: ColumnOrName,
) -> Column:
"""
Tiles the raster into tiles of the given size.
Expand All @@ -1342,14 +1343,24 @@ def rst_to_overlapping_tiles(
"""

return config.mosaic_context.invoke_function(
"rst_to_overlapping_tiles",
"rst_tooverlappingtiles",
pyspark_to_java_column(raster_tile),
pyspark_to_java_column(width),
pyspark_to_java_column(height),
pyspark_to_java_column(overlap),
)


def rst_to_overlapping_tiles(
raster_tile: ColumnOrName,
width: ColumnOrName,
height: ColumnOrName,
overlap: ColumnOrName,
) -> Column:

return rst_tooverlappingtiles(raster_tile, width, height, overlap)


def rst_transform(raster_tile: ColumnOrName, srid: ColumnOrName) -> Column:
"""
Transforms the raster to the given SRID.
Expand Down
15 changes: 8 additions & 7 deletions python/test/test_raster_functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,8 +143,8 @@ def test_raster_flatmap_functions(self):
overlap_result = (
self.generate_singleband_raster_df()
.withColumn(
"rst_to_overlapping_tiles",
api.rst_to_overlapping_tiles("tile", lit(200), lit(200), lit(10)),
"rst_tooverlappingtiles",
api.rst_tooverlappingtiles("tile", lit(200), lit(200), lit(10)),
)
.withColumn("rst_subdatasets", api.rst_subdatasets("tile"))
)
Expand All @@ -157,15 +157,16 @@ def test_raster_aggregator_functions(self):
self.generate_singleband_raster_df()
.withColumn("extent", api.st_astext(api.rst_boundingbox("tile")))
.withColumn(
"rst_to_overlapping_tiles",
api.rst_to_overlapping_tiles("tile", lit(200), lit(200), lit(10)),
"tile",
api.rst_tooverlappingtiles("tile", lit(200), lit(200), lit(10)),
)
)

merge_result = (
collection.groupBy("path")
.agg(api.rst_merge_agg("tile").alias("tile"))
.withColumn("extent", api.st_astext(api.rst_boundingbox("tile")))
.agg(api.rst_merge_agg("tile").alias("merge_tile"))
.withColumn("extent", api.st_astext(api.rst_boundingbox("merge_tile")))
.cache()
)

self.assertEqual(merge_result.count(), 1)
Expand Down Expand Up @@ -225,7 +226,7 @@ def test_netcdf_load_tessellate_clip_merge(self):
.withColumn("tile", api.rst_setsrid("tile", lit(4326)))
.where(col("timestep") == 21)
.withColumn(
"tile", api.rst_to_overlapping_tiles("tile", lit(20), lit(20), lit(10))
"tile", api.rst_tooverlappingtiles("tile", lit(20), lit(20), lit(10))
)
.repartition(self.spark.sparkContext.defaultParallelism)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ case class RST_ToOverlappingTiles(
/** Expression info required for the expression registration for spark SQL. */
object RST_ToOverlappingTiles extends WithExpressionInfo {

override def name: String = "rst_to_overlapping_tiles"
override def name: String = "rst_tooverlappingtiles"

override def usage: String =
"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -803,9 +803,9 @@ class MosaicContext(indexSystem: IndexSystem, geometryAPI: GeometryAPI) extends
ColumnAdapter(RST_FromFile(raster.expr, sizeInMB.expr, expressionConfig))
def rst_fromfile(raster: Column, sizeInMB: Int): Column =
ColumnAdapter(RST_FromFile(raster.expr, lit(sizeInMB).expr, expressionConfig))
def rst_to_overlapping_tiles(raster: Column, width: Int, height: Int, overlap: Int): Column =
def rst_tooverlappingtiles(raster: Column, width: Int, height: Int, overlap: Int): Column =
ColumnAdapter(RST_ToOverlappingTiles(raster.expr, lit(width).expr, lit(height).expr, lit(overlap).expr, expressionConfig))
def rst_to_overlapping_tiles(raster: Column, width: Column, height: Column, overlap: Column): Column =
def rst_tooverlappingtiles(raster: Column, width: Column, height: Column, overlap: Column): Column =
ColumnAdapter(RST_ToOverlappingTiles(raster.expr, width.expr, height.expr, overlap.expr, expressionConfig))
def rst_tryopen(raster: Column): Column = ColumnAdapter(RST_TryOpen(raster.expr, expressionConfig))
def rst_subdivide(raster: Column, sizeInMB: Column): Column =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@ trait RST_ToOverlappingTilesBehaviors extends QueryTest {
.load("src/test/resources/modis")

val gridTiles = rastersInMemory
.withColumn("tile", rst_to_overlapping_tiles($"tile", lit(500), lit(500), lit(10)))
.withColumn("tile", rst_tooverlappingtiles($"tile", lit(500), lit(500), lit(10)))
.select("tile")

rastersInMemory
.createOrReplaceTempView("source")

noException should be thrownBy spark.sql(
"""
|select rst_to_overlapping_tiles(tile, 500, 500, 10)
|select rst_tooverlappingtiles(tile, 500, 500, 10)
| from source
|""".stripMargin).take(1)

Expand Down

0 comments on commit 391acf4

Please sign in to comment.