Hi Michael, hi everyone,

Good news, I found a way to get rid of almost all deprecated methods.
Almost, because there is still one method I don't know how to avoid...

The idea is to use a StyleBuilder object instead of the StyleFactory  
used in the example.
The API is a bit different, but you can achieve the same result.

The only deprecated method I still use is  
style.addFeatureTypeStyle(fts). Maybe someone knows a way to avoid it ?

Here is the code I used. I do a color gradient (composed of colorsNb  
different color), depending on the "depth" attribute value of my  
FeatureType.

private Style createLineStyle(final String typeName, final double  
maxDepth,
                        final int colorsNb) {
                // Temporary style
                Style style = null;

                // Creates rules and symbolizers arrays
                Rule[] rules = new Rule[colorsNb];
                LineSymbolizer[] symbolizers = new LineSymbolizer[colorsNb];

                // Depth range
                double min = 0.0;
                double max = 0.0;

                // Color range
                Color c1 = Color.decode("#000000");
                Color c2 = Color.decode("#CCCCC");

                StyleBuilder sb = new StyleBuilder();
                FilterFactory ff = CommonFactoryFinder.getFilterFactory(GeoTools
                                .getDefaultHints());

                for (int i = 0; i < colorsNb; i++) {
                        // Computes the color
                        float ratio = (float) i / (float) colorsNb;
                        int red = (int) (c2.getRed() * ratio + c1.getRed() * (1 
- ratio));
                        int green = (int) (c2.getGreen() * ratio + c1.getGreen()
                                        * (1 - ratio));
                        int blue = (int) (c2.getBlue() * ratio + c1.getBlue() * 
(1 - ratio));

                        // Computes the depth range
                        min = i * maxDepth / colorsNb;
                        max = (i + 1) * maxDepth / (colorsNb);

                        // Set the symbolizer
                        symbolizers[i] = sb
                                        .createLineSymbolizer(new Color(red, 
green, blue));

                        Filter filter = 
ff.between(sb.attributeExpression("depth"), sb
                                        .literalExpression(min), 
sb.literalExpression(max));

                        rules[i] = sb.createRule(symbolizers[i]);
                        rules[i].setFilter(filter);
                }

                // Creates a feature style
                FeatureTypeStyle fts = sb.createFeatureTypeStyle(typeName, 
rules);

                // Creates the style
                style = sb.createStyle();

                // Adds the feature style to the style
                style.addFeatureTypeStyle(fts);

                return style;
        }


Le 18 févr. 09 à 00:33, Michael Bedward a écrit :

> 2009/2/17 Benoît Thiébault wrote:
>> From what I see in the code you wrote, you don't use rules. How  
>> would you do
>> to process a FeatureType differently depending on a feature  
>> attribute ?
>
> I haven't worked out to use rules programmatically without using
> deprecated methods.  Actually, if you look at the source for
> StyleBuilder and StyleFactory they have the same problem !  I believe
> styling is in a state of flux but I'm afraid that I don't follow all
> the details...
>
> I have been looking at the source for DynamicPolygonStyle2D class that
> is used in the geotools rendering system. It uses Expressions to get
> colour codes (in notation like #808080) for fill, outline...  It
> passes each feature in turn to the Expression object to be evaluated.
> This seems ideal and is so simple that even I can understand it :-)
> But what I need to work out (or be told by some kind soul... hint...)
> is how to link to this at the client code level.
>
> Michael
>

Benoît Thiébault

   Société Artenum
   24 rue Louis Blanc, 75010 Paris
   tel: +33 (0)1 46 94 67 54

   Artenum - Science & Groupware - http://www.artenum.com


------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Geotools-gt2-users mailing list
Geotools-gt2-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users

Reply via email to