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

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 ( )
31  {
32  return POSTGIS.ST_rast_algebra_addconst.stringValue();
33  }

References POSTGIS.ST_rast_algebra_addconst.

◆ modify()

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

Reimplemented from RasterAlgebraConstFunction.

37  {
38  ParameterBlock pbSubtracted = new ParameterBlock();
39  pbSubtracted.addSource(raster.render(raster.getGridGeometry().getExtent()));
40  System.out.println(raster.render(null).getSampleModel().getDataType());
41  System.out.println(raster.render(raster.getGridGeometry().getExtent()));
42  double[] consts=new double[raster.getSampleDimensions().size()];
43  if(rd1.intValue()<0) {
44  for(int i=0;i<consts.length;i++) {
45  consts[i]=constt;
46  }
47  }else {
48  for(int i=0;i<consts.length;i++) {
49  if(i==rd1.intValue()) {
50  consts[i]=constt;
51  }else {
52  consts[i]=0;
53  }
54  }
55  }
56  System.out.println(Arrays.toString(consts));
57  pbSubtracted.add(consts);
58  RenderedOp subtractedImage = JAI.create("addconst", pbSubtracted);
59  System.out.println(subtractedImage);
60  /*MeasurementRange<?> range = null;
61  MathTransform1D transferfunc = null;
62  Unit<?> unit = null;
63  try {
64  range=raster.getSampleDimensions().get(rd1).getMeasurementRange().get();
65  }catch(Exception e) {
66 
67  }
68  try {
69  transferfunc=raster.getSampleDimensions().get(rd1).getTransferFunction().get();
70  }catch(Exception e) {
71 
72  }
73  try {
74  unit=raster.getSampleDimensions().get(rd1).getUnits().get();
75  }catch(Exception e) {
76 
77  }*/
78  final SampleDimension sd =raster.getSampleDimensions().get(rd1);/* new SampleDimension.Builder().setName("t")
79  .addQuantitative(
80  (raster.getSampleDimensions().get(rd1).getName() + " addconst "
81  + constt).toString(),
82  raster.getSampleDimensions().get(rd1).getMeasurementRange(),
83  raster.getSampleDimensions().get(rd1).getTransferFunction(),
84  raster.getSampleDimensions().get(rd1).getUnits())
85  .build();
86  */
87  List<SampleDimension>sds=new LinkedList<SampleDimension>();
88  sds.add(sd);
89  GridExtent extent=new GridExtent(subtractedImage.getWidth(), subtractedImage.getHeight());
90  GridGeometry gridgeom=new GridGeometry(extent, PixelInCell.CELL_CENTER, raster.getGridGeometry().getGridToCRS(PixelInCell.CELL_CENTER), raster.getCoordinateReferenceSystem());
91  List<SampleDimension> dimensions=new LinkedList<SampleDimension>();
92  DefaultNameFactory fac=new DefaultNameFactory();
93  for(int i=0;i<subtractedImage.getNumBands();i++) {
94  dimensions.add(new SampleDimension(fac.createGenericName(null, "Dimension "+i),0.,new LinkedList<Category>()));
95  }
96  BufferedGridCoverage coverage=new BufferedGridCoverage(
97  gridgeom, dimensions, subtractedImage.getData().getDataBuffer());
98  /*
99  * Create the grid coverage, gets its image and set values directly as short
100  * integers.
101  */
102  //BufferedGridCoverage coverage=new BufferedGridCoverage(raster.getGridGeometry(),
103  // sds, subtractedImage.getData());
104  /*BufferedGridCoverage coverage = new BufferedGridCoverage(raster.getGridGeometry(),
105  sds, DataBuffer.TYPE_SHORT);
106  WritableRaster rasterr = ((BufferedImage) coverage.render(null)).getRaster();
107  rasterr.setRect(subtractedImage.getSourceImage(0).getData());*/
108  return coverage;
109  }