Hello Nikolai,
As far as you know - the Layers/Classes are processed in paralel
(threads)? Would it even be more efficient not to use expressions, but
to use simple string matchings and dynamically generate 10-400 Classes
in a layer (one class per item)?
What would be the best/most scalable approach?
Thank you,
Adrian
Nikolai Nikolov wrote:
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:* [email protected]
[mailto:[email protected]] *On Behalf Of *Adrian
Popa
*Sent:* 14 July 2009 07:15
*To:* [email protected]
*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
_______________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users