Hi,
Patton, Eric schrieb:
Hi Ralf,
I was wondering the same thing...label collision avoidance is one of the few
GIS functions that I need Arc to solve. I'm willing to try working on a
script to provide this functionality because I need this on a daily basis; I
suspect it's either very complex in shell scripting, or requires C
programming. If it can be done in bash, I can take a look at it, but that's
the limit of my abilities.
I have had a quick look at the Mapserver sourcecode doing the actual layout, but it's a bit hard to understand in detail if one doesn't have enough knowledge of the internal mapserver architecture.
In general, however, I think that Mapserver simply saves the - possibly rotated - bounding boxes of previously generated labels and for each new label tries all of the available anchors (Y: top, center, bottom, X: left, center, right) until it finds one where the label does not overlap. If it doesn't find an anchor whithout overlap, the label is not displayed. At least this is what I found in the Mapserver docs.
However, Mapserver does this, knowing the current scale of the map to be displayed. v.labels does not have this information and thus could only do the prelayout when the text size is given in map units instead of actual pixel size.
Actually, what is the reason for separating v.labels from d.labels?
Cheers,
Ralf