(only works with Cartographic point label placement). When this
setting is active, the label distance applies from the bounds
of the rendered symbol for a point, instead of the point itself.
It's especially useful when the symbol size isn't fixed, eg if
it's set by a data defined size or when using different symbols
in a categorised renderer.
Sponsored by Andreas Neumann
In this placement mode, point label candidates are generated
following ideal cartographic placement rules, eg labels
placements are priortised in the order:
- top right
- top left
- bottom right
- bottom left
- middle right
- middle left
- top, slightly right
- bottom, slightly left
(respecting the guidelines from Krygier and Wood (2011) and other
cartographic textbooks)
Placement priority can also be set for an individual feature using
a data defined list of prioritised positions. This also allows for
only certain placements to be used, so eg for coastal features you
could prevent labels being placed over the land.
TODO:
- while the ordering can be customised by editing a project file,
there's no GUI to customise this ordering if you want to deviate
from this standard priority (and it's out of scope for this
current work)
- tests
Sponsored by Andreas Neumann
In the project properties the user can:
* activate INSPIRE capabilities
* select language of the service, 24 EU official languages + 5 regionals
* choose the scenario for service metadata and specify them
The WMS 1.3.0 capabilities reflects the INSPIRE configuration.
The tracer builds a graph from input layers and uses Dijkstra's
algorithm for the shortest path in the graph.
There is already QgsGraph class and friends in QGIS code including
Dijkstra's algorithm, however that implementation does not fit our
needs well for a number of reasons (some of them would be easy
to fix, but others would require a significant rewrite):
- limited to single input layer
- no monitoring of changes in the input layers
- no support for polygons
- not in core library
- shortest path alg does only stops when all distances are calculated
- every point of input layer represented as a vertex in graph
(resulting graph is much denser than necessary and path finding slower)
- edges have always one direction, requiring two edges between each
pair of vertices (resulting graph has twice as many edges)
- graph is always built with start/finish points
(does not allow temporary addition of start/finish points and their
removal without complete rebuild of the graph)
The 'layercount' attribute was not used anyway and the calculated number could already be outdated when loading the project file again due to changes to embedded projects.
A new control for setting a label's "z-index" has been added to
the labeling properties dialog. This control (which also accepts
data-defined overrides for individual features) determines the order
in which label are rendered. Label layers with a higher z-index
are rendered on top of labels from a layer with lower z-index.
Additionally, the logic has been tweaks so that if 2 labels have
matching z-indexes, then:
- if they are from the same layer, a smaller label will be drawn
above a larger label
- if they are from different layers, the labels will be drawn in
the same order as the layers themselves (ie respecting the order
set in the legend)
Diagrams can also have their z-index set (but not data defined)
so that the order of labels and diagrams can be controlled.
Note that this does *NOT* allow labels to be drawn below the
features from other layers, it just controls the order in which
labels are drawn on top of all the layer's features.
Fix#13888, #13559
Now all classes and members are either exposed to bindings or marked
as "not available in Python bindings" in the docs.
Drop test thresholds to 0. Now it should be much easier to determine
what missing members have been added which are causing test
failures.