[mapserver-users] FILTER and multi STYLE tags

Kalbermatten Michaël Michael.Kalbermatten at ne.ch
Fri Jan 24 00:27:17 PST 2020


Hi Steve,

Thanks for the quick answer and sorry for my late reply.

I downloaded the latest stable release which can be found on the gisinternals website. On the 17th January 2020, that would have been release-1900-x64-gdal-3-0-2-mapserver-7-4-2, which I think is the latest release. Should I try out a daily release ? or where the changes you are talking about already included in release 7.4.2?

Michael


> 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/20200124/0fbb83e2/attachment-0001.html>


More information about the mapserver-users mailing list