package org.geotoolkit.pending.demo.mapmodel;
import org.geotoolkit.coverage.io.CoverageIO;
import org.geotoolkit.coverage.io.GridCoverageReader;
import org.geotoolkit.data.FeatureCollection;
import org.geotoolkit.data.FeatureStore;
import org.geotoolkit.data.query.Query;
import org.geotoolkit.data.query.QueryBuilder;
import org.geotoolkit.data.session.Session;
import org.geotoolkit.factory.FactoryFinder;
import org.geotoolkit.factory.Hints;
import org.geotoolkit.gui.swing.render2d.JMap2DFrame;
import org.geotoolkit.image.io.plugin.WorldFileImageReader;
import org.geotoolkit.image.jai.Registry;
import org.geotoolkit.map.CoverageMapLayer;
import org.geotoolkit.map.FeatureMapLayer;
import org.geotoolkit.map.MapBuilder;
import org.geotoolkit.map.MapContext;
import org.geotoolkit.pending.demo.Demos;
import org.geotoolkit.style.MutableStyle;
import org.geotoolkit.style.MutableStyleFactory;
import org.geotoolkit.style.StyleConstants;
import java.io.File;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import org.geotoolkit.storage.DataStores;
public class MapContextDemo {
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();
//preloading parameters --------------
WorldFileImageReader.Spi.registerDefaults(null);
Registry.setDefaultCodecPreferences();
//------------------------------------
//create a map context
final MapContext context = MapBuilder.createContext();
//create a feature layer
final FeatureCollection features = openShapeFile();
final MutableStyle featureStyle = SF.style(StyleConstants.DEFAULT_LINE_SYMBOLIZER);
final FeatureMapLayer featureLayer = MapBuilder.createFeatureLayer(features, featureStyle);
//create a coverage layer
File cloudFile = new File(MapContextDemo.class.getResource("/data/coverage/clouds.jpg").toURI());
final CoverageMapLayer coverageLayer = MapBuilder.createCoverageLayer(cloudFile);
//add all layers in the context
context.layers().add(coverageLayer);
context.layers().add(featureLayer);
//quickly test if it works
JMap2DFrame.show(context);
//Build the context in a tree structure
//context.items().clear();
//
//MapItem bggroup = MapBuilder.createItem();
//bggroup.setDescription(SF.description("Background", ""));
//MapItem datagroup = MapBuilder.createItem();
//datagroup.setDescription(SF.description("Datas", ""));
//
//bggroup.items().add(wmsLayer);
//datagroup.items().add(coverageLayer);
//datagroup.items().add(featureLayer);
//
//context.items().add(bggroup);
//context.items().add(datagroup);
//
//JMap2DFrame.show(context);
}
public static FeatureCollection openShapeFile() throws Exception{
final Map<String,Serializable> params = new HashMap<String,Serializable>();
params.put("path", MapContextDemo.class.getResource("/data/world/Countries.shp").toURI());
final FeatureStore store = (FeatureStore) DataStores.open(params);
final Session session = store.createSession(true);
final Query query = QueryBuilder.all(store.getNames().iterator().next());
final FeatureCollection collection = session.getFeatureCollection(query);
return collection;
}
public static GridCoverageReader openWorldFile() throws Exception{
File cloudFile = new File(MapContextDemo.class.getResource("/data/coverage/clouds.jpg").toURI());
return CoverageIO.createSimpleReader(cloudFile);
}
}