Package org.geowebcache.layer

Examples of org.geowebcache.layer.TileLayer


     *            the new layer to overwrite the existing layer
     * @throws NoSuchElementException
     * @see org.geowebcache.config.Configuration#modifyLayer(org.geowebcache.layer.TileLayer)
     */
    public synchronized void modifyLayer(TileLayer tl) throws NoSuchElementException {
        TileLayer previous = getTileLayer(tl.getName());
        if (null == previous) {
            throw new NoSuchElementException("Layer " + tl.getName() + " does not exist");
        }

        gwcConfig.getLayers().remove(previous);
View Full Code Here


    /**
     * @return {@code true} if the layer was removed, {@code false} if no such layer exists
     * @see org.geowebcache.config.Configuration#removeLayer(java.lang.String)
     */
    public synchronized boolean removeLayer(final String layerName) {
        final TileLayer tileLayer = getTileLayer(layerName);
        if (tileLayer == null) {
            return false;
        }

        boolean removed = false;
View Full Code Here

public class WMSTileFuserTest extends TestCase {
    GridSetBroker gridSetBroker = new GridSetBroker(false, false);
   
    public void testTileFuserResolution() throws Exception {
        TileLayer layer = createWMSLayer();
       
        // request fits inside -30.0,15.0,45.0,30
        BoundingBox bounds = new BoundingBox(-25.0,17.0,40.0,22);
       
        // One in between
        int width = (int) bounds.getWidth() * 10;
        int height= (int) bounds.getHeight() * 10;
        GridSubset gridSubset = layer.getGridSubset(layer.getGridSubsets().iterator().next());
        WMSTileFuser tileFuser = new WMSTileFuser(layer, gridSubset, bounds, width, height);
        tileFuser.determineSourceResolution();
        assertEquals(0.087890625, tileFuser.srcResolution, 0.087890625*0.001);
       
        // Zoomed too far out
View Full Code Here

        tileFuser.determineSourceResolution();
        assertEquals(10,tileFuser.srcIdx);
    }
   
    public void testTileFuserSubset() throws Exception {
        TileLayer layer = createWMSLayer();
       
        // request fits inside -30.0,15.0,45.0,30
        BoundingBox bounds = new BoundingBox(-25.0,17.0,40.0,22);
       
        // One in between
        int width = (int) bounds.getWidth() * 10;
        int height= (int) bounds.getHeight() * 10;
        GridSubset gridSubset = layer.getGridSubset(layer.getGridSubsets().iterator().next());
        WMSTileFuser tileFuser = new WMSTileFuser(layer, gridSubset, bounds, width, height);
        tileFuser.determineSourceResolution();
        tileFuser.determineCanvasLayout();
       
        assertTrue(tileFuser.srcBounds.contains(bounds));
View Full Code Here

        assertEquals(comparison.right, tileFuser.canvOfs.right);
        assertEquals(comparison.top, tileFuser.canvOfs.top);
    }
   
    public void testTileFuserSuperset() throws Exception {
        TileLayer layer = createWMSLayer();
       
        // request larger than -30.0,15.0,45.0,30
        BoundingBox bounds = new BoundingBox(-35.0,14.0,55.0,39);
       
        // One in between
        int width = (int) bounds.getWidth() * 25;
        int height= (int) bounds.getHeight() * 25;
        GridSubset gridSubset = layer.getGridSubset(layer.getGridSubsets().iterator().next());
        WMSTileFuser tileFuser = new WMSTileFuser(layer, gridSubset, bounds, width, height);
        tileFuser.determineSourceResolution();
        tileFuser.determineCanvasLayout();
    }
View Full Code Here

        tileFuser.determineSourceResolution();
        tileFuser.determineCanvasLayout();
    }

    public void testWriteResponse() throws Exception {
      final TileLayer layer = createWMSLayer();
      // request larger than -30.0,15.0,45.0,30
        BoundingBox bounds = new BoundingBox(-35.0,14.0,55.0,39);
       
        // One in between
        int width = (int) bounds.getWidth() * 25;
        int height= (int) bounds.getHeight() * 25;
        layer.getGridSubset(layer.getGridSubsets().iterator().next());
        File temp = File.createTempFile("gwc", "wms");
        temp.delete();
        temp.mkdirs();
        try {
          TileLayerDispatcher dispatcher = new TileLayerDispatcher(gridSetBroker) {
View Full Code Here

     */
    public void handleRequest(Conveyor conv) throws GeoWebCacheException {

        ConveyorKMLTile tile = (ConveyorKMLTile) conv;

        TileLayer layer;
        if (tile.getHint() == HINT_DEBUGGRID) {
            layer = KMLDebugGridLayer.getInstance();

            // Generate random tile for debugging
            if (tile.getWrapperMimeType() == null) {
                tile.setTileLayer(layer);

                try {
                    layer.getTile(tile);
                } catch (Exception e) {
                    e.printStackTrace();
                }

                String mimeStr = getMimeTypeOverride(tile);
View Full Code Here

     * Creates a superoverlay, ie. a short description and network links to the first overlays.
     *
     * @param tile
     */
    private void handleSuperOverlay(ConveyorKMLTile tile) throws GeoWebCacheException {
        TileLayer layer = tile.getLayer();

        GridSubset gridSubset = tile.getGridSubset();

        // int srsIdx = layer.getSRSIndex(srs);
        BoundingBox bbox = gridSubset.getCoverageBestFitBounds();

        String formatExtension = "." + tile.getMimeType().getFileExtension();
        if (tile.getWrapperMimeType() != null) {
            formatExtension = formatExtension + "." + tile.getWrapperMimeType().getFileExtension();
        }

        long[] gridRect = gridSubset.getCoverageBestFit();
        String networkLinks = null;

        // Check whether we need two tiles for world bounds or not
        if (gridRect[4] > 0 && (gridRect[2] != gridRect[0] || gridRect[3] != gridRect[1])) {
            throw new GeoWebCacheException(layer.getName() + " (" + bbox.toString()
                    + ") is too big for the sub grid set for " + gridSubset.getName()
                    + ", allow for smaller zoom levels.");
        } else if (gridRect[0] != gridRect[2]) {
            long[] gridLocWest = { 0, 0, 0 };
            long[] gridLocEast = { 1, 0, 0 };

            BoundingBox bboxWest = new BoundingBox(bbox.getMinX(), bbox.getMinY(), 0.0,
                    bbox.getMaxY());
            BoundingBox bboxEast = new BoundingBox(0.0, bbox.getMinY(), bbox.getMaxX(),
                    bbox.getMaxY());

            networkLinks = superOverlayNetworLink(layer.getName() + " West", bboxWest,
                    tile.getUrlPrefix() + "/" + gridLocString(gridLocWest) + formatExtension)
                    + superOverlayNetworLink(layer.getName() + " East", bboxEast,
                            tile.getUrlPrefix() + "/" + gridLocString(gridLocEast)
                                    + formatExtension);

        } else {
            long[] gridLoc = { gridRect[0], gridRect[1], gridRect[4] };

            networkLinks = superOverlayNetworLink(layer.getName(), bbox, tile.getUrlPrefix() + "/"
                    + gridLocString(gridLoc) + formatExtension);
        }

        String xml = KMLHeader() + "\n<Folder>" + getLookAt(bbox) + networkLinks + "\n</Folder>"
                + "\n</kml>\n";
View Full Code Here

     * 2) KML: The cache will only contain the overlay itself, the overlay will cause a separate
     * tile request to get the data
     */
    private void handleOverlay(ConveyorKMLTile tile) throws GeoWebCacheException {

        TileLayer tileLayer = tile.getLayer();

        boolean packageData = false;
        if (tile.getWrapperMimeType() == XMLMime.kmz) {
            packageData = true;
        }

        // TODO The 1.1 branch doesn't have a good way of storing the archives.
        // For now we compress on every request

        // Did we get lucky?
        // TODO need to look into expiration here
        // if(tile.retrieve(-1)) {
        // writeResponse(tile,true);
        // return;
        // }

        // Sigh....
        if (!packageData) {
            String overlayXml = createOverlay(tile, false);
            tile.setBlob(new ByteArrayResource(overlayXml.getBytes()));
            tile.setStatus(200);
            // tileLayer.putTile(tile);
        } else {
            // Get the overlay
            String overlayXml = createOverlay(tile, true);

            // Get the data (cheat)
            try {
                tile.setWrapperMimeType(null);
                try {
                    tileLayer.getTile(tile);
                } catch (OutsideCoverageException oce) {
                    log.error("Out of bounds: " + Arrays.toString(tile.getTileIndex())
                            + " should never habe been linked to.");
                    throw oce;
                }
View Full Code Here

     */
    private static String createOverlay(ConveyorKMLTile tile, boolean isPackaged)
            throws ServiceException, GeoWebCacheException {
        boolean isRaster = (tile.getMimeType() instanceof ImageMime);

        TileLayer tileLayer = tile.getLayer();

        GridSubset gridSubset = tile.getGridSubset();

        long[] gridLoc = tile.getTileIndex();

        BoundingBox bbox = gridSubset.boundsFromIndex(gridLoc);

        String refreshTags = "";
        int refreshInterval = tileLayer.getExpireClients((int) gridLoc[2]);
        if (refreshInterval > 0) {
            refreshTags = "\n<refreshMode>onInterval</refreshMode>" + "\n<refreshInterval>"
                    + refreshInterval + "</refreshInterval>";
        }
       
View Full Code Here

TOP

Related Classes of org.geowebcache.layer.TileLayer

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.