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

Public Member Functions

String getURI ()
 
GridCoverage modify (GridCoverage raster, Integer rd1, Double constt)
 
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 != 3) {
18  throw new ValueExprEvaluationException(getURI() + " requires exactly 3 arguments, got " + args.length);
19  }
20  LiteralType l=LiteralRegistry.getLiteral(((Literal)args[0]).getDatatype().toString());
21  if(l instanceof RasterLiteral) {
22  GridCoverage geom=((RasterLiteral)l).read(args[0].stringValue());
23  Integer band=Integer.valueOf(args[1].stringValue());
24  Double constt=Double.valueOf(args[2].stringValue());
25  GridCoverage result = modify(geom,band,constt);
26  return valueFactory.createLiteral(((RasterLiteral) l).unparse(result),((Literal)args[0]).getDatatype());
27  }
28  return null;
29  }
abstract GridCoverage modify(GridCoverage coverage, Integer band, Double constt)

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

Referenced by AddConstTest.testAddConst(), AndConstTest.testAndConst(), DivConstTest.testDivConst(), MultConstTest.testMultConst(), OrConstTest.testOrConst(), SubtractConstTest.testSubtractConst(), and XorConstTest.testXorConst().

◆ getURI()

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

References POSTGIS.ST_rast_algebra_orconst.

◆ modify()

GridCoverage modify ( GridCoverage  raster,
Integer  rd1,
Double  constt 
)

Reimplemented from RasterAlgebraConstFunction.

28  {
29  ParameterBlock pbSubtracted = new ParameterBlock();
30  pbSubtracted.addSource(raster.render(raster.getGridGeometry().getExtent()));
31  double[] consts=new double[raster.getSampleDimensions().size()];
32  if(rd1.intValue()<0) {
33  for(int i=0;i<consts.length;i++) {
34  consts[i]=constt;
35  }
36  }else {
37  for(int i=0;i<consts.length;i++) {
38  if(i==rd1.intValue()) {
39  consts[i]=constt;
40  }else {
41  consts[i]=0;
42  }
43  }
44  }
45  pbSubtracted.add(consts);
46  RenderedOp subtractedImage = JAI.create("orconst", pbSubtracted);
47  final SampleDimension sd = new SampleDimension.Builder().setName("t")
48  .addQuantitative(
49  (raster.getSampleDimensions().get(rd1).getName() + " orconst "
50  + constt).toString(),
51  raster.getSampleDimensions().get(rd1).getMeasurementRange().get(),
52  raster.getSampleDimensions().get(rd1).getTransferFunction().get(),
53  raster.getSampleDimensions().get(rd1).getUnits().get())
54  .build();
55 
56  List<SampleDimension>sds=new LinkedList<SampleDimension>();
57  sds.add(sd);
58  /*
59  * Create the grid coverage, gets its image and set values directly as short
60  * integers.
61  */
62  BufferedGridCoverage coverage = new BufferedGridCoverage(raster.getGridGeometry(),
63  sds, DataBuffer.TYPE_SHORT);
64  WritableRaster rasterr = ((BufferedImage) coverage.render(null)).getRaster();
65  rasterr.setRect(subtractedImage.getSourceImage(0).getData());
66  return coverage;
67  }