Contains static helper methods for working with vector layers.
Initially only contains a method to test whether a value
exists within a layer's attributes.
To make the implementation saner, the legend node that may be embedded within parent
layer node is kept separately from activeNodes.
(cherry picked from commit b385ebd9ba9272516eed61e5825a603fcee969e9)
Made sure that both closestVertex() and closestSegment() return negative
distance on error (e.g. with null or emtpy geometry).
Also fixes snapping when dealing with layers with null/invalid geometries
(cherry picked from commit c093d5188fad685c4a596ff23c27aad7d151dac2)
This makes it possible to access attributes and geometry from the parent
feature when in the filter of the "aggregate" expression function.
With this in place aggregates can be calculated per feature.
E.g. max "measurement" for each point_station per polygon_research_area.
Or a default attribute value when digitizing features:
aggregate(layer:='countries', aggregate:='max', expression:=\"code\",
filter:=intersects( $geometry, geometry(@parent) ) )
Make nCoordinates virtual, and provide shortcuts for some
geometry types. The base method which calls coordinateSequence()
is quite slow in certain circumstances.
Speeds up rendering point layers by ~25%, also likely to
speed up lots of geometry heavy operations throughout QGIS
Refs #15752
Moves all the drawing code out of labeling into a new class
which just handles rendering text. This allows other parts
of the code to utilise all the advanced formatting options
that labeling supports, eg rendering text with shadows,
buffers and backgrounds.
Previously pictures could only be synced to grid north, which
can be totally wrong for many CRSes (especially in polar areas)
Users now are given a choice of grid or true north, and can also
enter an optional offset to apply if eg magnetic north is instead
desired.
When synced to true north the bearing is calculated using the
centre point of the linked map item.
Fix#192, #4711
This fix was sponsored by the Norwegian Polar Institute's
Quantarctica project (http://quantarctica.npolar.no) and
coordinated by Faunalia.
Adds a new checkbox at the bottom of each symbol layer's
properties which allows you to control whether the layer is
enabled or not.
Disabled layers are not drawn, but are saved and can be
enabled at a later stage.
This makes it easier to tweak symbol appearance without
having to totally delete a symbol layer.
When saving a vector layer into an existing file, depending on the capabilities
of the output driver, the user can now decide whether:
- to overwrite the whole file
- to overwrite only the target layer (layer name is now configurable)
- to append features to the existing target layer
- to append features, add new fields if there are any.
All above is available for drivers like GPKG, SpatiaLite, FileGDB, ...
For drivers like Shapefile, MapInfo .tab, feature append is also available.