ps.println("Grid bounds: " + coverage.getEnvelope()); ps.println("Grid CRS: " + coverage.getCoordinateReferenceSystem()); ps.println("Grid range: " + coverage.getGridGeometry().getGridRange()); ps.println("Grid to world: " + coverage.getGridGeometry().getGridToCRS()); ps.println("Contents:");
width = gg.getGridRange().getHigh(0) + 1; height = gg.getGridRange().getHigh(1) + 1; } else if (name.equals(AbstractGridFormat.BACKGROUND_COLOR.getName())) { backgroundColor = (Color) ((ParameterValue) param).getValue();
width = gg.getGridRange().getHigh(0) + 1; height = gg.getGridRange().getHigh(1) + 1;
LOGGER.fine("Source tiling:" + tileDimensions.width + "x" + tileDimensions.height); final GridEnvelope gr = sourceCoverage.getGridGeometry().getGridRange(); if (gr.getSpan(0) < tileDimensions.width) { tileDimensions.width = gr.getSpan(0);
step3 = step1.inverse(); allSteps = IdentityTransform.create(step1.getSourceDimensions()); targetGG = new GridGeometry2D(targetGG.getGridRange(), step1, targetCRS); } else { step1 = targetGG.getGridToCRS(CORNER); gridRange = toEnvelope(sourceGG.getGridRange()); gridRange = CRS.transform(allSteps.inverse(), gridRange); targetGG = force2D ? new GridEnvelope2D(sourceGG.getGridRange2D()) : sourceGG.getGridRange(); targetGG = new GridGeometry2D(targetGR, targetEnvelope); step1 = targetGG.getGridToCRS(CORNER); } else if (!targetGG.isDefined(GridGeometry2D.GRID_TO_CRS_BITMASK)) { targetGG = new GridGeometry2D(targetGG.getGridRange(), targetEnvelope); step1 = targetGG.getGridToCRS(CORNER); } else { mtr = sourceGG.getGridToCRS(CORNER); mtr = mtFactory.createConcatenatedTransform(mtr, step2.inverse()); targetGG = new GridGeometry2D(sourceGG.getGridRange(), mtr, targetCRS); final GridEnvelope targetGR = targetGG.getGridRange(); final int[] lower = targetGR.getLow().getCoordinateValues(); final int[] upper = targetGR.getHigh().getCoordinateValues();
MathTransform tx = g.getGridToCRS(); writer.addAttribute("dimension", String.valueOf(g.getGridRange().getDimension())); for (int r = 0; r < g.getGridRange().getDimension(); r++) { low.append(g.getGridRange().getLow(r)).append(" "); high.append(g.getGridRange().getHigh(r) + 1).append(" ");
private GeoTiffWriteParams buildWriteParams(GridCoverage2D coverage) { final RenderedImage renderedImage = coverage.getRenderedImage(); int tileWidth = renderedImage.getTileWidth(); int tileHeight = renderedImage.getTileHeight(); // avoid tiles bigger than the image final GridEnvelope gr = coverage.getGridGeometry().getGridRange(); if (gr.getSpan(0) < tileWidth) { tileWidth = gr.getSpan(0); } if (gr.getSpan(1) < tileHeight) { tileHeight = gr.getSpan(1); } GeoTiffWriteParams writeParams = new GeoTiffWriteParams(); writeParams.setTilingMode(GeoToolsWriteParams.MODE_EXPLICIT); writeParams.setTiling(tileWidth, tileHeight); return writeParams; }
/** * Checks if two geometries are equal, ignoring unspecified fields. If one or both geometries * has no "gridToCRS" transform, then this properties is not taken in account. Same apply for * the grid range. * * @param sourceGG The source geometry (never {@code null}). * @param targetGG The target geometry. May be {@code null}, which is considered as equivalent. * @return {@code true} if the two geometries are equal, ignoring unspecified fields. */ private static boolean equivalent( final GridGeometry2D sourceGG, final GridGeometry2D targetGG) { if (targetGG == null || targetGG.equals(sourceGG)) { return true; } if (targetGG.isDefined(GridGeometry2D.GRID_RANGE_BITMASK) && sourceGG.isDefined(GridGeometry2D.GRID_RANGE_BITMASK)) { if (!targetGG.getGridRange().equals(sourceGG.getGridRange())) { return false; } } if (targetGG.isDefined(GridGeometry2D.GRID_TO_CRS_BITMASK) && sourceGG.isDefined(GridGeometry2D.GRID_TO_CRS_BITMASK)) { // No needs to ask for a transform relative to a corner // since we will not apply a transformation here. if (!targetGG.getGridToCRS().equals(sourceGG.getGridToCRS())) { return false; } } return true; }
final GridEnvelope range = grid.getGridRange(); final int dimension = range.getDimension(); for (int i = 0; i < dimension; i++) {
static GridCoverage2D displace( GridCoverage2D coverage, double tx, double ty, GridCoverageFactory gridCoverageFactory) { // let's compute the new grid geometry GridGeometry2D originalGG = coverage.getGridGeometry(); GridEnvelope gridRange = originalGG.getGridRange(); Envelope2D envelope = originalGG.getEnvelope2D(); double minx = envelope.getMinX() + tx; double miny = envelope.getMinY() + ty; double maxx = envelope.getMaxX() + tx; double maxy = envelope.getMaxY() + ty; ReferencedEnvelope translatedEnvelope = new ReferencedEnvelope( minx, maxx, miny, maxy, envelope.getCoordinateReferenceSystem()); GridGeometry2D translatedGG = new GridGeometry2D(gridRange, translatedEnvelope); GridCoverage2D translatedCoverage = gridCoverageFactory.create( coverage.getName(), coverage.getRenderedImage(), translatedGG, coverage.getSampleDimensions(), new GridCoverage2D[] {coverage}, coverage.getProperties()); return translatedCoverage; }
GridEnvelope gridRangeA = coverageA.getGridGeometry().getGridRange(); GridEnvelope gridRangeB = coverageA.getGridGeometry().getGridRange(); if (gridRangeA.getSpan(0) != gridRangeB.getSpan(0) || gridRangeA.getSpan(1) != gridRangeB.getSpan(1)) {
final double xTrans = -at.getTranslateX() / xScale; final double yTrans = -at.getTranslateY() / yScale; final GridEnvelope range = gridGeometry.getGridRange(); final PlanarImage image = new ImageWorker()
this.originalEnvelope = new GeneralEnvelope((BoundingBox) coverage.getEnvelope2D()); this.originalGridRange = coverage.getGridGeometry().getGridRange();
public int getYRangeMax() { return gridGeometry.getGridRange().getHigh(1) + 1; }
public int getXRangeOffset() { return gridGeometry.getGridRange().getLow(0); }
public int getYRangeOffset() { return gridGeometry.getGridRange().getLow(1); }
sourceGG.isDefined(GridGeometry2D.GRID_RANGE_BITMASK)) if (!targetGG.getGridRange().equals(sourceGG.getGridRange())) { return false;
/** * Checks if two geometries are equal, ignoring unspecified fields. If one or both * geometries has no "gridToCRS" transform, then this properties is not taken in account. * Same apply for the grid range. * * @param range1 The first range. * @param range2 The second range. * @return {@code true} if the two geometries are equal, ignoring unspecified fields. */ private static boolean equivalent(final GridGeometry2D geom1, final GridGeometry2D geom2) { if (geom1.equals(geom2)) { return true; } if (geom1.isDefined(GridGeometry2D.GRID_RANGE) && geom2.isDefined(GridGeometry2D.GRID_RANGE)) { if (!geom1.getGridRange().equals(geom2.getGridRange())) { return false; } } if (geom1.isDefined(GridGeometry2D.GRID_TO_CRS) && geom2.isDefined(GridGeometry2D.GRID_TO_CRS)) { if (!geom1.getGridToCRS().equals(geom2.getGridToCRS())) { return false; } } return true; }
public void encode(OutputStream output) throws ServiceException, IOException { PrintStream ps = new PrintStream(output); ps.println("Grid bounds: " + coverage.getEnvelope()); ps.println("Grid CRS: " + coverage.getCoordinateReferenceSystem()); ps.println("Grid range: " + coverage.getGridGeometry().getGridRange()); ps.println("Grid to world: " + coverage.getGridGeometry().getGridToCRS()); ps.println("Contents:"); RenderedImage ri = coverage.getRenderedImage(); Raster raster = ri.getData(); for(int band = 0; band < raster.getNumBands(); band++) { ps.println("Band " + band + ":"); for (int j = raster.getMinY(); j < (raster.getMinY() + raster.getHeight()); j++) { for (int i = raster.getMinX(); i < (raster.getMinX() + raster.getWidth()); i++) { if(raster.getTransferType() == DataBuffer.TYPE_DOUBLE) ps.print(raster.getSampleDouble(i, j, band)); else if(raster.getTransferType() == DataBuffer.TYPE_FLOAT) ps.print(raster.getSampleFloat(i, j, band)); else ps.print(raster.getSample(i, j, band)); if(i < (raster.getMinX() + raster.getWidth() - 1)); ps.print(" "); } ps.println(); } } ps.flush(); }
private GridCoverage2D displaceCoverage(GridCoverage2D coverage, double offset) { // let's compute the new grid geometry GridGeometry2D originalGG = coverage.getGridGeometry(); GridEnvelope gridRange = originalGG.getGridRange(); Envelope2D envelope = originalGG.getEnvelope2D(); double minx = envelope.getMinX() + offset; double miny = envelope.getMinY(); double maxx = envelope.getMaxX() + offset; double maxy = envelope.getMaxY(); ReferencedEnvelope translatedEnvelope = new ReferencedEnvelope( minx, maxx, miny, maxy, envelope.getCoordinateReferenceSystem()); GridGeometry2D translatedGG = new GridGeometry2D(gridRange, translatedEnvelope); GridCoverage2D translatedCoverage = gridCoverageFactory.create( coverage.getName(), coverage.getRenderedImage(), translatedGG, coverage.getSampleDimensions(), new GridCoverage2D[] {coverage}, coverage.getProperties()); return translatedCoverage; }