[mapserver-dev] Label positioning around points

Stephen Woodbridge woodbri at swoodbridge.com
Fri Sep 21 07:02:00 PDT 2012


The was discussed a lot a few months ago.

https://github.com/mapserver/mapserver/issues/4242
https://github.com/mapserver/mapserver/issues/4249
http://lists.osgeo.org/pipermail/mapserver-dev/2012-February/012003.html

-Steve W

On 9/21/2012 5:55 AM, Havard Tveite wrote:
> On 7/18/2012 5:45 PM, Christy Nieman wrote:
>  > Hi all,
>  >
>  > I was just wondering if the position order around points is still
> open for comment.
>  >
>  > I know that there was discussion about this in the spring, and that a
> change was implemented (though, I have to admit that I just noticed the
> difference when comparing a tile cache that I created before the change
> to one created a couple weeks ago). I'm not sure if having UC and LC as
> the first two positions considered preferable to how the positioning
> worked before. In a cluttered map, I find it non-intuitive to associate
> a point with a label that is centred above/below it. I would personally
> expect something like UR, UL, LR, LL, CR, CL, UC, LC. Map labelling
> convention for points based on what I remember from my schooling and my
> experiences since then seem to prefer UR and LR as the first locations
> to consider.
>  >
>  > If it is not desirable to implement another change to the AUTO label
> position order, perhaps it is necessary to consider the suggestion from
> the spring to have the option of specifying a custom "AUTO" label
> placement order (no idea how difficult this would be to implement).
>  >
>  > I just wanted to throw this out there.
>  >
>  > Regards,
>  > Christy
>
> I suggest that we do something about this, and I hope that it
> can be done before 6.2 is released.
>
> I have found out that the AUTO label positioning is done in
> mapdraw.c.
> For points the AUTO behaviour has changed from 6.0 to master.
> If the behaviour is to be changed, it should be done in
> accordance with cartographical literature and best practice.
>
> In "Thematic Cartography and Geographic Visualization", 2nd
> edition (Slocum, et. al., 2005), the following sequence is
> listed for point labeling (referring to Pinhas Yoeli, 1972,
> but modified to give preference to R placement - same as
> for legends):
> UR,LR,UL,LL,UC,LC,CR,CL.
> CR and CL are placed last, because those positions can result
> in "unfavourable optical coincidence" (Imhof 1975) - the point
> symbol could be misinterpreted as a type character in the label.
>
> In "Elements of Cartography" (Robinson, et.al.), the following
> sequence is listed for point labelling:
> UR,UL,LR,LL,UC,LC (CR and CL are not included, but some more
> variants of upper placement are listed as 7-9).
>
> The way I see it, it would be useful to change the behaviour
> of Mapserver auto labelling.
> 1) UR must be given the highest priority.
> 2) LL, UC, LC, CR and CL should be given lowest priority.
> 3) Someone must decide the sequence for LR and UL.
>
> These are then the two possible sequences:
> UR,LR,UL,LL,UC,LC,CR,CL
> UR,UL,LR,LL,UC,LC,CR,CL
>
> I see two options for 6.2:
> a) modify mapdraw.c to revert to 6.0 behaviour.
> b) modify mapdraw.c by changing the sequence to one that
>     is according to cartographical practice and literature.
>
> Håvard
>
> Mapserver label placement auto:
> 6.0 (and 5.6):
>   Polygon:
>     positions[0]=MS_CC;
>     positions[1]=MS_UC;
>     positions[2]=MS_LC;
>     positions[3]=MS_CL;
>     positions[4]=MS_CR;
>
>   Line:
>     positions[0]=MS_UC;
>     positions[1]=MS_LC;
>     positions[2]=MS_CC;
>
>   Point:
>     positions[0]=MS_UL;
>     positions[1]=MS_LR;
>     positions[2]=MS_UR;
>     positions[3]=MS_LL;
>     positions[4]=MS_CR;
>     positions[5]=MS_CL;
>     positions[6]=MS_UC;
>     positions[7]=MS_LC;
>
> master:
>    Polygon:
>      positions[0]=MS_CC;
>      positions[1]=MS_UC;
>      positions[2]=MS_LC;
>      positions[3]=MS_CL;
>      positions[4]=MS_CR;
>    Line:
>      positions[0]=MS_UC;
>      positions[1]=MS_LC;
>      positions[2]=MS_CC;
>    Point:
>      positions[0]=MS_UC;
>      positions[1]=MS_LC;
>      positions[2]=MS_CR;
>      positions[3]=MS_CL;
>      positions[4]=MS_UR;
>      positions[5]=MS_UL;
>      positions[6]=MS_LR;
>      positions[7]=MS_LL;
>
>



More information about the mapserver-dev mailing list