package org.geotoolkit.pending.demo.mapmodel; import org.geotoolkit.coverage.io.GridCoverageReader; import org.geotoolkit.data.FeatureCollection; import org.geotoolkit.factory.FactoryFinder; import org.geotoolkit.factory.Hints; import org.apache.sis.geometry.GeneralEnvelope; import org.geotoolkit.gui.swing.render2d.JMap2DFrame; import org.geotoolkit.map.MapBuilder; import org.geotoolkit.map.MapContext; import org.geotoolkit.map.MapLayer; import org.geotoolkit.map.ProcessedCollection; import org.geotoolkit.map.ProcessedCoverageReference; import org.geotoolkit.parameter.Parameters; import org.geotoolkit.pending.demo.Demos; import static org.geotoolkit.pending.demo.mapmodel.MapContextDemo.openWorldFile; import org.geotoolkit.processing.coverage.resample.ResampleDescriptor; import org.geotoolkit.processing.vector.buffer.BufferDescriptor; import org.apache.sis.referencing.CRS; import org.apache.sis.referencing.CommonCRS; import org.geotoolkit.style.MutableStyle; import org.geotoolkit.style.MutableStyleFactory; import org.geotoolkit.style.StyleConstants; import org.opengis.parameter.ParameterValueGroup; import org.opengis.referencing.crs.CoordinateReferenceSystem; /** * Demonstrate a MapLayer which source is the result of a process chain. * */ public class ProcessedLayerDemo { private static final MutableStyleFactory SF = (MutableStyleFactory) FactoryFinder.getStyleFactory( new Hints(Hints.STYLE_FACTORY, MutableStyleFactory.class)); public static void main(String[] args) throws Exception { Demos.init(); final MapContext context = MapBuilder.createContext(); final MapLayer processedColLayer = createProcessedCollectionLayer(); final MapLayer processedCovLayer = createProcessedCoverageLayer(); context.layers().add(processedCovLayer); context.layers().add(processedColLayer); JMap2DFrame.show(context); } private static MapLayer createProcessedCollectionLayer() throws Exception{ final FeatureCollection basedata = MapContextDemo.openShapeFile(); final ParameterValueGroup parameters = BufferDescriptor.INSTANCE.getInputDescriptor().createValue(); Parameters.getOrCreate(BufferDescriptor.FEATURE_IN, parameters).setValue(basedata); Parameters.getOrCreate(BufferDescriptor.LENIENT_TRANSFORM_IN, parameters).setValue(true); Parameters.getOrCreate(BufferDescriptor.DISTANCE_IN, parameters).setValue(50000); final ProcessedCollection processed = new ProcessedCollection(); processed.setProcessDescriptor(BufferDescriptor.INSTANCE); processed.setInputParameters(parameters); processed.setLifespan(-1); processed.setResultParameter(BufferDescriptor.FEATURE_OUT.getName().getCode()); final MutableStyle style = SF.style(StyleConstants.DEFAULT_LINE_SYMBOLIZER); final MapLayer layer = MapBuilder.createCollectionLayer(processed, style); return layer; } private static MapLayer createProcessedCoverageLayer() throws Exception{ final CoordinateReferenceSystem crs = CRS.forCode("EPSG:2154"); GeneralEnvelope env = new GeneralEnvelope(CommonCRS.WGS84.normalizedGeographic()); env.setRange(0, -30, +30); env.setRange(1, 20, 80); final GridCoverageReader baseData = openWorldFile(); final ParameterValueGroup parameters = ResampleDescriptor.INSTANCE.getInputDescriptor().createValue(); Parameters.getOrCreate(ResampleDescriptor.IN_COVERAGE, parameters).setValue(baseData.read(0, null)); Parameters.getOrCreate(ResampleDescriptor.IN_COORDINATE_REFERENCE_SYSTEM, parameters).setValue(env.getCoordinateReferenceSystem()); final ProcessedCoverageReference processed = new ProcessedCoverageReference(); processed.setProcessDescriptor(ResampleDescriptor.INSTANCE); processed.setInputParameters(parameters); processed.setLifespan(-1); processed.setResultParameter(ResampleDescriptor.OUT_COVERAGE.getName().getCode()); final MutableStyle style = SF.style(StyleConstants.DEFAULT_RASTER_SYMBOLIZER); final MapLayer layer = MapBuilder.createCoverageLayer(processed, style); return layer; } }