[mapserver-users] SLD filters in MS6

Knut.Landmark at FFI.no Knut.Landmark at FFI.no
Fri Jan 13 02:51:56 PST 2012


Hi all,

 

I want to do attribute dependent rendering using SLD with filters inside
the <Rule> element, but cannot get it to work properly with MapServer
6.0.1 when the CONNECTIONTYPE is POSTGIS. However, all other things
being equal, it works well with MapServer 5.2.1. It also works well with
other data formats like GML or shape, in both versions of MapServer. Are
there any changes in MapServer that I should be aware of that might
affect how filters work?

 

As an example, the attached figure1 shows the correct map generated by
MS 5.2.1, while figure2 shows the MS 6.0.1 generated map in which all
polygons get the same color. MS 6.0.1 uses the same PostGIS database and
SLD file and an equivalent map file. In case it can provide any clues,
my MS 5.2.1 generates SQL like this (from the log file):

 

[Wed Jan 11 23:20:47 2012].319000 query_string_0_6:DECLARE mycursor
BINARY CURSOR FOR SELECT
"drval1"::text,"drval2"::text,asbinary(force_collection(force_2d(wkb_geo
metry)),'NDR'),ogc_fid::text from ukcbut00.depare WHERE wkb_geometry &&
setSRID('BOX3D(-1.57769913517149 50.6363909616681,-0.843360864828487
50.8899255935367)'::BOX3D,
find_srid('','ukcbut00.depare','wkb_geometry') )

 

The select command fetches the two attributes drval1 and drval2, on
which the filters act, as well as the geometry. However, MS 6.0.1
constructs SQL like this:

 

[Wed Jan 11 22:22:06 2012].26000 msPostGISLayerWhichShapes query: select
encode(ST_AsBinary(ST_Force_2D("wkb_geometry"),'NDR'),'hex') as
geom,"ogc_fid" from ukcbut00.depare where wkb_geometry &&
GeomFromText('POLYGON((-1.57514202386 50.6588672768767,-1.57514202386
50.9035127337513,-0.841117976140038 50.9035127337513,-0.841117976140038
50.6588672768767,-1.57514202386
50.6588672768767))',find_srid('','ukcbut00.depare','wkb_geometry')) and
(( ("drval1"<= 0)  OR  ("drval1"<= 10)  OR  ("drval1"<= 20)  OR
("drval1">= 20) ))

 

(The clause ("drval1"<= 0)  OR  ("drval1"<= 10)  OR  ("drval1"<= 20)  OR
("drval1">= 20) seems a bit odd and is true for all polygons.)

 

Below I have included the SLD code in its entirety.

 

Thanks,

Knut

 

<?xml version="1.0" encoding="ISO-8859-1"?>

<StyledLayerDescriptor version="1.0.0" 

    xsi:schemaLocation="http://www.opengis.net/sld" 

    xmlns="http://www.opengis.net/sld" 

    xmlns:ogc="http://www.opengis.net/ogc" 

    xmlns:xlink="http://www.w3.org/1999/xlink" 

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

                  

  <NamedLayer>

    <Name>depare</Name>

    <UserStyle>

      <Title>AML Depth Area</Title>

      <FeatureTypeStyle>

       <Rule>

         <ogc:Filter>

            <ogc:PropertyIsLessThanOrEqualTo>

              <ogc:PropertyName>drval1</ogc:PropertyName>

              <ogc:Literal>0</ogc:Literal>

            </ogc:PropertyIsLessThanOrEqualTo>     

          </ogc:Filter>                           

          <PolygonSymbolizer>

            <Fill>

              <CssParameter name="fill">#B4EBFF</CssParameter>

            </Fill>

          </PolygonSymbolizer>

        </Rule>         

        <Rule>                         

         <ogc:Filter>

            <And>

                           <ogc:PropertyIsGreaterThanOrEqualTo>

                             <ogc:PropertyName>drval1</ogc:PropertyName>

                             <ogc:Literal>0</ogc:Literal>

                           </ogc:PropertyIsGreaterThanOrEqualTo>

                           <ogc:PropertyIsLessThanOrEqualTo>

                             <ogc:PropertyName>drval2</ogc:PropertyName>

                             <ogc:Literal>10</ogc:Literal>

                           </ogc:PropertyIsLessThanOrEqualTo>      

            </And>                   

          </ogc:Filter>                                            

          <PolygonSymbolizer>

            <Fill>

              <CssParameter name="fill">#66EBFF</CssParameter>


                                                 <CssParameter
name="fill-opacity">0.1</CssParameter>

            </Fill>

          </PolygonSymbolizer>

        </Rule>

       <Rule>                          

         <ogc:Filter>

           <And>

                          <ogc:PropertyIsGreaterThanOrEqualTo>

                             <ogc:PropertyName>drval1</ogc:PropertyName>

                             <ogc:Literal>10</ogc:Literal>

                          </ogc:PropertyIsGreaterThanOrEqualTo>

                          <ogc:PropertyIsLessThanOrEqualTo>

                            <ogc:PropertyName>drval2</ogc:PropertyName>

                            <ogc:Literal>20</ogc:Literal>

                          </ogc:PropertyIsLessThanOrEqualTo>       

          </And>                     

          </ogc:Filter>                           

          <PolygonSymbolizer>

            <Fill>

              <CssParameter name="fill">#0097FF</CssParameter>

            </Fill>

          </PolygonSymbolizer>

        </Rule>       

      <Rule>

         <ogc:Filter>

            <ogc:PropertyIsGreaterThanOrEqualTo>

              <ogc:PropertyName>drval1</ogc:PropertyName>

              <ogc:Literal>20</ogc:Literal>

            </ogc:PropertyIsGreaterThanOrEqualTo>              

          </ogc:Filter>                           

          <PolygonSymbolizer>

            <Fill>

              <CssParameter name="fill">#2222FF</CssParameter>

            </Fill>

          </PolygonSymbolizer>

        </Rule>                                      

      </FeatureTypeStyle>

    </UserStyle>

  </NamedLayer>

   

</StyledLayerDescriptor>

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-users/attachments/20120113/0f94c2b4/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: figure1.jpg
Type: image/jpeg
Size: 17225 bytes
Desc: figure1.jpg
URL: <http://lists.osgeo.org/pipermail/mapserver-users/attachments/20120113/0f94c2b4/attachment.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: figure2.jpg
Type: image/jpeg
Size: 14054 bytes
Desc: figure2.jpg
URL: <http://lists.osgeo.org/pipermail/mapserver-users/attachments/20120113/0f94c2b4/attachment-0001.jpg>


More information about the MapServer-users mailing list