Well... yes! I was googling but I don't remember the exact term of the
search. The example I was trying to adapt was this one:

http://docs.geotools.org/stable/userguide/examples/stylefunctionlab.html

Thanks again for your help!

jv

On Thu, Jun 2, 2011 at 4:42 PM, Jody Garnett <[email protected]> wrote:

> Oh good that worked for you!
>
> Well tell me where you looked for the answer; so we can update those docs
> for the next person...
> Do you have links? Did did you use google search? Did you find any
> documentation ... what did you do :-)
>
> My only thought is this: The symbology encoding specification we use for
> our style data model demands that we work this way - converting strings to
> colours. As such we link to the specification and don't try to retype it in
> a second time; why get information second hand?
>
> --
> Jody Garnett
>
> On Thursday, 2 June 2011 at 11:48 PM, Javier Moreno wrote:
>
> lol Jody... I spent ten hours trying to figure it out... and didn't see the
> easier way. Please let me know how can I invite you to take a beer :-)
>
>
> jv
>
> On Thu, Jun 2, 2011 at 2:43 AM, Jody Garnett <[email protected]>wrote:
>
>  Dude you are working *way* to hard - let geotools do the work for you!
>
> It automatically knows it is looking for a color; and will convert your
> string value to a colour as needed.
> So a simple ff.proeprty("column") will suffice; as long as the values can
> be parsed as a color.
>
> For more information on why your function did not work; you needed to
> register it with the system (so it can for example copy it (which is what
> DuplicatingFilterVisitor is doing). It looks like we did not trust you to
> modify the filter as it was being used for rendering - so they made a copy.
>
> There is a tutorial on making functions here (and registering them for the
> library):
> -
> http://docs.geotools.org/latest/userguide/tutorial/advanced/function.html
>
> (Note this tutorial is "Advanced" as it involves you contributing a new
> idea to geotools; and not simply using what is there)
>
>
>
> --
> Jody Garnett
>
> On Thursday, 2 June 2011 at 7:23 AM, Javier Moreno wrote:
>
> Argh... looks like in fact the problem is somewhere else, throwing an
> exception like this one:
>
> java.lang.RuntimeException: Unable to find function Color
>  at
> org.geotools.filter.FunctionFinder.findFunction(FunctionFinder.java:177)
> at org.geotools.filter.FunctionFinder.findFunction(FunctionFinder.java:74)
>  at
> org.geotools.filter.FilterFactoryImpl.function(FilterFactoryImpl.java:467)
> at
> org.geotools.filter.visitor.DuplicatingFilterVisitor.visit(DuplicatingFilterVisitor.java:309)
>  at
> org.geotools.filter.FunctionExpressionImpl.accept(FunctionExpressionImpl.java:147)
> at
> org.geotools.styling.visitor.DuplicatingStyleVisitor.copy(DuplicatingStyleVisitor.java:420)
>  at
> org.geotools.styling.visitor.DuplicatingStyleVisitor.visit(DuplicatingStyleVisitor.java:669)
> at org.geotools.styling.FillImpl.accept(FillImpl.java:199)
>  at
> org.geotools.styling.visitor.DuplicatingStyleVisitor.copy(DuplicatingStyleVisitor.java:451)
> at
> org.geotools.styling.visitor.DuplicatingStyleVisitor.visit(DuplicatingStyleVisitor.java:878)
>  at org.geotools.styling.MarkImpl.accept(MarkImpl.java:204)
> at
> org.geotools.styling.visitor.DuplicatingStyleVisitor.copy(DuplicatingStyleVisitor.java:523)
>  at
> org.geotools.styling.visitor.DuplicatingStyleVisitor.copy(DuplicatingStyleVisitor.java:851)
> at
> org.geotools.styling.visitor.DuplicatingStyleVisitor.visit(DuplicatingStyleVisitor.java:818)
>  at org.geotools.styling.GraphicImpl.accept(GraphicImpl.java:367)
> at
> org.geotools.styling.visitor.DuplicatingStyleVisitor.copy(DuplicatingStyleVisitor.java:439)
>  at
> org.geotools.styling.visitor.DuplicatingStyleVisitor.visit(DuplicatingStyleVisitor.java:724)
> at
> org.geotools.styling.visitor.UomRescaleStyleVisitor.visit(UomRescaleStyleVisitor.java:180)
>  at
> org.geotools.styling.PointSymbolizerImpl.accept(PointSymbolizerImpl.java:91)
> at
> org.geotools.styling.visitor.DuplicatingStyleVisitor.copy(DuplicatingStyleVisitor.java:537)
>  at
> org.geotools.styling.visitor.DuplicatingStyleVisitor.visit(DuplicatingStyleVisitor.java:275)
> at
> org.geotools.renderer.lite.StreamingRenderer.rescaleFeatureTypeStyle(StreamingRenderer.java:1846)
>  at
> org.geotools.renderer.lite.StreamingRenderer.applyUnitRescale(StreamingRenderer.java:1824)
> at
> org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:1774)
>  at
> org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:707)
> at
> org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:533)
>
>
> On Wed, Jun 1, 2011 at 11:09 PM, Javier Moreno <[email protected]>wrote:
>
>  Hi everybody!
>
> I'm trying to stylish a shape and I would like to draw the points with the
> color that is written in a feature attribute. The name of the attribute is
> "FILL" and its value is just a rgb triplet string ("#A0A0A0", for example).
>
> I've been looking at the documentation and as far as I can understand it
> should result in something like this (based on an example of the doc):
>
> class ColorFunction extends FunctionExpressionImpl {
>         public static final FunctionName NAME = new
> FunctionNameImpl("Colorizador", 0);
>         public ColorFunction() {
>             super("Color", filterFactory.literal("Color"));
>             super.fallback =
> CommonFactoryFinder.getFilterFactory2(null).literal(Color.WHITE);
>         }
>         @Override
>         public int getArgCount() {
>             return 0;
>         }
>
>         @Override
>         public Object evaluate(SimpleFeature feature) {
>             String fill = (String) feature.getAttribute("FILL");
>             ...
>             Color color = new Color(...);
>             return color;
>         }
> }
>
> class XXX {
>     ...
>     public Style getStyle() {
>             style = styleFactory.createStyle();
>             FeatureTypeStyle fts = styleFactory.createFeatureTypeStyle(
>                     new Rule[]{ this.createRule("dummy", 10); }
>             style.featureTypeStyles().add(fts);
>             return style;
>     }
>
>     protected Rule createRule(String name, int size) {
>         ColorFunction colorFn = new ColorFunction();
>
>         Graphic gr = styleFactory.createDefaultGraphic();
>         Mark mark = styleFactory.getCircleMark();
>         mark.setStroke(styleFactory.createStroke(
>
> colorFn,  filterFactory.literal(1), filterFactory.literal(0.5)));
>         mark.setFill(styleFactory.createFill(
>                 colorFn, filterFactory.literal(1),
> filterFactory.literal(0.3),    null));
>         gr.graphicalSymbols().clear();
>         gr.graphicalSymbols().add(mark);
>         gr.setSize(filterFactory.literal(size));
>         Rule rule = styleFactory.createRule();
>         PointSymbolizer sym = styleFactory.createPointSymbolizer(gr, null);
>         rule.setName(name);
>         rule.symbolizers().add(sym);
>         return rule;
>     }
> }
>
> If I've understood it right once applied the StreamingRenderer should
> invoke the ColorFunction evaluate(...) method for each point instance but
> looks like it's never call and I'm running out of ideas. Could someone tell
> me what's happening? Maybe am I absolutely wrong about the way this should
> be implemented?
>
> Thanks in advance!
>
> jv
>
>
>
> ------------------------------------------------------------------------------
> Simplify data backup and recovery for your virtual environment with
> vRanger.
> Installation's a snap, and flexible recovery options mean your data is
> safe,
> secure and there when you need it. Data protection magic?
> Nope - It's vRanger. Get your free trial download today.
> http://p.sf.net/sfu/quest-sfdev2dev
> _______________________________________________
> Geotools-gt2-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
>
>
>
>
>
------------------------------------------------------------------------------
Simplify data backup and recovery for your virtual environment with vRanger.
Installation's a snap, and flexible recovery options mean your data is safe,
secure and there when you need it. Discover what all the cheering's about.
Get your free trial download today. 
http://p.sf.net/sfu/quest-dev2dev2 
_______________________________________________
Geotools-gt2-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users

Reply via email to