diff --git a/raster/src/main/scala/geotrellis/raster/reproject/ReprojectRasterExtent.scala b/raster/src/main/scala/geotrellis/raster/reproject/ReprojectRasterExtent.scala index 5188d19322..fb7c1933f6 100644 --- a/raster/src/main/scala/geotrellis/raster/reproject/ReprojectRasterExtent.scala +++ b/raster/src/main/scala/geotrellis/raster/reproject/ReprojectRasterExtent.scala @@ -57,7 +57,19 @@ object ReprojectRasterExtent { val cols = ge.extent.width / ge.cellwidth val rows = ge.extent.height / ge.cellheight val pixelSize = distance / math.sqrt(cols * cols + rows * rows) - (pixelSize, pixelSize) + val pixelWidth = + if(newExtent.width <0.5*pixelSize) { + newExtent.width + }else{ + pixelSize + } + val pixelHeight = + if(newExtent.height <0.5*pixelSize) { + newExtent.height + }else{ + pixelSize + } + (pixelWidth, pixelHeight) } val newCols = (newExtent.width / pixelSizeX + 0.5).toLong diff --git a/raster/src/test/scala/geotrellis/raster/reproject/ReprojectRasterExtentSpec.scala b/raster/src/test/scala/geotrellis/raster/reproject/ReprojectRasterExtentSpec.scala index 52fda2c7f2..0e515c6d53 100644 --- a/raster/src/test/scala/geotrellis/raster/reproject/ReprojectRasterExtentSpec.scala +++ b/raster/src/test/scala/geotrellis/raster/reproject/ReprojectRasterExtentSpec.scala @@ -109,5 +109,14 @@ class ReprojectRasterExtentSpec extends AnyFunSpec assert(destinationRE.extent covers region) assert(destinationRE.extent.toPolygon() intersects region) } + + it("should reproject single pixel extents") { + val inputExtent = GridExtent[Long](Extent(429180.0, 7652390.0, 429190.0, 7652400.0), CellSize(10.0,10.0)) + val destinationRE = ReprojectRasterExtent(inputExtent, CRS.fromEpsgCode(32639), LatLng) + + assert(destinationRE.cols == 1) + assert(destinationRE.rows == 1) + + } } }