[mapserver-users] Performance in regular expressions or an alternative way to select a list of features
Adrian Popa
adrian_gh.popa at romtelecom.ro
Tue Jul 14 02:05:10 PDT 2009
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:* 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/10ec27df/attachment.htm>
More information about the MapServer-users
mailing list