[mapserver-users] Performance in regular expressions or an alternative way to select a list of features

Nikolai Nikolov nnikolov at gypsii.com
Tue Jul 14 04:54:03 EDT 2009


Hi Adrian,

 

I have used long EXPRESSION list in the past, but my data are "static", so
eventually I modified the map data and removed the polygons I didn't want to
render.

 

I could suggest to you to use in your map file several LAYERs or CLASSes to
"spread around" long EXPRESSION lists. Those LAYERs or CLASSes would be
identical but for the EXPRESSION lists.  You could put a limit of let's say
10 selected features per CLASS definition.

 

Best regards,

Nick

 

  _____  

From: mapserver-users-bounces at lists.osgeo.org
[mailto:mapserver-users-bounces at lists.osgeo.org] On Behalf Of Adrian Popa
Sent: 14 July 2009 07:15
To: mapserver-users at lists.osgeo.org
Subject: [mapserver-users] Performance in regular expressions or an
alternative way to select a list of features

 

Hello everyone,

Here's my problem: I'm trying to highlight segments from a line layer by
using an expression in a specific class. This portion of the mapfile is
dynamically generated and when it is done, it is sent to mapserver for
rendering. 
My problem is that I have to select between 10 - 400 features at a time and
I noticed when I have a lot of features there is a severe performance
degradation in mapserver (takes a lot of time to render or even times out).
Right now, my expression is built using regular expressions: something like:
EXPRESSION /^ITEM1$|^ITEM2$|^ITEM3$|^ITEM4$/
This works ok, but as I said has a performance penalty when you reach ~400
items.  My data is selected from a shapefile layer which has about 5500
items.

Since I wouldn't be using the regular expressions at full capacity (I'm
matching the full name), I might rewrite the expression using something
like:
EXPRESSION ( ([NAME]=="ITEM1") OR ([NAME]=="ITEM2") OR ([NAME]=="ITEM3") OR
([NAME]=="ITEM4") )

>From the documentation I see that:
Regular expression with MapServer work similarly to string comparison, but
allow more complex operation. They are slower than pure string comparisons,
but might be still faster than logical expression. As with the string
comparison use regular expressions, a FILTERITEM or a CLASSITEM has to
defined, respectively.

I would like to know if there is an efficient way of selecting a list of
elements from a layer, or what are your recommendations.

Also - have there been significant changes in performance for this issue
from mapserver 4.10 (I am now migrating to mapserver 5.4)?

Thanks,
Adrian

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapserver-users/attachments/20090714/f66ce8d1/attachment.html


More information about the mapserver-users mailing list