[OpenLayers-Users] Styling a feature with multiple attributes using SLD - solved

Zer hcan at hotmail.com
Wed Aug 27 12:30:09 EDT 2008


I just found the problem! I hade forgotten to add a rule for when the
isMarked is not true! This is what was missing:

<sld:Rule>
        <sld:Name>Is_Marked and Code</sld:Name>
        <ogc:Filter>
		<ogc:And>
			<ogc:Not>
                        		<ogc:PropertyIsEqualTo>
                            		    
<ogc:PropertyName>isMarked</ogc:PropertyName>
                                		<ogc:Literal>1</ogc:Literal>
                        		</ogc:PropertyIsEqualTo>
			<ogc:Not>
                        <ogc:PropertyIsEqualTo>
                                <ogc:PropertyName>code</ogc:PropertyName>
                                <ogc:Literal>2</ogc:Literal>
                        </ogc:PropertyIsEqualTo>
                </ogc:And>
        </ogc:Filter>
        <sld:PolygonSymbolizer>
                <sld:Fill>
                        <sld:CssParameter name="fill">
                                <ogc:Literal>#00FFFF</ogc:Literal>
                        </sld:CssParameter>
                        <sld:CssParameter name="stroke">
                                <ogc:Literal>white</ogc:Literal>
                        </sld:CssParameter>
                </sld:Fill>
        </sld:PolygonSymbolizer>
</sld:Rule> 




Zer wrote:
> 
> Hi all,
> 
> I have a vector layer with features with attributes. I would like to use
> two of  these attributes to style the features. One attribute is a code
> that have values between 1-10. The other attribute is a boolean
> (isMarked). I would like to change the fill property (gradient colours) of
> the attribute depending on the code and add a red stroke to the attribute
> if the isMarked == 1. The users select which option to theme by selection
> two check boxes. I have been successful doing this with an SLD.XML file
> and it works fine if i select one of these options at a time. However,
> when i try to combine these attributes i can not get it to work. I would
> like to both add the gradient colours AND the red stroke option if
> isMarked == 1, otherwise only the fill gradient colours . Does anyone know
> how to write such a filter? Or is there another way to make this happen? 
> 
> This is the rules i have uses so far:
> 
> ** This works if I select the code check box only **
> <sld:Rule>
> 	<sld:Name>Code</sld:Name>
> 	<ogc:Filter>
> 		<ogc:PropertyIsEqualTo>
> 			<ogc:PropertyName>code</ogc:PropertyName>
> 			<ogc:Literal>2</ogc:Literal>
> 		</ogc:PropertyIsEqualTo>		
> 	</ogc:Filter>
> 	<sld:PolygonSymbolizer>
> 		<sld:Fill>
> 			<sld:CssParameter name="fill">
> 				<ogc:Literal>#00FFFF</ogc:Literal>
> 			</sld:CssParameter>
> 			<sld:CssParameter name="stroke">
> 				<ogc:Literal>white</ogc:Literal>
> 			</sld:CssParameter>
> 		</sld:Fill>
> 	</sld:PolygonSymbolizer>
> </sld:Rule>
> 
> ** This works if I select the isMarked check box only **	
> <sld:Rule>
> 	<sld:Name>Code and Is_Marked</sld:Name>
> 	<ogc:Filter>
> 		<ogc:PropertyIsEqualTo>
> 			<ogc:PropertyName>isMarked</ogc:PropertyName>
> 			<ogc:Literal>1</ogc:Literal>
> 		</ogc:PropertyIsEqualTo>		
> 	</ogc:Filter>
> 	<sld:PolygonSymbolizer>
> 		<sld:Fill>
> 			<sld:CssParameter name="fill">
> 				<ogc:Literal>white</ogc:Literal>
> 			</sld:CssParameter>
> 			<sld:CssParameter name="stroke">
> 				<ogc:Literal>red</ogc:Literal>
> 			</sld:CssParameter>
> 		</sld:Fill>
> 	</sld:PolygonSymbolizer>
> </sld:Rule>
> 
> ** This does not work if I select BOTHE check boxes. **
> <sld:Rule>
> 	<sld:Name>Is_Marked and Code</sld:Name>
> 	<ogc:Filter>
>         		<ogc:And>
> 			<ogc:PropertyIsEqualTo>
> 				<ogc:PropertyName>isMarked</ogc:PropertyName>
> 				<ogc:Literal>1</ogc:Literal>
> 			</ogc:PropertyIsEqualTo>
> 			<ogc:PropertyIsEqualTo>
> 				<ogc:PropertyName>code</ogc:PropertyName>
> 				<ogc:Literal>2</ogc:Literal>
> 			</ogc:PropertyIsEqualTo>	
> 		</ogc:And>			
> 	</ogc:Filter>
> 	<sld:PolygonSymbolizer>
> 		<sld:Fill>
> 			<sld:CssParameter name="fill">
> 				<ogc:Literal>#00FFFF</ogc:Literal>
> 			</sld:CssParameter>
> 			<sld:CssParameter name="stroke">
> 				<ogc:Literal>red</ogc:Literal>
> 			</sld:CssParameter>
> 		</sld:Fill>
> 	</sld:PolygonSymbolizer>
> </sld:Rule>
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Styling-a-feature-with-multiple-attributes-using-SLD-tp19165654p19184694.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.




More information about the Users mailing list