[mapserver-users] FILTER and multi STYLE tags

Steve Lime sdlime at gmail.com
Fri Jan 17 11:46:38 PST 2020


Hi Michaël: What version are you using? There were some fixes related to
rendering queries in the latest 7.4 release.

—Steve

On Friday, January 17, 2020, Kalbermatten Michaël <
Michael.Kalbermatten at ne.ch> wrote:

> Dear all,
>
>
>
> We have quite a strange filter behavior.
>
>
>
> We have a layer (relying on PostGIS data and  with multine geometries)
> containing several classes with some of them having multiple STYLE tags.
> Something like:
>
>
>
> CLASS
>
>     NAME "Ouvrages d'art"
>
>     EXPRESSION "Ouvrages d'art"
>
>     STYLE
>
>         COLOR 255 141 0
>
>         WIDTH 8
>
>         LINECAP butt
>
>     END
>
> END
>
> CLASS
>
>     NAME "OFROU"
>
>     EXPRESSION "OFROU"
>
>     STYLE
>
>         COLOR 255 0 0
>
>         WIDTH 8
>
>         LINECAP butt
>
>     END
>
>     STYLE
>
>         COLOR 255 141 0
>
>         WIDTH 2
>
>         LINECAP butt
>
>     END
>
> END
>
> CLASS
>
>     NAME "CFF"
>
>     EXPRESSION "CFF"
>
>     STYLE
>
>         COLOR 35 35 35
>
>         WIDTH 3
>
>         LINECAP butt
>
>     END
>
>     STYLE
>
>         COLOR 35 35 35
>
>         SYMBOL "barre"
>
>         SIZE 12
>
>         GAP -10
>
>     END
>
> END
>
>
>
> A WMS request on this layer will renderer all objects regarding their
> class, which is the expected behavior.
>
>
>
> Now, a FILTER tag is applied on this layer, a request which would look
> like:
>
>
>
> http://myserver.com/my_mapserver_cgi?SERVICE=WMS
>
> &VERSION=1.3.0
>
> &REQUEST=GetMap
>
> &FORMAT=image/png
>
> &TRANSPARENT=true
>
> &LAYERS=rt55_chantiers_futurs
>
> &STYLES=
>
> &FILTER=(<Filter xmlns="http://www.opengis.net/ogc"><PropertyIsBetween><
> PropertyName>annee_debut</PropertyName><LowerBoundary><
> Literal>2021</Literal></LowerBoundary><UpperBoundary><
> Literal>2021</Literal></UpperBoundary></PropertyIsBetween></Filter>)
>
> &CRS=EPSG:2056
>
> &WIDTH=1925
>
> &HEIGHT=936
>
> &BBOX=2503325,1194925,2599575,1222975
>
>
>
> (I removed the URL escaping and made it multiline for readability)
>
>
>
> This request generates something really strange. Returned features from
> the server are rendered until Mapserver encounters the first feature which
> corresponds to a class having more than one STYLE tag. All other features
> (coming next regarding the request sent to the PostGIS server) are not
> rendered any more. Mapserver does not trigger any error, nor does the
> database. In the mapserver logs:
>
>
>
> [Wed Jan 15 08:03:11 2020].640000 CGI Request 1 on process 4228
>
> [Wed Jan 15 08:03:11 2020].649000 FLTLayerApplyPlainFilterToLayer():
> ("[annee_debut]" ~* ".*2021.*"), rect=2503325,1194925,2599575,1222975
>
> [Wed Jan 15 08:03:11 2020].658000 msDrawMap(): rendering using
> outputformat named png (AGG/PNG).
>
> [Wed Jan 15 08:03:11 2020].658000 msDrawMap(): WMS/WFS set-up and query,
> 0.000s
>
> [Wed Jan 15 08:03:11 2020].658000 msDrawMap(): Layer 917
> (rt55_chantiers_futurs), 0.000s
>
> [Wed Jan 15 08:03:11 2020].658000 msDrawMap(): Drawing Label Cache, 0.000s
>
> [Wed Jan 15 08:03:11 2020].658000 msDrawMap() total time: 0.003s
>
> [Wed Jan 15 08:03:11 2020].709000 msSaveImage(stdout) total time: 0.051s
>
> [Wed Jan 15 08:03:11 2020].709000 mapserv request processing time
> (msLoadMap not incl.): 0.069s
>
> [Wed Jan 15 08:03:11 2020].709000 msFreeMap(): freeing map at
> 00000258E99A8030.
>
>
>
> After playing with the Mapfile and related data for a few hours, we
> discovered that because we analyzed  the following elements :
>
>
>
>     - The feature order in the database
>
>     - The STYLE tags in the mapfile classes: making all classes having
> only one STYLE tag
>
>
>
> Thus, if a use these classes:
>
>
>
> CLASS
>
>     NAME "Ouvrages d'art"
>
>     EXPRESSION "Ouvrages d'art"
>
>     STYLE
>
>         COLOR 255 141 0
>
>         WIDTH 8
>
>         LINECAP butt
>
>     END
>
> END
>
> CLASS
>
>     NAME "OFROU"
>
>     EXPRESSION "OFROU"
>
>     STYLE
>
>         COLOR 255 0 0
>
>         WIDTH 8
>
>         LINECAP butt
>
>     END
>
> END
>
> CLASS
>
>     NAME "CFF"
>
>     EXPRESSION "CFF"
>
>     STYLE
>
>         COLOR 35 35 35
>
>         WIDTH 3
>
>         LINECAP butt
>
>     END
>
> END
>
>
>
> Then everything works as expected (using a filter tag in the request), and
> all features are rendered by Mapserver.
>
>
>
> Moreover it is not a DB issue, because if you send a WFS request using
> exactly the same layer definition and the same filter to Mapserver, then
> everything is working as expected (all expected features are returned).
>
>
>
> This really looks like some kind of rendering issue combined to filtering.
>
>
>
> Any hints or thoughts on that ?
>
>
>
> Best regards
>
>
>
> Michael
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-users/attachments/20200117/61eb4274/attachment.html>


More information about the mapserver-users mailing list