Hi list,
I'm trying to plot OS Mastermap data using Mapnik, and am having a bit of trouble with the placement of the cartographic labels. Rather than having the labels sourced from shape attributes, the dataset defines all label text as separate features with: - a point location - the anchor location of the text relative to the point (i.e. Top left, Middle bottom etc.) - the angle at which the text should be oriented (rather curiously, measured as an integer value in 10ths of a degree from 0 - 3599) If I use a TextSymbolizer with placement=point, then I can place the labels at the correct position relative to the point using a combination of the vertical_alignment and dx/dy properties, but there doesn't seem to be any way to specify the angle at which the text should be drawn. (i.e. there's no equivalent to MapServer's ANGLE property) So, instead, I've been applying some old-school trigonmetry to artificially create lines at the appropriate angle, either starting or ending at the anchor point in question, and drawing the text on the line using a TextSymbolizer with the placement=line model instead. It's a lot slower, since it's probably invoking lots of clever "wrapping text to wiggly lines" computations that aren't required for my single line segment scenario, but it does (nearly) get the results I want. The problem I now have is that, by using the placement=line model, I appear to have sacrificed the ability to specify whereabouts along the line the label gets placed - there is no horizontal-alignment attribute when using a TextSymbolizer on a line as far as I can tell - the label is always placed in the centre of the line. That means the only way I can get the label drawn in the right place is if I create the line to be exactly of the right length for the label to fit. If I create it too big, the label is effectively "padded" away from its anchor point (which lies at one end of the line) and misplaced. But, if I create the line too small, the TextSymbolizer label attached to it won't be rendered at all. The problem is that, seeing as I'm using a non-fixed width font, the length of the text string (and therefore the offset) is different for every individual label - I've tried computing an approximate line length per length of label, but it's not reliable enough to be used. Does anybody have any smart workarounds (or perhaps, a magical text-angle property that I'm unaware of!) as to how to create angled text anchored to a point? Thanks!
_______________________________________________ Mapnik-users mailing list [email protected] https://lists.berlios.de/mailman/listinfo/mapnik-users

