- I am using Geotools to display a road map of Bangalore
- Filter filter;
- FileDataStore store= FileDataStoreFinder.getDataStore(file);
- SimpleFeatureSource featureSource=store.getFeatureSource();
- SimpleFeatureCollection fc=featureSource.getFeatures(filter);
- SimpleFeatureIterator iter=fc.features();
- Set<FeatureId> IDs=new HashSet<FeatureId>();
- try{
- while(iter.hasNext()){
- SimpleFeature f=iter.next();
- IDs.add(f.getIdentifier());
- System.out.println(" "+f.getIdentifier());
- }
- iter.close();
- Style style=createSelectedStyle(IDs);
- MapContext map=new DefaultMapContext();
- map.addLayer(featureSource,style);
- JMapFrame.showMap(map);
- private Style createSelectedStyle(Set<FeatureId> IDs) {
- Rule selectedRule = createRule(SELECTED_COLOUR, SELECTED_COLOUR);
- selectedRule.setFilter(ff.id(IDs));
- Rule otherRule = createRule(LINE_COLOUR, FILL_COLOUR);
- otherRule.setElseFilter(true);
- FeatureTypeStyle fts = sf.createFeatureTypeStyle();
- fts.rules().add(selectedRule);
- fts.rules().add(otherRule);
- Style style2 = sf.createStyle();
- style2.featureTypeStyles().add(fts);
- return style2;
- }
- private Rule createRule(Color outlineColor, Color fillColor) {
- Symbolizer symbolizer = null;
- Fill fill = null;//not required if working with line
- Stroke stroke = sf.createStroke(ff.literal(outlineColor), ff.literal(LINE_WIDTH));
- symbolizer = sf.createLineSymbolizer(stroke, "the_geom");
- Rule rule = sf.createRule();
- rule.symbolizers().add(symbolizer);
- return rule;
- }