Hello,

I tried to run that code, i use gt-main-2.6-SNAPSHOT.jar but i got error on
following line:

style.featureTypeStyles().add(fts);
The method add(capture#1-of ? extends FeatureTypeStyle) in the type
List<capture#1-of ? extends FeatureTypeStyle> is not applicable for the
arguments (FeatureTypeStyle).

Maybe i am using bad gt-main library?
I downloaded it from http://repo.opengeo.org/org/geotools/.

Thanks.



mbedward wrote:
> 
> Hi jv,
> 
> Below is some demo code that illustrates:
> 
> - creating a common feature type with point geometry for location and
> an attribute for species status
> 
> - creating features and adding them to a feature collection
> 
> - creating a rendering style to use different symbols depending on
> status value of a feature
> 
> - creating a map and displaying it with the JMapFrame.showMap static
> method
> 
> To run this code right now you will need to be using the bleeding edge
> GeoTools: 2.6-SNAPSHOT.
> 
> Give us some feedback and we can turn more of this into examples and
> docs for the GeoTools site.
> 
> Michael
> 
> import com.vividsolutions.jts.geom.Coordinate;
> import com.vividsolutions.jts.geom.Geometry;
> import com.vividsolutions.jts.geom.GeometryFactory;
> import com.vividsolutions.jts.geom.Point;
> import java.awt.Color;
> import java.util.HashMap;
> import java.util.Map;
> import org.geotools.factory.CommonFactoryFinder;
> import org.geotools.feature.FeatureCollection;
> import org.geotools.feature.FeatureCollections;
> import org.geotools.feature.simple.SimpleFeatureBuilder;
> import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
> import org.geotools.map.DefaultMapContext;
> import org.geotools.map.DefaultMapLayer;
> import org.geotools.map.MapContext;
> import org.geotools.map.MapLayer;
> import org.geotools.referencing.crs.DefaultGeographicCRS;
> import org.geotools.styling.FeatureTypeStyle;
> import org.geotools.styling.Graphic;
> import org.geotools.styling.Mark;
> import org.geotools.styling.PointSymbolizer;
> import org.geotools.styling.Rule;
> import org.geotools.styling.Style;
> import org.geotools.styling.StyleBuilder;
> import org.geotools.swing.JMapFrame;
> import org.opengis.feature.simple.SimpleFeature;
> import org.opengis.feature.simple.SimpleFeatureType;
> import org.opengis.filter.FilterFactory;
> import org.opengis.referencing.crs.CoordinateReferenceSystem;
> 
> 
> /**
>  * Demonstrates creating a feature type with a field that will be used to
>  * control point symbols for rendering the features
>  */
> 
> public class SpeciesStatus {
> 
>     public enum Status {
>         DISAPPEARED(1, Color.BLACK),
>         SURE(2, Color.GREEN),
>         UNSURE(3, Color.CYAN),
>         UNKNOWN(4, Color.GRAY);
> 
>         /* a map for reverse lookup */
>         private static Map<Integer, Status> lookup;
>         static {
>             lookup = new HashMap<Integer, Status>();
>             for (Status status : Status.values()) {
>                 lookup.put(status.getCode(), status);
>             }
>         }
> 
>         private int code;
>         private Color color;
> 
>         private Status(int code, Color color) {
>             this.code = code;
>             this.color = color;
>         }
> 
>         public int getCode() {
>             return code;
>         }
> 
>         public Color getColor() {
>             return color;
>         }
> 
>         public static Status get(int code) {
>             return lookup.get(code);
>         }
>     }
> 
>     private CoordinateReferenceSystem crs;
>     private SimpleFeatureType featureType;
>     private SimpleFeatureBuilder featureBuilder;
>     private GeometryFactory geomFactory;
> 
>     private FeatureCollection<SimpleFeatureType, SimpleFeature>
> featureColl;
>     private Style style;
> 
> 
>     public SpeciesStatus(CoordinateReferenceSystem crs) {
>         this.crs = crs;
>         this.featureColl = FeatureCollections.newCollection();
> 
>         createFeatureType();
>         createStyle();
>     }
> 
>     private void createFeatureType() {
>         SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
>         builder.setName("species_rec");
>         builder.setCRS(crs);
>         builder.add("the_geom", Point.class);  // geometry field
>         builder.add("speciesId", String.class);  // alpha-numeric ID for
> species
>         builder.add("status", Integer.class);  // integer status code
> 
>         featureType =  builder.buildFeatureType();
>     }
> 
>     /**
>      * Create a Style with a Rule for each of the Status values
>      * that we want to render as different symbols
>      */
>     public void createStyle() {
>         FilterFactory ff = CommonFactoryFinder.getFilterFactory2(null);
>         StyleBuilder sb = new StyleBuilder();
> 
>         Rule[] rules = new Rule[Status.values().length];
> 
>         int k = 0;
>         for (Status status : Status.values()) {
> 
>             Graphic graphic = sb.createGraphic();
> 
>             // remove the default symbol (a bit clunky)
>             graphic.graphicalSymbols().clear();
> 
>             // create a new symbol
>             Mark mark = sb.createMark(StyleBuilder.MARK_CIRCLE,
> status.getColor());
>             graphic.graphicalSymbols().add(mark);
> 
>             // our point symbolizer to use this symbol
>             PointSymbolizer sym = sb.createPointSymbolizer(graphic);
> 
>             // a rule that will select features to render with this status
> value
>             Rule rule = sb.createRule(sym);
>             rule.setFilter(ff.equals(ff.property("status"),
> ff.literal(status.getCode())));
>             rules[k++] = rule;
>         }
> 
>         // put all our rules together in a FeatureTypeStyle
>         FeatureTypeStyle fts =
> sb.createFeatureTypeStyle(featureType.getTypeName(), rules);
> 
>         this.style = sb.createStyle();
>         style.featureTypeStyles().add(fts);
>     }
> 
>     /**
>      * Add a new feature to out collection
>      * @param speciesId alpha-numeric species Id
>      * @param x location X coord (world)
>      * @param y location Y coord (world)
>      * @param status the species status category
>      */
>     public void addFeature(String speciesId, double x, double y,
> Status status) {
>         if (geomFactory == null) {
>             geomFactory = new GeometryFactory();
>         }
> 
>         if (featureBuilder == null) {
>             featureBuilder = new SimpleFeatureBuilder(featureType);
>         }
> 
>         Geometry pos = geomFactory.createPoint(new Coordinate(x, y));
> 
>         featureBuilder.add(pos);
>         featureBuilder.add(speciesId);
>         featureBuilder.add(status.getCode());
> 
>         SimpleFeature feature = featureBuilder.buildFeature(null);
>         featureColl.add(feature);
>     }
> 
>     /**
>      * Run the demo (args are ignored)
>      */
>     public static void main(String[] args) {
>         SpeciesStatus me = new SpeciesStatus(DefaultGeographicCRS.WGS84);
>         me.demo();
>     }
> 
>     /**
>      * Demo: creates a few features with different Status values
>      * and adds them to the FeaureCollection. Then displays them
>      * as a map.
>      */
>     private void demo() {
>         addFeature("lynx", 2.0, 41.0, Status.UNKNOWN);
>         addFeature("bear", 3.0, 42.0, Status.SURE);
>         addFeature("bear", 3.5, 41.5, Status.DISAPPEARED);
>         addFeature("yeti", 2.5, 42.5, Status.UNSURE);
> 
>         MapContext map = new DefaultMapContext(crs);
>         map.setTitle("Species status");
> 
>         MapLayer layer = new DefaultMapLayer(featureColl, style);
>         map.addLayer(layer);
> 
>         JMapFrame.showMap(map);
>     }
> 
> }
> 
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008
> 30-Day 
> trial. Simplify your report design, integration and deployment - and focus
> on 
> what you do best, core application coding. Discover what's new with 
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> Geotools-gt2-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
> 
> 

-- 
View this message in context: 
http://n2.nabble.com/Should-I-use-a-Polygon-or-a-Mark-tp3596800p3616875.html
Sent from the geotools-gt2-users mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Geotools-gt2-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users

Reply via email to