[Qgis-developer] Road shield labels

Andreas Neumann a.neumann at carto.net
Thu Sep 27 23:53:51 PDT 2012


 Hi Larry,

 This would be great to have in the future. Road shields in Europe are 
 typically less complex than in the use. Usually we have either simple 
 rects or circles, but having a SVG background option would be great for 
 anything more complex.

 Allowing SVG symbols to have parameterized text content (data driven) 
 would also be great. We already have parameterized fill and stroke, so 
 this would be a natural addition.

 I can't help with C++ coding, but I would certainly be available for 
 testing,

 Thanks a lot,
 Andreas

 On Thu, 27 Sep 2012 18:20:38 -0600, Larry Shaffer wrote:
> Hi Andreas,
>
> On Thu, Sep 27, 2012 at 1:59 PM, Andreas Neumann 
> <a.neumann at carto.net> wrote:
>> Hi,
>>
>> At the qgis-user list someone has asked on how to create road-shield 
>> labels.
>>
>> I came across http://linfiniti.com/2011/08/shield-labels-for-qgis/
>>
>> but in current master I can't find a way to define a background 
>> shape or
>> background color (rectangular and not buffer).
>>
>> Did this never make it into master?
>>
>> I think that we should offer a way to create road shields in QGIS.
>>
>> Another option would be to user marker lines and allow SVG markers 
>> to
>> dynamically replace text in an SVG shield for more complex US-style 
>> road
>> shields ...
>>
>> Any ideas on how to accomplish this?
>
> I am looking at implementing this as an addition to the new labeling
> engine (inside QgsPalLabeling, not inside of the PAL engine, per se).
> Basically, I think we can have a SVG 'shield' centered behind a 
> label.
> (I'm thinking SVG Background, not shield, even though that's what it
> would be widely used for) That SVG background can also be scaled to
> match the size of the label text and its rotation. If there was an X
> and Y 'scale buffer' figured in, the shield would be scaled to the
> size of the label plus those buffers.
>
> Example:
> US Interstate Shield with a buffers of X = 10 and Y=4 would scale
> horizontally (before being rotated) to the width of the label + the 
> 10
> units (mm or map) on each side; while height-wise, there only needs 
> to
> be enough buffer to ensure the top and bottom of the shield would be
> appropriately visible outside the text. The buffers would of course 
> be
> relative to the SVG background chosen.
>
> Other options could include X/Y Offsets (offsetting the background so
> the label text is over a particular 'location' in the SVG) and
> Rotation (whether to rotate background with the label, or always stay
> upright or at particular angle while the label text still rotates).
>
> With the SVG as a background to the label (e.g. integrated with
> QgsLabelPosition), the label manipulation tools can be used to
> show/pin/move/rotate the label and background together. If the SVG
> background had its own data defined values for offset and rotation, 
> it
> could be manipulated with new label background manipulation tools
> (though not sure how much use that tool would be to users).
>
> Lastly, it might be possible to also change the color of some SVG
> icons (say ones with specific elements that have a known id). This
> would allow the background to match other symbology colors, without
> requiring the creation of a separate SVG for each color.
>
> All of those options could be data defined as well.
>
> I was going to start in on this project after finishing what I can
> with the current updates to Advanced Labeling I have been doing. In 
> my
> opinion, SVG backgrounds would be the last need-to-have feature in
> labeling before moving the entire labeling options setup to one based
> upon 'styles chosen by rules'.
>
> In that scenario, all separate labeling option groups could be saved
> as styles (e.g. Text, Buffer, Placement, etc.), then rules could be
> defined to select which groups of styles are applied to what 
> features.
> Then, the labeling setup could be an extension of the rule-based
> symbology setup, or at least share some of its already-defined rules.
> (Integrating the symbology and labeling rule-based setups might be
> easier after a separate labeling rule-based setup exists.)
>
> Once the label styles system is available, styles can be saved/loaded
> from project to project.
>
> If anyone would like to collaborate with me, or possibly mentor my
> work, I would appreciate it. I understand the inner workings of the
> labeling engine pretty well now (enough to attempt the SVG
> backgrounds), but my C++ skills are quite new. I should be able to
> start in a couple of weeks.
>
> Regards,
>
> Larry
>
>
>>
>> Other blog posts on the topic:
>> 
>> http://underdark.wordpress.com/2011/10/10/interstate-shield-styles-in-qgis/
>>  - but without the dynamic SVG parameter style text replacement the 
>> road
>> nr is sort of hard-coded ...
>>
>> Andreas
>> _______________________________________________
>> Qgis-developer mailing list
>> Qgis-developer at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/qgis-developer

-- 
 --
 Andreas Neumann
 Böschacherstrasse 10A
 8624 Grüt (Gossau ZH)
 Switzerland


More information about the Qgis-developer mailing list