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

Public Member Functions

String getURI ()
 
GridCoverage modify (GridCoverage inputCoverage, Double xScale, Double yScale)
 
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 1 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  Double longitude = Double.valueOf(args[1].stringValue());
24  Double latitude = Double.valueOf(args[2].stringValue());
25  GridCoverage result = modify(geom,longitude,latitude);
26  return valueFactory.createLiteral(((RasterLiteral) l).unparse(result),((Literal)args[0]).getDatatype());
27  }
28  return null;
29  }
abstract GridCoverage modify(GridCoverage coverage, Double longitude, Double latitude)

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

◆ getURI()

String getURI ( )
20  {
21  return POSTGIS.st_rescale.stringValue();
22  }

References POSTGIS.st_rescale.

◆ modify()

GridCoverage modify ( GridCoverage  inputCoverage,
Double  xScale,
Double  yScale 
)

Reimplemented from RasterModifierDoubleDoubleFunction.

25  {
26  /*if (xScale <= 0) {
27  throw new InvalidParameterValueException("xScale must be greater than zero", "xScale",
28  xScale);
29  }
30 
31  if (yScale <= 0) {
32  throw new InvalidParameterValueException("yScale must be greater than zero", "yScale",
33  yScale);
34  }
35 
36  this.initilizeVariables(inputCoverage);
37 
38  final int numBands = inputCoverage.getSampleDimensions().size();
39 
40  ReferencedEnvelope extent = new ReferencedEnvelope(inputCoverage.getEnvelope());
41  GridGeometry gridGeometry2D = inputCoverage.getGridGeometry();
42  AffineTransform gridToWorld = (AffineTransform) gridGeometry2D.getGridToCRS2D();
43  CellSizeX = Math.abs(gridToWorld.getScaleX()) * xScale;
44  CellSizeY = Math.abs(gridToWorld.getScaleY()) * yScale;
45 
46  // 1. The output size is multiplied by the scale factor for both the x and y directions. The
47  // number of columns and rows stays the same in this process, but the cell size is
48  // multiplied by the scale factor.
49  // 2. The scale factor must be positive.
50  // 3. A scale factor greater than one means the image will be rescaled to a larger
51  // dimension,
52  // resulting in a larger extent because of a larger cell size.
53  // 4. A scale factor less than one means the image will be rescaled to a smaller dimension,
54  // resulting in a smaller extent because of a smaller cell size.
55 
56  // Rescale extent
57  final PlanarImage inputImage = (PlanarImage) inputCoverage.getRenderedImage();
58  double maxX = extent.getMinX() + (inputImage.getWidth() * CellSizeX);
59  double maxY = extent.getMinY() + (inputImage.getHeight() * CellSizeY);
60 
61  CoordinateReferenceSystem crs = inputCoverage.getCoordinateReferenceSystem();
62  Envelope Extent = inputCoverage.getGridGeometry().getEnvelope();
63 
64  if (numBands == 1) {
65  return createGridCoverage(inputCoverage.getName(), inputImage);
66  } else {
67  SampleDimension[] bands = inputCoverage.getSampleDimensions();
68 
69  double[] nodataValues = bands[0].getNoDataValues();
70  Object noData = nodataValues == null ? Integer.MAX_VALUE : nodataValues[0];
71 
72  Map properties = inputCoverage.getProperties();
73  properties.put(Vocabulary.formatInternational(VocabularyKeys.NODATA), noData);
74  properties.put("GC_NODATA", noData);
75 
76  GridCoverageFactory factory = CoverageFactoryFinder.getGridCoverageFactory(null);
77  return factory.create(inputCoverage.getName(), inputImage, Extent, bands, null,
78  properties);
79  }
80  }*/
81  return null;
82 
83 }