Tile(TileRequest req) { GridEnvelope2D gridEnv = new GridEnvelope2D(0, 0, req.width, req.height); this.gg = new GridGeometry2D(gridEnv, (org.opengis.geometry.Envelope)(req.bbox)); // TODO: check that gg intersects graph area LOG.debug("preparing tile for {}", gg.getEnvelope2D()); // Envelope2D worldEnv = gg.getEnvelope2D(); this.width = gridEnv.width; this.height = gridEnv.height; }
@Override public void createIndividuals() { try { coverageCRS = CRS.decode(crsCode, true); } catch (Exception e) { LOG.error("error decoding coordinate reference system code.", e); return; } if (boundsFromGraph) { // autowire graph service or pass in } gridEnvelope = new GridEnvelope2D(0, 0, cols, rows); refEnvelope = new ReferencedEnvelope(left, right, bottom, top, coverageCRS); gridGeometry = new GridGeometry2D(gridEnvelope, refEnvelope); super.createIndividuals0(); }
public GridEnvelope getOriginalGridRange() { if (homogeneousCoverages) { return delegate.getOriginalGridRange(referenceName); } // Due to mixed combinations, let's take the envelope and divide the span // by the resolution GeneralEnvelope envelope = getOriginalEnvelope(); double[] res; try { res = getResolutionLevels()[0]; return new GridEnvelope2D( new Rectangle( (int) (envelope.getSpan(0) / res[0]), (int) (envelope.getSpan(1) / res[1]))); } catch (IOException e) { throw new IllegalArgumentException(e); } }
CRS.transform(gg.getCRSToGrid2D(PixelOrientation.UPPER_LEFT), bounds); GridEnvelope2D targetRange = new GridEnvelope2D( (int) Math.round(padRange.getMinimum(0)), (int) Math.round(padRange.getMinimum(1)),
GridEnvelope2D range = requestedGridGeometry.getGridRange2D(); GridEnvelope2D expandedRange = new GridEnvelope2D( (int) range.getMinX() - HETEROGENEOUS_RASTER_GUTTER, (int) range.getMinY() - HETEROGENEOUS_RASTER_GUTTER,
/** * The rectangle covering the actual raster data inside the tiled space * * @return */ public GridEnvelope getGridEnvelope() { return new GridEnvelope2D(this.gridEnvelope); }
final GridEnvelope2D testRange = new GridEnvelope2D(minX, minY, maxX, maxY);
gg.setValue( new GridGeometry2D( new GridEnvelope2D(0, 0, 10, 10), new ReferencedEnvelope(0, 1000, 0, 1000, UTM32N))); GridCoverage2DReader reader =
BufferedImage bi = new BufferedImage(360, 180, BufferedImage.TYPE_3BYTE_BGR); ImageLayout layout = new ImageLayout(bi); GridEnvelope2D gridRange = new GridEnvelope2D(0, 0, 360, 180); GridToEnvelopeMapper mapper = new GridToEnvelopeMapper(gridRange, envelope); AffineTransform gridToWorld = mapper.createAffineTransform();
/** * Creates a grid geometry from the specified bounds and <cite>grid to CRS</cite> affine * transform. * * @param bounds The image bounds in pixel coordinates. * @param gridToCRS The affine transform from pixel coordinates to "real world" coordinates. */ public ImageGeometry(final Rectangle bounds, final AffineTransform gridToCRS) { this.gridRange = new GridEnvelope2D(bounds); this.gridToCRS = new AffineTransform2D(gridToCRS); }
public RasterQueryInfo() { setResultDimensionInsideTiledImage(new GridEnvelope2D(0, 0, 0, 0)); setMatchingTiles(new GridEnvelope2D(0, 0, 0, 0)); setResultEnvelope(null); }
public void appendLoggingGeometries(String geomName, RenderedImage img) { if (LOGGER.isLoggable(GEOM_LEVEL)) { appendLoggingGeometries( geomName, new GridEnvelope2D( img.getMinX(), img.getMinY(), img.getWidth(), img.getHeight())); } }
/** * Classic way of computing the requested resolution * * @return */ private double[] computeClassicResolution() { final GridToEnvelopeMapper geMapper = new GridToEnvelopeMapper(new GridEnvelope2D(requestedRasterArea), requestedBBox); final AffineTransform tempTransform = geMapper.createAffineTransform(); return new double[] { XAffineTransform.getScaleX0(tempTransform), XAffineTransform.getScaleY0(tempTransform) }; }
/** * @see org.geotools.coverage.io.CoverageReadRequest#setDomainSubset(java.awt.Rectangle, * org.opengis.geometry.BoundingBox, org.opengis.referencing.datum.PixelInCell) */ public void setDomainSubset(final Rectangle rasterArea, final ReferencedEnvelope worldArea) { // get input elements if (rasterArea != null) { this.rasterArea = (Rectangle) rasterArea.clone(); } this.geographicArea = worldArea; // create a math transform final GridToEnvelopeMapper mapper = new GridToEnvelopeMapper( new GridEnvelope2D(rasterArea), new ReferencedEnvelope(worldArea)); mapper.setPixelAnchor(PixelInCell.CELL_CENTER); this.gridToWorldTransform = (MathTransform2D) mapper.createTransform(); }
@Override public GridEnvelope getOriginalGridRange(String coverageName) { if (!checkName(coverageName)) { throw new IllegalArgumentException( "The specified coverageName " + coverageName + "is not supported"); } List<TileMatrix> matrices = tiles.get(coverageName).getTileMatricies(); TileMatrix matrix = matrices.get(matrices.size() - 1); return new GridEnvelope2D( new Rectangle( matrix.getMatrixWidth() * matrix.getTileWidth(), matrix.getMatrixHeight() * matrix.getTileHeight())); }
private static GridEnvelope getTiledImageGridRange( Dimension tileSize, GridEnvelope matchingTiles) { int tiledImageMinX = (matchingTiles.getLow(0) * tileSize.width); int tiledImageMinY = (matchingTiles.getLow(1) * tileSize.height); int tiledWidth = (matchingTiles.getSpan(0) * tileSize.width); int tiledHeight = (matchingTiles.getSpan(1) * tileSize.height); GridEnvelope2D tiledImageGridRange; tiledImageGridRange = new GridEnvelope2D(tiledImageMinX, tiledImageMinY, tiledWidth, tiledHeight); return tiledImageGridRange; }
PyramidLevelInfo( final int level, final int numTilesWide, final int numTilesHigh, final GridEnvelope gridEnvelope, final GeneralEnvelope spatialExtent) { this.pyramidLevel = level; this.spatialExtent = spatialExtent; this.gridEnvelope = new GridEnvelope2D( gridEnvelope.getLow(0), gridEnvelope.getLow(1), gridEnvelope.getSpan(0), gridEnvelope.getSpan(1)); this.xTiles = numTilesWide; this.yTiles = numTilesHigh; }
private GridEnvelope computeImageGridRange(final int level, final SeRasterAttr rasterAttributes) throws SeException { SDEPoint imageOffset = rasterAttributes.getImageOffsetByLevel(level); int xOffset = (int) (imageOffset == null ? 0 : imageOffset.getX()); int yOffset = (int) (imageOffset == null ? 0 : imageOffset.getY()); int imageWidth = rasterAttributes.getImageWidthByLevel(level); int imageHeight = rasterAttributes.getImageHeightByLevel(level); return new GridEnvelope2D(xOffset, yOffset, imageWidth, imageHeight); }
private GridGeometry2D applyReadGutter(GridGeometry2D gg) { MathTransform gridToCRS = gg.getGridToCRS(); GridEnvelope2D range = new GridEnvelope2D(gg.getGridRange2D()); applyReadGutter(range); CoordinateReferenceSystem crs = gg.getEnvelope2D().getCoordinateReferenceSystem(); GridGeometry2D result = new GridGeometry2D(range, PixelInCell.CELL_CORNER, gridToCRS, crs, null); return result; }
@Test public void testZoomlevel3() throws IOException { MBTilesReader reader = new MBTilesReader(getClass().getResource("world_lakes.mbtiles"), null); GeneralParameterValue[] parameters = new GeneralParameterValue[1]; GridGeometry2D gg = new GridGeometry2D( new GridEnvelope2D(new Rectangle(500, 500)), new ReferencedEnvelope(0, 90.0, -85.0, 0, MBTilesReader.WGS_84)); parameters[0] = new Parameter<GridGeometry2D>(AbstractGridFormat.READ_GRIDGEOMETRY2D, gg); GridCoverage2D gc = reader.read(parameters); RenderedImage img = gc.getRenderedImage(); assertEquals(0, gc.getEnvelope().getMinimum(0), 0.01); assertEquals(-20037508.34, gc.getEnvelope().getMinimum(1), 0.01); assertEquals(15028131.25, gc.getEnvelope().getMaximum(0), 0.01); assertEquals(0, gc.getEnvelope().getMaximum(1), 0.01); assertEquals(768, img.getWidth()); assertEquals(1024, img.getHeight()); }