Skip to content

Commit e035a4b

Browse files
committed
Refined handling of single vs multiple bands in SlippyExport.
Signed-off-by: Simeon H.K. Fitch <[email protected]>
1 parent 9deab0b commit e035a4b

File tree

3 files changed

+18
-5
lines changed

3 files changed

+18
-5
lines changed

core/src/main/scala/astraea/spark/rasterframes/util/MultibandRender.scala

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ object MultibandRender {
6363

6464
/** Base type for Rendering profiles. */
6565
trait Profile {
66+
/** Expected number of bands. */
67+
def expectedBands: Int = 3
68+
6669
/** Value from -255 to 255 */
6770
def brightness: Int = 0
6871
/** Value from -255 to 255 */
@@ -102,6 +105,8 @@ object MultibandRender {
102105
compressRange _ andThen colorAdjust
103106

104107
def render(tile: MultibandTile) = {
108+
require(expectedBands <= tile.bandCount, s"Need at least $expectedBands bands (${tile.bandCount} provided).")
109+
105110
val r = applyAdjustment(red(tile))
106111
val g = applyAdjustment(green(tile))
107112
val b = applyAdjustment(blue(tile))
@@ -128,8 +133,11 @@ object MultibandRender {
128133
}
129134

130135
case class ColorRampProfile(ramp: ColorRamp) extends Profile {
136+
override def expectedBands: Int = 1
131137
// Are there other ways to use the other bands?
132-
override def render(tile: MultibandTile): Png =
138+
override def render(tile: MultibandTile): Png = {
139+
require(tile.bandCount >= 1, s"Need at least 1 band")
133140
applyAdjustment(tile.band(0)).renderPng(ramp)
141+
}
134142
}
135143
}

docs/src/main/tut/release-notes.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
## 0.7.x
44

5+
### 0.7.1
6+
7+
* Fixed ColorRamp pipeline in MultibandRender
8+
* Fixed Python wrapper for `explodeTiles`
9+
10+
511
### 0.7.0
612

713
* Now an incubating project under Eclipse Foundation LocationTech! GitHub repo moved to [locationtech/rasterframes](https://github.com/locationtech/rasterframes).

experimental/src/main/scala/astraea/spark/rasterframes/experimental/slippy/SlippyExport.scala

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import java.io.PrintStream
2424
import java.net.URI
2525

2626
import astraea.spark.rasterframes._
27-
import astraea.spark.rasterframes.util.MultibandRender.ColorRampProfile
2827
import astraea.spark.rasterframes.util._
2928
import geotrellis.proj4.{LatLng, WebMercator}
3029
import geotrellis.raster._
@@ -116,13 +115,13 @@ trait SlippyExport extends MethodExtensions[RasterFrame]{
116115

117116
val (zoom, reprojected) = inputRDD.reproject(WebMercator, layoutScheme, Bilinear)
118117
val writer = new HadoopSlippyTileWriter[MultibandTile](dest.toASCIIString + "/" + tileDirName, "png")({ (_, tile) =>
119-
require(tile.bandCount >= 3 || renderer.isInstanceOf[ColorRampProfile],
120-
"Single-band and dual-band RasterFrames require a ColorRampProfile for rendering")
118+
//require(tile.bandCount >= 3 || renderer.isInstanceOf[ColorRampProfile],
119+
// "Single-band and dual-band RasterFrames require a ColorRampProfile for rendering")
121120
val png = renderer.render(tile)
122121
png.bytes
123122
})
124123

125-
val center = reprojected.metadata.extent.center.reproject(WebMercator, LatLng)
124+
val center = reprojected.metadata.extent.center
126125

127126
SlippyExport.writeHtml(dest, sc.hadoopConfiguration, Map(
128127
"maxZoom" -> zoom.toString,

0 commit comments

Comments
 (0)