Package org.geotools.renderer.crs

Examples of org.geotools.renderer.crs.ProjectionHandler


        // try multiple coverage with projection handling, should not make a difference
        // since we are already reading everything in a single shot, just in need of coverage
        // replication
        // (which has to be performed after the eventual reprojection, so not here in the reader)
        ProjectionHandler handler = ProjectionHandlerFinder.getHandler(mapExtent,
                reader.getCoordinateReferenceSystem(), true);
        List<GridCoverage2D> coverages = helper.readCoverages(null, handler);
        // System.out.println(coverages);
        assertEquals(1, coverages.size());
        assertEquals(envelope, coverages.get(0).getEnvelope2D());
View Full Code Here


        assertEquals(-90, envelope.getMinY(), EPS);
        assertEquals(90, envelope.getMaxY(), EPS);

        // now read with projection handling instead, we must get two at the
        // two ends of the dateline
        ProjectionHandler handler = ProjectionHandlerFinder.getHandler(mapExtent,
                reader.getCoordinateReferenceSystem(), true);
        List<GridCoverage2D> coverages = helper.readCoverages(null, handler);
        // System.out.println(coverages);
        assertEquals(2, coverages.size());
        Envelope2D firstEnvelope = coverages.get(0).getEnvelope2D();
View Full Code Here

        // System.out.println(envelope);
        assertTrue(envelope.getMinX() < -100);
        assertTrue(envelope.getMaxX() > 100);

        // now read via the projection handlers
        ProjectionHandler handler = ProjectionHandlerFinder.getHandler(mapExtent,
                reader.getCoordinateReferenceSystem(), true);
        List<GridCoverage2D> coverages = helper.readCoverages(null, handler);
        // System.out.println(coverages);
        assertEquals(1, coverages.size());
        envelope = coverages.get(0).getEnvelope2D();
View Full Code Here

        // System.out.println(envelope);
        assertTrue(envelope.getMinX() < -100);
        assertTrue(envelope.getMaxX() > 100);

        // now read via the projection handlers
        ProjectionHandler handler = ProjectionHandlerFinder.getHandler(mapExtent,
                reader.getCoordinateReferenceSystem(), true);
        List<GridCoverage2D> coverages = helper.readCoverages(null, handler);
        // System.out.println(coverages);
        assertEquals(1, coverages.size());
        envelope = coverages.get(0).getEnvelope2D();
View Full Code Here

        // System.out.println(mapExtent.transform(DefaultGeographicCRS.WGS84, true));
        GridCoverageReaderHelper helper = new GridCoverageReaderHelper(reader, new Rectangle(400,
                200), mapExtent, Interpolation.getInstance(Interpolation.INTERP_NEAREST));

        // read, nothing should come out
        ProjectionHandler handler = ProjectionHandlerFinder.getHandler(mapExtent,
                reader.getCoordinateReferenceSystem(), true);
        List<GridCoverage2D> coverages = helper.readCoverages(null, handler);
        assertTrue(coverages.isEmpty());
    }
View Full Code Here

        GridCoverageReaderHelper helper = new GridCoverageReaderHelper(reader, new Rectangle(400,
                200), mapExtent, Interpolation.getInstance(Interpolation.INTERP_NEAREST));

        // read, we should get back a coverage, not a exception
        ProjectionHandler handler = ProjectionHandlerFinder.getHandler(mapExtent,
                reader.getCoordinateReferenceSystem(), true);
        List<GridCoverage2D> coverages = helper.readCoverages(null, handler);
        assertEquals(1, coverages.size());
       
       
View Full Code Here

            IOException, TransformException {
        // see if we have a projection handler
        CoordinateReferenceSystem sourceCRS = reader.getCoordinateReferenceSystem();
        CoordinateReferenceSystem targetCRS = destinationEnvelope.getCoordinateReferenceSystem();

        ProjectionHandler handler = null;
        List<GridCoverage2D> coverages;
        // read all the coverages we need, cut and whatnot
        GridCoverageReaderHelper rh = new GridCoverageReaderHelper(reader, destinationSize,
                ReferencedEnvelope.reference(destinationEnvelope), interpolation);
        // are we dealing with a remote service wrapped in a reader, one that can handle reprojection
        // by itself?
        if(GridCoverageReaderHelper.isReprojectingReader(reader)) {
            GridCoverage2D coverage = rh.readCoverage(readParams);
            coverages = new ArrayList<>();
            coverages.add(coverage);
        } else {
            handler = ProjectionHandlerFinder.getHandler(rh.getReadEnvelope(),
                    sourceCRS, wrapEnabled);
            if (handler instanceof WrappingProjectionHandler) {
                // raster data is monolithic and can cover the whole world, disable
                // the geometry wrapping heuristic
                ((WrappingProjectionHandler) handler).setDatelineWrappingCheckEnabled(false);
            }
            coverages = rh.readCoverages(readParams, handler);
        }

        // reproject if needed
        double[] bgValues = GridCoverageRendererUtilities.colorToArray(background);
        List<GridCoverage2D> reprojectedCoverages = new ArrayList<GridCoverage2D>();
        for (GridCoverage2D coverage : coverages) {
            final CoordinateReferenceSystem coverageCRS = coverage.getCoordinateReferenceSystem();
            if (!CRS.equalsIgnoreMetadata(coverageCRS, destinationCRS)) {
                GridCoverage2D reprojected = reproject(coverage, true, bgValues);
                if (reprojected != null) {
                    reprojectedCoverages.add(reprojected);
                }
            } else {
                reprojectedCoverages.addAll(coverages);
            }
        }

        // displace them if needed via a projection handler
        List<GridCoverage2D> displacedCoverages = new ArrayList<GridCoverage2D>();
        if (handler != null) {
            Envelope testEnvelope = ReferencedEnvelope.reference(destinationEnvelope);
            MathTransform mt = CRS.findMathTransform(sourceCRS, targetCRS);
            PolygonExtractor polygonExtractor = new PolygonExtractor();
            for (GridCoverage2D coverage : reprojectedCoverages) {
                Polygon polygon = JTS.toGeometry((BoundingBox) coverage.getEnvelope2D());
                Geometry postProcessed = handler.postProcess(mt, polygon);
                // extract sub-polygons and displace
                List<Polygon> polygons = polygonExtractor.getPolygons(postProcessed);
                for (Polygon displaced : polygons) {
                    // check we are really inside the display area before moving one
                    Envelope intersection = testEnvelope.intersection(displaced
View Full Code Here

                sourceEnvelopeInSubsettingCRS = new WCSEnvelope(CRS.transform(
                        reader.getOriginalEnvelope(), subsettingCRS));
            } catch (Exception e) {
                try {
                    // see if we can get a valid restricted area using the projection handlers
                    ProjectionHandler handler = ProjectionHandlerFinder.getHandler(
                            new ReferencedEnvelope(0, 1, 0, 1, subsettingCRS), sourceCRS, false);
                    if (handler != null) {
                        ReferencedEnvelope validArea = handler.getValidAreaBounds();
                        Envelope intersection = validArea.intersection(ReferencedEnvelope
                                .reference(reader.getOriginalEnvelope()));
                        ReferencedEnvelope re = new ReferencedEnvelope(intersection, sourceCRS);
                        sourceEnvelopeInSubsettingCRS = new WCSEnvelope(re.transform(subsettingCRS,
                                true));
View Full Code Here

    private void addEnvelopes(Envelope envelope, List<GeneralEnvelope> readEnvelopes,
            CoordinateReferenceSystem readerCRS) throws TransformException, FactoryException {
        // leverage GeoTools projection handlers to figure out exactly which areas we should be
        // reading
        ProjectionHandler handler = ProjectionHandlerFinder.getHandler(new ReferencedEnvelope(
                envelope), readerCRS, false);
        if (handler == null) {
            readEnvelopes.add(new GeneralEnvelope(envelope));
        } else {
            List<ReferencedEnvelope> queryEnvelopes = handler.getQueryEnvelopes();
            for (ReferencedEnvelope qe : queryEnvelopes) {
                readEnvelopes.add(new GeneralEnvelope(qe));
            }
        }
    }
View Full Code Here

TOP

Related Classes of org.geotools.renderer.crs.ProjectionHandler

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.