Skip to content

Commit

Permalink
Fixes due to jai-ext integration.
Browse files Browse the repository at this point in the history
  • Loading branch information
jericks committed Apr 17, 2015
1 parent dd0a77a commit 7e37c69
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 52 deletions.
51 changes: 22 additions & 29 deletions src/main/groovy/geoscript/layer/Raster.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -626,10 +626,10 @@ class Raster {
def processor = new CoverageProcessor()
def params = processor.getOperation("Extrema").parameters
params.parameter("Source").value = this.coverage
def result = processor.doOperation(params).getProperty("extrema")
def result = processor.doOperation(params)
[
min: result[0],
max: result[1]
min: result.getProperty("minimum"),
max: result.getProperty("maximum")
]
}

Expand All @@ -644,31 +644,26 @@ class Raster {
* @return A Histogram
*/
Histogram getHistogram(Map options = [:]) {
def low = options.get("low")
def high = options.get("high")
def numberOfBins = options.get("numBins")
def low = options.get("low", 0.0)
def high = options.get("high", 256.0)
def numberOfBins = options.get("numBins", 256)
int numberOfBands = bands.size()

def processor = new CoverageProcessor()
def params = processor.getOperation("Histogram").parameters
params.parameter("Source").value = this.coverage
if (low) {
if (!(low instanceof List)) {
low = [low] * numberOfBands
params.parameter("lowValue").value = low as double[]
}
params.parameter("Bands").value = (0..<numberOfBands) as int[]
if (!(low instanceof List)) {
low = [low] * numberOfBands
params.parameter("lowValue").value = low as double[]
}
if (high) {
if (!(high instanceof List)) {
high = [high] * numberOfBands
params.parameter("highValue").value = high as double[]
}
if (!(high instanceof List)) {
high = [high] * numberOfBands
params.parameter("highValue").value = high as double[]
}
if (numberOfBins) {
if (!(numberOfBins instanceof List)) {
numberOfBins = [numberOfBins] * numberOfBands
params.parameter("numBins").value = numberOfBins as int[]
}
if (!(numberOfBins instanceof List)) {
numberOfBins = [numberOfBins] * numberOfBands
params.parameter("numBins").value = numberOfBins as int[]
}
def h = processor.doOperation(params)
new Histogram(h.getProperty("histogram"))
Expand Down Expand Up @@ -973,8 +968,7 @@ class Raster {
Raster add(Raster other) {
def processor = new CoverageProcessor()
def params = processor.getOperation("Add").parameters
params.parameter("Source0").value = this.coverage
params.parameter("Source1").value = other.coverage
params.parameter("Sources").value = [this.coverage, other.coverage]
def newCoverage = processor.doOperation(params)
new Raster(newCoverage)
}
Expand All @@ -996,7 +990,7 @@ class Raster {
Raster add(List<Double> values) {
def processor = new CoverageProcessor()
def params = processor.getOperation("AddConst").parameters
params.parameter("Source").value = this.coverage
params.parameter("source").value = this.coverage
params.parameter("constants").value = values as double[]
def newCoverage = processor.doOperation(params)
new Raster(newCoverage)
Expand Down Expand Up @@ -1039,8 +1033,7 @@ class Raster {
Raster multiply(Raster other) {
def processor = new CoverageProcessor()
def params = processor.getOperation("Multiply").parameters
params.parameter("Source0").value = this.coverage
params.parameter("Source1").value = other.coverage
params.parameter("Sources").value = [this.coverage, other.coverage]
def newCoverage = processor.doOperation(params)
new Raster(newCoverage)
}
Expand Down Expand Up @@ -1186,7 +1179,7 @@ class Raster {
Raster minusFrom(List<Double> values) {
def processor = new CoverageProcessor()
def params = processor.getOperation("SubtractFromConst").parameters
params.parameter("Source").value = this.coverage
params.parameter("source").value = this.coverage
params.parameter("constants").value = values as double[]
def newCoverage = processor.doOperation(params)
new Raster(newCoverage)
Expand All @@ -1199,7 +1192,7 @@ class Raster {
Raster invert() {
def processor = new CoverageProcessor()
def params = processor.getOperation("Invert").parameters
params.parameter("Source").value = this.coverage
params.parameter("Sources").value = [this.coverage]
def newCoverage = processor.doOperation(params)
new Raster(newCoverage)
}
Expand Down Expand Up @@ -1260,7 +1253,7 @@ class Raster {
final double max1 = range1.getMaximum()
final double max = max0 - max1
final double min = min0 - min1
return NumberRange.create(min, max)
return NumberRange.create(Math.min(min,max), Math.max(min,max))
}
return null
}
Expand Down
6 changes: 3 additions & 3 deletions src/test/groovy/geoscript/layer/ArcGridTestCase.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -133,12 +133,12 @@ EAST: 200.0
WEST: 0.0
ROWS: 6
COLS: 4
-9999.0 -9999.0 5.0 2.0
-9999.0 20.0 100.0 36.0
* * 5.0 2.0
* 20.0 100.0 36.0
3.0 8.0 35.0 10.0
32.0 42.0 50.0 6.0
88.0 75.0 27.0 9.0
13.0 5.0 1.0 -9999.0
13.0 5.0 1.0 *
""", str)
}
}
26 changes: 6 additions & 20 deletions src/test/groovy/geoscript/layer/RasterTestCase.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -618,37 +618,23 @@ class RasterTestCase {
}

@Test void invert() {
Bounds bounds = new Bounds(0, 0, 7, 5, "EPSG:4326")
List data = [
[0f,0,0,0,0,0,0],
[0f,1,1,1,1,1,0],
[0f,1,2,3,2,1,0],
[0f,1,1,1,1,1,0],
[0f,0,0,0,0,0,0]
]
Raster raster = new Raster(data, bounds)
File file = new File(getClass().getClassLoader().getResource("raster.tif").toURI())
GeoTIFF geoTIFF = new GeoTIFF(file)
Raster raster = geoTIFF.read()
Raster invertedRaster = raster.invert()
assertNotNull(invertedRaster)

/*assertEquals(-0, invertedRaster.eval(new Point(0.5,0.5))[0], 0.1)
assertEquals(-1, invertedRaster.eval(new Point(1.5,1.5))[0], 0.1)
assertEquals(-2, invertedRaster.eval(new Point(2.5,2.5))[0], 0.1)
assertEquals(-3, invertedRaster.eval(new Point(3.5,2.5))[0], 0.1)*/
}

@Test void negative() {
Bounds bounds = new Bounds(0, 0, 7, 5, "EPSG:4326")
List data = [
[0,0,0,0,0,0,0],
[0,1,1,1,1,1,0],
[0,1,2,3,2,1,0],
[0,1,1,1,1,1,0],
[0,0,0,0,0,0,0]
]
Raster raster = new Raster(data, bounds)
File file = new File(getClass().getClassLoader().getResource("raster.tif").toURI())
GeoTIFF geoTIFF = new GeoTIFF(file)
Raster raster = geoTIFF.read()
Raster invertedRaster = -raster
assertNotNull(invertedRaster)

/*assertEquals(-0, invertedRaster.eval(new Point(0.5,0.5))[0], 0.1)
assertEquals(-1, invertedRaster.eval(new Point(1.5,1.5))[0], 0.1)
assertEquals(-2, invertedRaster.eval(new Point(2.5,2.5))[0], 0.1)
Expand Down

0 comments on commit 7e37c69

Please sign in to comment.