rdf4j-postgis  Version 0.1.0.0
IDCT Class Reference
Inheritance diagram for IDCT:
Collaboration diagram for IDCT:

Public Member Functions

String getURI ()
 
GridCoverage modify (GridCoverage raster, Integer rd1, GridCoverage raster2, Integer rd2)
 
Value evaluate (ValueFactory valueFactory, Value... args) throws ValueExprEvaluationException
 

Member Function Documentation

◆ evaluate()

Value evaluate ( ValueFactory  valueFactory,
Value...  args 
) throws ValueExprEvaluationException
inherited
16  {
17  if (args.length != 4) {
18  throw new ValueExprEvaluationException(getURI() + " requires exactly 4 arguments, got " + args.length);
19  }
20  LiteralType l=LiteralRegistry.getLiteral(((Literal)args[0]).getDatatype().toString());
21  LiteralType l2=LiteralRegistry.getLiteral(((Literal)args[2]).getDatatype().toString());
22  if(l instanceof RasterLiteral && l2 instanceof RasterLiteral) {
23  GridCoverage geom=((RasterLiteral)l).read(args[0].stringValue());
24  Integer bd1=Integer.valueOf(args[1].stringValue());
25  GridCoverage geom2=((RasterLiteral)l).read(args[2].stringValue());
26  Integer bd2=Integer.valueOf(args[3].stringValue());
27  GridCoverage result = modify(geom,bd1,geom2,bd2);
28  return valueFactory.createLiteral(((RasterLiteral) l).unparse(result),((Literal)args[0]).getDatatype());
29  }
30  return null;
31  }
abstract GridCoverage modify(GridCoverage coverage, Integer bd1, GridCoverage coverage2, Integer bd2)

References LiteralRegistry.getLiteral(), and RasterAlgebraFunction.modify().

Referenced by AddTest.testAdd(), AndTest.testAnd(), DivTest.testDiv(), LogTest.testLog(), MultTest.testMult(), OrTest.testOr(), SubtractTest.testSubtract(), and XorTest.testXor().

◆ getURI()

String getURI ( )
22  {
23  return POSTGIS.ST_rast_algebra_idct.stringValue();
24  }

References POSTGIS.ST_rast_algebra_idct.

◆ modify()

GridCoverage modify ( GridCoverage  raster,
Integer  rd1,
GridCoverage  raster2,
Integer  rd2 
)

Reimplemented from RasterAlgebraFunction.

28  {
29  ParameterBlock pbSubtracted = new ParameterBlock();
30  pbSubtracted.addSource(raster.render(raster.getGridGeometry().getExtent()));
31  pbSubtracted.addSource(raster2.render(raster2.getGridGeometry().getExtent()));
32  RenderedOp subtractedImage = JAI.create("idct", pbSubtracted);
33  /*
34  * final GridGeometry grid = new
35  * GridGeometry(raster.getGridGeometry().getExtent(), PixelInCell.CELL_CENTER,
36  * MathTransforms.identity(2),
37  * raster.getGridGeometry().getCoordinateReferenceSystem());
38  *
39  * final MathTransform1D toUnits = (MathTransform1D) MathTransforms.linear(0.5,
40  * 100);
41  */
42  final SampleDimension sd = new SampleDimension.Builder().setName("t")
43  .addQuantitative(
44  (raster.getSampleDimensions().get(rd1).getName() + "idct"
45  + raster2.getSampleDimensions().get(rd2).getName()).toString(),
46  raster.getSampleDimensions().get(0).getMeasurementRange().get(),
47  raster.getSampleDimensions().get(0).getTransferFunction().get(),
48  raster.getSampleDimensions().get(0).getUnits().get())
49  .build();
50 
51  List<SampleDimension>sds=new LinkedList<SampleDimension>();
52  sds.add(sd);
53  /*
54  * Create the grid coverage, gets its image and set values directly as short
55  * integers.
56  */
57  BufferedGridCoverage coverage = new BufferedGridCoverage(raster2.getGridGeometry(),
58  sds, DataBuffer.TYPE_SHORT);
59  WritableRaster rasterr = ((BufferedImage) coverage.render(null)).getRaster();
60  rasterr.setRect(subtractedImage.getSourceImage(0).getData());
61  return coverage;
62  }