Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [udig-devel] Problem with custom SLD style

It is just for the legend graphic I think. 



On 06/08/2010, at 7:31 PM, Lukasz Stawicki <stl@xxxxxxxxxx> wrote:

> Jody,
> 
> I feel that catching an error and then drawing b&w is not a perfect solution - as I refer inside the function to attributes of feature I want to draw, maybe just use the real feature to be drawn, not the fake one?
> 
> Here is problematic part of my SLD. It is for some electrodevice, and I do not know default uDig dataset at all, so you would need to change property name and literals for limits.
> 
> Lukasz
> 
> 
>                    <sld:LineSymbolizer>
>                        <sld:Stroke>
>                            <sld:CssParameter name="stroke">
>                                <ogc:Function name="if_then_else">
>                                    <ogc:Function name="lessThan">
>                                        <ogc:PropertyName>VOLTAGE_ID</ogc:PropertyName>
>                                        <ogc:Literal>3</ogc:Literal>
>                                    </ogc:Function>
>                                    <ogc:Literal>#FFBB55</ogc:Literal>
>                                    <ogc:Function name="if_then_else">
>                                        <ogc:Function name="lessThan">
>                                            <ogc:PropertyName>VOLTAGE_ID</ogc:PropertyName>
>                                            <ogc:Literal>7</ogc:Literal>
>                                        </ogc:Function>
>                                        <ogc:Literal>#F78484</ogc:Literal>
>                                        <ogc:Literal>#5C993C</ogc:Literal>
>                                    </ogc:Function>
>                                </ogc:Function>
>                            </sld:CssParameter>
>                            <sld:CssParameter name="stroke-linecap">
>                                <ogc:Literal>butt</ogc:Literal>
>                            </sld:CssParameter>
>                            <sld:CssParameter name="stroke-linejoin">
>                                <ogc:Literal>miter</ogc:Literal>
>                            </sld:CssParameter>
>                            <sld:CssParameter name="stroke-opacity">
>                                <ogc:Literal>1</ogc:Literal>
>                            </sld:CssParameter>
>                            <sld:CssParameter name="stroke-width">
>                                <ogc:Literal>3</ogc:Literal>
>                            </sld:CssParameter>
>                            <sld:CssParameter name="stroke-dasharray">4 4</sld:CssParameter>
>                        </sld:Stroke>
>                    </sld:LineSymbolizer>
> 
> 
> Cytowanie Jody Garnett <jody.garnett@xxxxxxxxx>:
> 
>> Oh cool.
>> 
>> Yeah the glphy code creates a fake feature in the hopes of drawing
>> something "in your style". We should put some catch statements around
>> that and perhaps draw the feature in B&W if we were unable to figure
>> out  the style?
>> 
>> Lukasz can you sort out a way for us to reproduce the problem with the
>> default dataset? perhaps just an SLD we can cut and paste into the
>> style editor?
>> 
>> Jody
>> 
>> 2010/8/6 Lukasz Stawicki <stl@xxxxxxxxxx>:
>>> Hi,
>>> 
>>> I used <ogc:Function name="Categorize"> instead of if_then_else. Anyway, it
>>> crashes in CategorizeFunction.java line 152:
>>> 
>>>  String lookupValue = lookupExp.evaluate(object, String.class);
>>> 
>>> Object is null - I debugged it up and finally digged what a object is
>>> evaluated. net.refractions.udig.ui.graphics.Glyph.java, line 363.
>>> 
>>> 
>>>                d.drawDirect( image, display,
>>>                        d.feature(d.line(new int[]{0,12, 6,3, 11,12, 15,3})),
>>>                        rule );
>>> 
>>> Line is created for line symbolizer, and as this line is not a feature, it
>>> causes side-effects. I also checked that if_then_else comes into problems
>>> just in the same place.
>>> 
>>> Any help would be greatly appreciated.
>>> 
>>> regards
>>> 
>>> Lukasz
>>> 
>>> Cytowanie Jody Garnett <jody.garnett@xxxxxxxxx>:
>>> 
>>>> Please keep discussion on the list (that way I can be corrected by others
>>>> :-D ).
>>>> 
>>>> Sorry for the quick message before; was focused on getting a bug report
>>>> in. I was not being intentionally opaque - the geotools website is down for
>>>> me as well.
>>>> 
>>>> Looking at the code the functions are:
>>>> - CategorizeFunction
>>>> - InterpolateFunction
>>>> - RecodeFunction
>>>> 
>>>> Example docs for the first one:
>>>> Implementation of "Categorize" as a normal function.
>>>> 
>>>> This implementation is compatible with the Function interface; the
>>>> parameter list can be used to set the threshold values etc...
>>>> 
>>>> This function expects:
>>>> 
>>>> PropertyName; use "Rasterdata" to indicate this is a color map
>>>> Literal: lookup value
>>>> Literal: threshold 1
>>>> Literal: value 1
>>>> Literal: threshold 2
>>>> Literal: value 2
>>>> Literal: (Optional) succeeding or preceding
>>>> For more details please look at the Symbology Encoding specification
>>>> (which provides the definition of these functions and examples.
>>>> 
>>>> Best thing to do is look at test cases:
>>>> -
>>>> http://svn.osgeo.org/geotools/trunk/modules/library/render/src/test/java/org/geotools/filter/
>>>> 
>>>> Here is an example from the test cases:
>>>> 
>>>>        final String[] categories = {"low", "mid", "high", "super"};
>>>>        final Double[] thresholds = {0.0, 50.0, 100.0};
>>>>        setupParameters(categories, thresholds);
>>>> 
>>>>        Function fn = finder.findFunction("categorize", parameters);
>>>> 
>>>> Cheers,
>>>> Jody
>>>> 
>>>> 
>>>> On 05/08/2010, at 7:00 PM, Lukasz Stawicki wrote:
>>>> 
>>>>> Jody,
>>>>> 
>>>>> I know I can use more <sld:Rule...> entries instead of using
>>>>> <ogc:Function name="if_then_else"> but this will make my SLD file 10 times
>>>>> longer (and unable to maintain it). What are the other options for managing
>>>>> colors?
>>>>> 
>>>>> regards
>>>>> 
>>>>> Lukasz
>>>>> 
>>>>> 
>>>>> Cytowanie Jody Garnett <jody.garnett@xxxxxxxxx>:
>>>>> 
>>>>>> The GeoTools website was hacked last month; I think the DNS is being
>>>>>> updated now to point to a new server.
>>>>>> 
>>>>>> As for your example; you are doing a lot of work to map colours?  There
>>>>>> is a couple of color lookup functions available now
>>>>>> which should make it easier.
>>>>>> 
>>>>>> I have reported your issue here:
>>>>>> - https://jira.codehaus.org/browse/GEOT-3234
>>>>>> 
>>>>>> On 05/08/2010, at 4:14 PM, Lukasz Stawicki wrote:
>>>>>> 
>>>>>>> 
>>>>>>> java.lang.IllegalArgumentException: Filter Function problem for
>>>>>>> function if_then_else argument #0 - expected type boolean
>>>>>>>        at
>>>>>>> org.geotools.filter.function.FilterFunction_if_then_else.evaluate(FilterFunction_if_then_else.java:45)
>>>>>>>        at
>>>>>>> org.geotools.filter.expression.ExpressionAbstract.evaluate(ExpressionAbstract.java:63)
>>>>>>>        at org.geotools.styling.SLD.color(SLD.java:1312)
>>>>>>>        at org.geotools.styling.SLD.color(SLD.java:96)
>>>>>>>        at org.geotools.styling.SLD.lineColor(SLD.java:84)
>>>>>>>        at org.geotools.styling.SLD.color(SLD.java:188)
>>>>>>>        at net.refractions.udig.ui.Drawing.paint(Drawing.java:308)
>>>>>>>        at net.refractions.udig.ui.Drawing.drawFeature(Drawing.java:246)
>>>>>>>        at net.refractions.udig.ui.Drawing.drawFeature(Drawing.java:223)
>>>>>>>        at net.refractions.udig.ui.Drawing.drawDirect(Drawing.java:150)
>>>>>>>        at
>>>>>>> net.refractions.udig.ui.graphics.Glyph$6.getImageData(Glyph.java:363)
>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>> 
>>>> 
>>> 
>>> 
>>> 
>>> 
>> 
>> 
> 
> 


Back to the top