mapnik/mapnik — pull request #2160 by jhollinger2 (2014-02-18 23:59:08+00:00)
Title: Group Symbolizer

This pull request contains a new symbolizer, along with its implementation in each of the renderers.

The purpose of group symbolizer is to place multiple road shields or other labels grouped as single point placements on a feature. The individual labels in the group get positioned automatically by a group layout defined within the symbolizer. Multiple labels can be represented on a single feature using numbered column names. These numbered columns are matched to a single set of rules within the group symbolizer. This single set of style rules greatly simplifies the style definition needed to represent many different combinations of shields or labels.

For example:

```xml

[ref%].match('US ')

[num%]

[ref%].match('I ')

[num%]

```
The above group symbolizer definition specifies two sets of columns per feature, and it references [ref%] and [num%] within its rules and symbolizers. As a result, the group symbolizer will look for column the following columns: [ref1], [num1], [ref2], and [num2]. Each set of columns will be matched to the rules separately. The default simple layout that is defined will arrange each of these labels in a horizontal row, centered on the placement point.

Currently, group symbolizer only supports point and text symbolizer within the group rules. However, it can be extended to support other symbolizer types, particularly shield and marker symbolizers.

I will work on a more extensive documentation to provide more details.

Note: This pull request includes one commit in common with #2138 (Multiple text layouts in text symbolizer), which has not yet been merged.