[mapserver-dev] Labelcache potential optimization using spatial index
Daniel Morissette
dmorissette at mapgears.com
Thu Feb 21 06:11:44 PST 2013
Devs,
I came across the following article yesterday:
http://mapbox.com/osmdev/2013/02/12/labeling-id/
All very interesting stuff relating to OSM editing, but the bit that
caught my attention as MapServer dev is this paragraph:
"""
Because labels are updated with each redraw of the map, they need to be
extremely fast. iD calculates label bounding boxes based on estimated
text length, since it’s slow to use browser-calculated bounds. We use
RTree to optimize collision detection and proximity searches, a
technique inspired by kothic.js.
"""
Using a spatial index to optimize collection detection. Of course!
As you all know, the labelcache processing can sometimes account for a
significant part of the rendering time in MapServer, even more than 50%
in some maps with lots of labels, and this idea of using a spatial index
to manage the collision detection could really help improve that.
There would be one drawback though: at the moment the order in which the
labels enter the cache defines their rendering priority, and a
side-effect of using a spatial index would be to lose that feature.
However, one could deal with this issue with proper use of the
LABEL.PRIORITY in all their layers.
An interesting idea to keep in mind anyway...
--
Daniel Morissette
http://www.mapgears.com/
Provider of Professional MapServer Support since 2000
More information about the mapserver-dev
mailing list