[Qgis-developer] New adv labeling freeze-thaw tools

John C. Tull jctull at gmail.com
Tue Jul 17 14:35:46 PDT 2012


I look forward to seeing this in trunk. Thanks for the great contribution.

John

On Jul 17, 2012, at 2:28 PM, Larry Shaffer wrote:

> I've updated and extensively tested this new tool (not all platforms)
> and it works very well. I have sent in a pull request:
> 
> https://github.com/qgis/Quantum-GIS/pull/193
> 
> Again, here's the intro video:
> http://vimeo.com/dakotacarto/freezethawlabels
> (Note: I haven't had much sleep, so the video is a bit rough.)
> 
> As an unexpected added bonus (well, unexpected to me), the tool helps
> greatly with slow label rendering options, like a polygon layer's
> 'free' and 'horizontal' modes. After the PAL labeling engine finishes
> with those modes during a canvas refresh (sometimes taking several
> minutes), just use the freeze label tool on the result. The subsequent
> canvas refreshes are magnitudes faster.
> 
> Marco H., thank you for your help on this, and thanks to sourcepole
> and Martin for doing such a great job of coding the advanced labeling
> engine. I would have never been able to produce this tool had it not
> been for the excellent existing and flexible code.
> 
> Regards,
> 
> Larry Shaffer
> Dakota Cartography
> Black Hills, South Dakota
> 
> 
> On Mon, Jul 16, 2012 at 9:45 AM, Marco Hugentobler
> <marco.hugentobler at sourcepole.ch> wrote:
>> Hi Larry
>> 
>>> If you have the time to look at the constructor for
>>> QgsMapToolFreezeLabels (the FIXME), you'll notice I could not find a
>>> way to make the signal/slot connections from there. Currently they are
>>> in qgisapp.cpp, but I would prefer to not pollute that core file with
>>> any more of my tool's code than necessary. What's the simplest way to
>>> create the connections from inside my QObject-inherited tool instead?
>> 
>> 
>> The slot methods need to be declared as slots in the header file, like this:
>> 
>> public slots:
>> 
>>    //! Update frozen label highlights on canvas render finished
>>    void updateFrozenLabels();
>>    //! Render rectangles around frozen labels
>>    void highlightFrozenLabels();
>> 
>> Currently, they are just normal public methods.
>> 
>> Regards,
>> Marco
>> 
>> Am 16.07.2012 11:35, schrieb Larry Shaffer:
>>> 
>>> On Mon, Jul 16, 2012 at 2:18 AM, Marco Hugentobler
>>> <marco.hugentobler at sourcepole.ch> wrote:
>>>> 
>>>> Hi Larry
>>>> 
>>>> Excellent work, thank you!
>>>> The freeze/thaw tool will be a great addition to the label tool bar.
>>>> 
>>>> I wonder if the tool could also be active if x/y is data defined and
>>>> rotation not (currently, x/y/rotation need to be data defined to use the
>>>> tool).
>>> 
>>> Yes, that is an unnecessary restriction. I'll make the rotation field
>>> optional.
>>> 
>>>> On a detail level, in QgsMapToolFreezeLabels::highlightLabel you could
>>>> probably use QgsMapRenderer::mapToLayerCoordinates to transform the
>>>> rectangle (instead of mCoordTransform ).
>>> 
>>> Will make the change. Thanks.
>>> 
>>> If you have the time to look at the constructor for
>>> QgsMapToolFreezeLabels (the FIXME), you'll notice I could not find a
>>> way to make the signal/slot connections from there. Currently they are
>>> in qgisapp.cpp, but I would prefer to not pollute that core file with
>>> any more of my tool's code than necessary. What's the simplest way to
>>> create the connections from inside my QObject-inherited tool instead?
>>> 
>>> Regards,
>>> Larry
>>> 
>>> 
>>> 
>>>> Am 16.07.2012 05:31, schrieb Larry Shaffer:
>>>> 
>>>> Hi,
>>>> 
>>>> The current large-format project I'm working on requires me to layout,
>>>> for print, thousands of labels. So I spent the last couple of days
>>>> making two new tools for the advanced labeling toolbar that allow the
>>>> user to interactively 'freeze' (write coords and rotation info to
>>>> attribute table) and 'thaw' (revert from data-defined to dynamic) any
>>>> rendered labels.
>>>> 
>>>> *Show Frozen Labels*
>>>> 
>>>> This tool highlights frozen labels for all visible layers. Blue
>>>> highlighted labels are frozen, green are frozen and editable (parent
>>>> layer's in edit mode).
>>>> 
>>>> *Freeze/Thaw Labels*
>>>> 
>>>> This tool allows the user to interactively choose, by single or
>>>> marquee selection, labels to freeze or thaw. The in-memory attribute
>>>> table is immediately updated and results shown to user. This tool
>>>> allows the user to interactively manipulate the PAL labeling engine to
>>>> find the best solutions for their frozen labels.
>>>> 
>>>> Since the topic and how the tool interacts with the labeling engine is
>>>> more complicated, I made an intro video. (Note: I haven't had much
>>>> sleep recently, so it's a bit rough.)
>>>> 
>>>> http://vimeo.com/dakotacarto/freezethawlabels
>>>> 
>>>> 
>>>> This is my first C++ project, so I'd be really happy if someone
>>>> audited the code before I squash the commits and send a pull request:
>>>> 
>>>> https://github.com/dakcarto/Quantum-GIS/tree/feature_freeze-thaw-labels
>>>> 
>>>> Only tested on Mac, as of now. Nothing platform-specific about it though.
>>>> 
>>>> Regards,
>>>> 
>>>> Larry Shaffer
>>>> Dakota Cartography
>>>> Black Hills, South Dakota
>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> Qgis-developer mailing list
>>>> Qgis-developer at lists.osgeo.org
>>>> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>>>> 
>>>> 
>>>> 
>>>> --
>>>> Dr. Marco Hugentobler
>>>> Sourcepole -  Linux & Open Source Solutions
>>>> Weberstrasse 5, CH-8004 Zürich, Switzerland
>>>> marco.hugentobler at sourcepole.ch http://www.sourcepole.ch
>>>> Technical Advisor QGIS Project Steering Committee
>>>> 
>>>> 
>>>> _______________________________________________
>>>> Qgis-developer mailing list
>>>> Qgis-developer at lists.osgeo.org
>>>> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>>>> 
>> 
>> 
>> --
>> Dr. Marco Hugentobler
>> Sourcepole -  Linux & Open Source Solutions
>> Weberstrasse 5, CH-8004 Zürich, Switzerland
>> marco.hugentobler at sourcepole.ch http://www.sourcepole.ch
>> Technical Advisor QGIS Project Steering Committee
>> 
> _______________________________________________
> Qgis-developer mailing list
> Qgis-developer at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/qgis-developer



More information about the Qgis-developer mailing list