Package org.geoserver.catalog

Source Code of org.geoserver.catalog.CoverageViewReaderTest

/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2014 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.catalog;

import static org.junit.Assert.assertEquals;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import javax.xml.namespace.QName;

import org.geoserver.catalog.CoverageView.CompositionType;
import org.geoserver.catalog.CoverageView.CoverageBand;
import org.geoserver.catalog.CoverageView.InputCoverageBand;
import org.geoserver.data.test.MockData;
import org.geoserver.data.test.SystemTestData;
import org.geoserver.test.GeoServerSystemTestSupport;
import org.geotools.coverage.grid.GridCoverage2D;
import org.geotools.coverage.grid.io.GranuleStore;
import org.geotools.coverage.grid.io.StructuredGridCoverage2DReader;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.factory.CommonFactoryFinder;
import org.geotools.geometry.jts.ReferencedEnvelope;
import org.junit.Test;
import org.opengis.coverage.grid.GridCoverage;
import org.opengis.coverage.grid.GridCoverageReader;
import org.opengis.filter.Filter;
import org.opengis.filter.FilterFactory2;

/**
* Base support class for CoverageViews based on multiple coverages from the same store.
*
* @author Daniele Romagnoli, GeoSolutions
*
*/
public class CoverageViewReaderTest extends GeoServerSystemTestSupport {

    public final static FilterFactory2 FF = CommonFactoryFinder.getFilterFactory2();

    protected static QName CURRENT = new QName(MockData.SF_URI, "regional_currents",
            MockData.SF_PREFIX);

    private CoverageView coverageView = null;

    @Override
    protected void setUpTestData(SystemTestData testData) throws Exception {
        super.setUpTestData(testData);
        testData.setUpRasterLayer(CURRENT, "currents.zip", null, null, CoverageViewReaderTest.class);

        createCoverageView();
    }

    @Override
    protected void onSetUp(SystemTestData testData) throws Exception {
        super.onSetUp(testData);
        addViewToCatalog();
    }

    private void addViewToCatalog() throws Exception {
        final Catalog cat = getCatalog();
        final CoverageStoreInfo storeInfo = cat.getCoverageStoreByName("regional_currents");
      
        final CatalogBuilder builder = new CatalogBuilder(cat);
        builder.setStore(storeInfo);

        final CoverageInfo coverageInfo = coverageView.createCoverageInfo("regional_currents", storeInfo, builder);
        coverageInfo.getParameters().put("USE_JAI_IMAGEREAD","false");
        cat.add(coverageInfo);
        final LayerInfo layerInfo = builder.buildLayer(coverageInfo);
        cat.add(layerInfo);
    }

    private void createCoverageView() throws Exception {
        final InputCoverageBand band_u = new InputCoverageBand("u-component_of_current_surface", "0");
        final CoverageBand outputBand_u = new CoverageBand(Collections.singletonList(band_u),
                "u-component_of_current_surface@0", 0, CompositionType.BAND_SELECT);

        final InputCoverageBand band_v = new InputCoverageBand("v-component_of_current_surface", "0");
        final CoverageBand outputBand_v = new CoverageBand(Collections.singletonList(band_v),
                "v-component_of_current_surface@0", 1, CompositionType.BAND_SELECT);
        final List<CoverageBand> coverageBands = new ArrayList<CoverageBand>(2);
        coverageBands.add(outputBand_u);
        coverageBands.add(outputBand_v);
        coverageView = new CoverageView("regional_currents", coverageBands);
    }

    /**
     * @throws Exception
     */
    @Test
    public void testCoverageView() throws Exception {
        final Catalog cat = getCatalog();
        final CoverageInfo coverageInfo = cat.getCoverageByName("regional_currents");
        final MetadataMap metadata = coverageInfo.getMetadata();

        final CoverageView metadataCoverageView = (CoverageView) metadata.get(CoverageView.COVERAGE_VIEW);
        assertEquals(metadataCoverageView, coverageView);

        final ResourcePool resPool = cat.getResourcePool();
        final ReferencedEnvelope bbox = coverageInfo.getLatLonBoundingBox();
        final GridCoverage coverage = resPool.getGridCoverage(coverageInfo, "regional_currents", bbox, null);
        assertEquals(coverage.getNumSampleDimensions(), 2);

        ((GridCoverage2D) coverage).dispose(true);
        final GridCoverageReader reader = resPool.getGridCoverageReader(coverageInfo, "regional_currents", null);
        final GranuleStore granules = (GranuleStore) ((StructuredGridCoverage2DReader) reader).getGranules("regional_currents", true);
        SimpleFeatureCollection granulesCollection = granules.getGranules(null);
        assertEquals(1, granulesCollection.size());
        final Filter filter = FF.equal(FF.property("location"), FF.literal("sample.grb2"), true);
        final int removed = granules.removeGranules(filter);
        assertEquals (1, removed);
        granulesCollection = granules.getGranules(null);
        assertEquals(0, granulesCollection.size());
        reader.dispose();
    }

}
TOP

Related Classes of org.geoserver.catalog.CoverageViewReaderTest

TOP
Copyright © 2018 www.massapi.com. 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.