/** * Retrieves the original grid to world transformation for this {@link * AbstractGridCoverage2DReader}. * * @param pixInCell specifies the datum of the transformation we want. * @return the original grid to world transformation for this {@link * AbstractGridCoverage2DReader}. */ public MathTransform getOriginalGridToWorld(final PixelInCell pixInCell) { // Default implementation for backwards compatibility return getOriginalGridToWorld(coverageName, pixInCell); }
expect(reader.getFormat()).andReturn(format).anyTimes(); expect(reader.getGridCoverageCount()).andReturn(1); expect(reader.getOriginalGridToWorld(EasyMock.anyObject(PixelInCell.class))) .andReturn(new AffineTransform2D(gridToWorld)) .anyTimes();
@Override public MathTransform getOriginalGridToWorld( final String coverageName, final PixelInCell pixInCell) { // just reuse super class implementation but ensure that we do not use a // cached raster2model synchronized (this) { raster2Model = null; return super.getOriginalGridToWorld(coverageName, pixInCell); } }
private Rectangle createQueryGridEnvelope(DirectPosition pos) { final AbstractGridCoverage2DReader reader = sourceRef.get(); try { MathTransform worldToGridTransform = reader.getOriginalGridToWorld(PixelInCell.CELL_CORNER).inverse(); DirectPosition midPos = worldToGridTransform.transform(pos, null); int x = (int) midPos.getOrdinate(0); int y = (int) midPos.getOrdinate(1); int halfWidth = CACHED_RASTER_WIDTH / 2; final Rectangle queryRect = new Rectangle( x - halfWidth, y - halfWidth, CACHED_RASTER_WIDTH, CACHED_RASTER_WIDTH); GridEnvelope gridEnv = reader.getOriginalGridRange(); Rectangle rect = new Rectangle( gridEnv.getLow(0), gridEnv.getLow(1), gridEnv.getSpan(0), gridEnv.getSpan(1)); XRectangle2D.intersect(queryRect, rect, queryRect); return queryRect; } catch (Exception ex) { throw new RuntimeException(ex); } }
final double[][] compareLevels ) throws IndexOutOfBoundsException, IOException { double[] res = CoverageUtilities.getResolution((AffineTransform) coverageReader.getOriginalGridToWorld(PixelInCell.CELL_CORNER)); resolutionLevels[0][0] = res[0]; resolutionLevels[1][0] = res[1];
private boolean renewCachedCoverage(DirectPosition centrePos) { final Rectangle queryRect = createQueryGridEnvelope(centrePos); if (queryRect.isEmpty()) { return false; } final AbstractGridCoverage2DReader reader = sourceRef.get(); GeneralParameterValue parameter = new Parameter( AbstractGridFormat.READ_GRIDGEOMETRY2D, new GridGeometry2D(new GridEnvelope2D(queryRect), reader.getOriginalGridToWorld(PixelInCell.CELL_CENTER), reader.getCrs())); try { cachedCoverage = (GridCoverage2D) reader.read(new GeneralParameterValue[]{parameter}); return cachedCoverage != null; } catch (Exception ex) { throw new RuntimeException(ex); } }
MathTransform gridToCRS = reader.getOriginalGridToWorld(PixelInCell.CELL_CORNER); if (gridCRS != null) { Double[] origin = (Double[]) gridCRS.getGridOrigin();
MathTransform g2w = reader.getOriginalGridToWorld(PixelInCell.CELL_CENTER); if(g2w instanceof AffineTransform2D && readGG.getGridToCRS2D() instanceof AffineTransform2D) { AffineTransform2D atOriginal = (AffineTransform2D) g2w;