[geotk] First try with geo-tk. Display a map with Shapefile
Arnaud Vandecasteele
arnaud.sig at gmail.com
Fri Sep 9 12:50:54 EDT 2011
Hi all,
I'm "playing" with geo-tk and I'm trying to display a map which
contains a Shapefile.
I've almost succeed to do what I want but my data are not visible on the map.
Did I miss something ?
If you could have a look on my code it will be great.
Thanks for your help
Best regards
Arnaud
package geoTest;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.geotoolkit.data.FeatureCollection;
import org.geotoolkit.data.query.QueryBuilder;
import org.geotoolkit.data.shapefile.ShapefileDataStore;
import org.geotoolkit.gui.swing.go2.JMap2D;
import org.geotoolkit.gui.swing.go2.control.JNavigationBar;
import org.geotoolkit.map.MapBuilder;
import org.geotoolkit.map.MapContext;
import org.geotoolkit.map.MapLayer;
import org.geotoolkit.referencing.crs.DefaultGeographicCRS;
import org.geotoolkit.storage.DataStoreException;
import org.geotoolkit.util.RandomStyleFactory;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.type.Name;
public class createMapPanel {
/**
* @param args
*/
public static void main(String[] args) {
MapContext mapContext =
MapBuilder.createContext(DefaultGeographicCRS.WGS84);
addShpData(mapContext);
JMap2D map = new JMap2D();
map.getContainer().setContext(mapContext);
map.setBackground(new Color(0,150,150));
JFrame pJFrame = createGUI(map);
pJFrame.setVisible(true);
}
public static JFrame createGUI(JMap2D map){
JFrame frm = new JFrame("My first map with GeoToolkit");
//Add elements
JPanel pJPanel = new JPanel(new BorderLayout());
JNavigationBar navBar = new JNavigationBar(map);
pJPanel.add(BorderLayout.NORTH,navBar);
pJPanel.add(BorderLayout.CENTER, map);
//Create
frm.setContentPane(pJPanel);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setSize(new Dimension(500,500));
frm.setVisible(true);
return frm;
}
public static void addShpData(MapContext context){
try {
URL shapeURL = new
File("/home/arnaud/GisData/World/TM_WORLD_BORDERS-0.3/TM_WORLD_BORDERS-0.3.shp").toURI().toURL();
//final DataStore store = DataStoreFinder.getDataStore("url", shapeURL);
ShapefileDataStore store = new ShapefileDataStore(shapeURL);
final Name name = store.getNames().iterator().next();
final FeatureCollection<SimpleFeature> fs =
store.createSession(true).getFeatureCollection(QueryBuilder.all(name));
final MapLayer layer = MapBuilder.createFeatureLayer(fs,
RandomStyleFactory.createDefaultVectorStyle(fs));
layer.setVisible(true);
context.layers().add(layer);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DataStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
More information about the Geotoolkit
mailing list