Hello!

I have created a patch for GeoTools which implements whole layer
transparency (for layers and labels) and allows to skip label rendering
for a layer. The patch is submitted as a github pull request
https://github.com/geotools/geotools/pull/32

Andrea asked me to explain what I try to do, so I will try to describe
what is being done and why.
We had to implement in our product a feature which would allow user to
easily adjust layer transparency (by using a slider or some other input
control - this is irrelevant). I think (correct me if I'm wrong) that
this is not possible to achieve by means of SLD only. The picure "layer
opacity.png" (which was produced by a patched version of GeoTools)
shows desired result.
Trying to mimic it with following SLD style renders output as in "sld
opacity.png" image.
=======8<=====================
<StyledLayerDescriptor xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
                       xmlns="http://www.opengis.net/sld";
                       xsi:schemaLocation="http://www.opengis.net/sld 
http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd";
                       version="1.0.0"
        >
    <UserLayer>
        <LayerFeatureConstraints>
            <FeatureTypeConstraint/>
        </LayerFeatureConstraints>
        <UserStyle>
            <FeatureTypeStyle>
                <Rule>
                    <PolygonSymbolizer>
                        <Fill>
                            <CssParameter name="fill">#0000FF</CssParameter>
                            <CssParameter name="fill-opacity">0.5</CssParameter>
                        </Fill>
                        <Stroke>
                            <CssParameter name="stroke">#000000</CssParameter>
                            <CssParameter 
name="stroke-opacity">0.5</CssParameter>
                        </Stroke>
                    </PolygonSymbolizer>
                </Rule>
            </FeatureTypeStyle>
        </UserStyle>
    </UserLayer>
</StyledLayerDescriptor>
=======8<=====================

This is a very simple use case. When layer style contains multiple
symbolizers using different values for opacity, it would be really
difficult to adjust them (if possible at all - opacity could be
specified as a feature property) to achieve desired
transparency at a layer level. But it would still produce bad output for
overlapping objects or overlapping symbolizers.
This feature (whole layer transparency) is present in ArcMap for example.

We also had to implement a feature allowing for quick switching of
labels on and off. Theoretically it could be implemented by removing all
text symbolizers from layer style and restoring them when needed but it
seems overly complicated and I think this is a very common use case for
interactive map viewers.
Removing TextSymbolizers could lead to an invalid style - when a
TextSymbolizer is the only sybmolizer in a Rule. According to SLD schema
a Rule is required to have at least one symbolizer. Removing a Rule
could lead to invalid rendering - when the rule uses a Filter then the
features which matched the filter would be rendered (after the rule was
removed) by a rule with ElseFilter.

Andrea mentioned that he wants to avoid extra API-s for styling layers.
But I could come up with some other ideas (which we already implemented
but not in a system which uses GeoTools) for extending GeoTools styling
capabilities. Like not drawing features when a label for this feature
was rendered.
Please see 
http://msip-mapa.um.gliwice.pl/geoportaltoolkit/map.php?link=2924&skin=gliwice_new_mieszkaniec
Near the lower right corner there is Stansława Moniuszki street with some
address points marked with a small blue envelope (for those point labels
could not be placed). But if the label is placed (Dworcowa street in the
middle), the point icon is not drawn.

--
Sebastian Graca

Institute of Spatial and Cadastral Systems
tel: +48 32 301 10 74
fax: +48 32 301 10 77
e-mail: sgr...@ispik.pl
http://www.ispik.pl

<<attachment: layer opacity.png>>

<<attachment: sld opacity.png>>

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
GeoTools-Devel mailing list
GeoTools-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to