5511 Commits

Author SHA1 Message Date
Nyall Dawson
fce4ed06b8 Split fragments on tab characters 2024-05-25 06:10:28 +10:00
Nyall Dawson
25f00e2560 Don't try to render empty text strings 2024-05-25 06:10:28 +10:00
Nyall Dawson
f5853a7212 Add tab stop distance to QgsTextFormat 2024-05-25 06:10:28 +10:00
Nyall Dawson
0c41c22343 Fix bad merge 2024-05-24 16:34:33 +10:00
Nyall Dawson
6185675c93 Additional shortcut to QgsAttributes creation from Python
Avoid constructing a bunch of default QVariant objects which
we will just replace immediately
2024-05-24 16:34:33 +10:00
Nyall Dawson
280cd84652 Add more HoldGIL annotations to cheap methods 2024-05-24 16:34:33 +10:00
Nyall Dawson
8941bbf599 Optimise QgsAttributes python constructor
Avoid multiple checks for detachment for each attribute
2024-05-24 16:34:33 +10:00
Germán Carrillo
2768e41f0a Adjust docstring in qgsgeometryutils_base.h 2024-05-24 07:30:09 +10:00
Nyall Dawson
fe74b300be [feature] Add maximum distance setting for point labels
For the "Around point" and "Cartographic" placement modes, this
adds a new optional setting for the maximum distance of the labels from
the feature. It's used together with the existing distance setting
to define a range of distances at which labels may be placed
from their corresponding point features.

This adds more flexibility to the placement for these layers,
ultimately allowing for more labels to be placed in busy maps.

When the layer is set to the "around point" mode, then label
candidates which are closer to the point will always be prefered
over those which are further away.

When the layer is set to the "cartographic" mode, then the default
behavior is also to prioritize closer labels. A new combo box
allows users to control the priority, with an option for
prefering position ordering. If this option is set, then candidates
at the corresponding positions (eg top left) are preferred regardless
of how far they are from the point, with the labelling falling
back to alternate positions only when no labels can be placed
up to the maximum label distance.

Sponsored by Rubicon Concierge Real Estate Services
2024-05-23 17:20:30 +10:00
Nyall Dawson
587a80dcc2 Move label quadrant setting to QgsLabelPointSettings 2024-05-23 17:20:30 +10:00
Nyall Dawson
49cbe3bec3 Better documentation 2024-05-23 17:20:30 +10:00
Nyall Dawson
24cc226a64 Expose a useful method to python 2024-05-23 17:20:30 +10:00
Nyall Dawson
dda755d058 Move predefined position order member to QgsLabelPointSettings 2024-05-23 17:20:30 +10:00
Nyall Dawson
e81fcd0b09 Start on QgsLabelPointSettings class 2024-05-23 17:20:30 +10:00
Even Rouault
9c989ee84c Add a QgsTaskWithSerialSubTasks class 2024-05-23 11:49:49 +10:00
Mathieu Pellerin
8413982ad6 Let the signal carry whether a feature has been found, that might come in handy 2024-05-23 11:00:34 +10:00
Mathieu Pellerin
8c389cf613 [attribute form] Fix initial multi editing state of relation reference editor widgets 2024-05-23 11:00:34 +10:00
Jean Felder
f630efa59c qgsfeature: Optimize __set_item__ python call
This change is similar to the one done for `setAttribute`.
2024-05-23 05:15:16 +10:00
Jean Felder
27ebce6dad qgsfeature: Optimize setAttribute python call
This change is similar to the one introduced in the previous
commit for `QgsAttributes` . The python call of `setAttribute` expects
a `QVariant` as input. sip is able to directly handle `QVariant` but
this allocation can be slow.

In some cases, it is possible to speed-up the `setAttribute` call by
checking the type of the attribute. If the attribute is a boolean, an
integer, a float or a string, it is possible to avoid the intermediate
sip QVariant allocation done by `sipConvertToType`.

Based on some testing, this allows to speed-up a python `setAttribute`
call up to 80%. If the python attribute is already a `QVariant`, then
one get the same time.
2024-05-23 05:15:16 +10:00
Jean Felder
0446f85409 qgsattributes: Optimize QgsAttributes python allocation
The python `QgsFeature.setAttributes()` calls is relatively slow
because of the call to `sipConvertToType` which needs to make in
intermediate allocation for each attribute QVariant creation.

This change aims to speed up this call by avoiding the call to
`sipConvertToType` for the most common types.
The change itself is quite simple. If the input attribute is a
boolean, an integer, a string or a floating, a QVariant is directly
created by using the python C API instead of calling
`sipConvertToType`.

Based on some testing on lists which can contain between 5 and 10
elements, I have measured an acceleration up up to 70%.
2024-05-23 05:15:16 +10:00
Nyall Dawson
80b61d3d52 Add constBits methods to QgsRasterBlock
These can avoid an unwanted QImage detach when we are just
reading block data and don't need to modify it
2024-05-22 14:28:12 +10:00
Nyall Dawson
fb1eabbf0b const correct method 2024-05-22 14:28:12 +10:00
Nyall Dawson
7a3bf17bf1 Provide detailed error message when creating GeoPDF from layout fails
Instead of a generic message (which is not very helpful), show the
full error message we receive from GDAL to the user
2024-05-22 14:28:03 +10:00
Germán Carrillo
127ec157e9 [profile] Address review 2024-05-22 13:44:52 +10:00
Germán Carrillo
65ad23a769 [core] Introduce QgsProfileSourceRegistry to store sources other than map layers, e.g., based on web services 2024-05-22 13:44:52 +10:00
Nyall Dawson
cbd25c1fdd Promote QgsColorRampShader enums to enum class, move to Qgis 2024-05-22 12:37:44 +10:00
Nyall Dawson
04665953ed Also add variant which takes a list of layers 2024-05-20 11:52:10 +02:00
Nyall Dawson
c79168a6bc Add elevation utils method to collect significant elevation values for a project 2024-05-20 11:52:10 +02:00
Nyall Dawson
c8d66e1e8d Add method to retrieve significant elevation values from a layer 2024-05-20 11:52:10 +02:00
Nyall Dawson
91c17de4d5 Correct handle many-to-one and one-to-one relationships in expansions 2024-05-16 15:14:49 +10:00
Nyall Dawson
08451d7dc6 Fix build on older sip 2024-05-16 15:14:49 +10:00
Nyall Dawson
ecfcf6ced1 Use a more flexible API for handling SensorThings expansions
This allows us to control the sort order and limit for each expansion,
and gives us more flexibility in future to eg handle per expansion
filter strings
2024-05-16 15:14:49 +10:00
Nyall Dawson
742fa6b486 [sensorthings] Support feature expansion
This change allows SensorThings entities to be expanded to contain
their related child feature attributes, exposing the relational
SensorThings model as a traditional "flat" GIS-friendly table
structure.

Eg when selecting Location entities, you can now opt to expand
to "Things > Datastreams > Observations". This would result in
multiple "stacked" point location features, one corresponding
to each observation, with the attributes for each point feature
containing the location, thing, datastream and observation
attributes.

(Best used combined with some extent, feature limit, or custom
filter option, as this can otherwise result in very heavy
requests to the backend service!)

Fixes #56805
2024-05-16 15:14:49 +10:00
Nyall Dawson
f62e945578 Improve documentation 2024-05-14 12:00:10 +10:00
Nyall Dawson
701af9462b Rename to parentQuantityName 2024-05-14 12:00:10 +10:00
Nyall Dawson
0ff90a5698 When matching render elevation range to layer ranges, only consider
datasets from the same parent group
2024-05-14 12:00:10 +10:00
Nyall Dawson
4eb7661d85 Add fixed elevation range per dataset group mode for mesh layers
This mimics the "fixed range per band" mode we have for raster layers,
but allows a per-dataset group elevation range to be set for
mesh layers
2024-05-14 12:00:10 +10:00
Alexander Bruy
d6b2e840ff
Merge pull request #57396 from alexbruy/copy-composer-grid
Copy composer grid
2024-05-13 12:46:42 +01:00
Nyall Dawson
2860f23fa3 Add QgsLineString method to interpolate nan m values along line
Fills in any nan m values by interpolating from non-nan values
in neighbouring vertices
2024-05-11 08:33:21 +10:00
Alexander Bruy
8882fd9aa1 duplicate composer map grid (fix #47511) 2024-05-10 13:17:39 +01:00
Nyall Dawson
aa39eabde1 Add framework for feature renderer level data defined properties 2024-05-10 12:06:18 +10:00
Nyall Dawson
61b72b7d96 Fix see also 2024-05-10 06:09:56 +10:00
Nyall Dawson
59bc838172 Show a color ramp legend for vector heatmap layers
Instead of showing no legend for these layers, show the color
ramp as a gradient bar

Fixes #54772
2024-05-10 06:09:56 +10:00
Nyall Dawson
04f96fcf4b Move responsibility for creating vector legend nodes to renderer
This will allow renderer subclasses to create legend nodes which
aren't QgsSymbolLegendNodes.
2024-05-10 06:09:56 +10:00
Nyall Dawson
d87644c7db Add GPS navigation status to QgsGpsInformation 2024-05-10 06:09:15 +10:00
Nyall Dawson
997648baa9 Add 'over point' placement option for cartographic label mode
This adds a new option for placement when labels are set to the
"cartographic" mode, for "O" = "over point". When a feature's
data defined placement priorities include this new 'O' option,
a label can be placed directly over the corresponding point.

Sponsored by Rubicon Concierge Real Estate Services
2024-05-10 06:08:50 +10:00
signedav
d0d2023978
Merge pull request #57217 from signedav/duplicatepolicy
Duplicate policy on QgsFields when duplicate features
2024-05-08 19:53:31 +02:00
signedav
cfe71973c2 rename FieldDomainDuplicatePolicy to FieldDuplicatePolicy because - not like the Merge or Split Policy it does not affect the FieldDomains but only the Fields instead 2024-05-07 14:28:15 +02:00
uclaros
eee787f825 return magnitude multiplier based on units set 2024-05-07 10:22:36 +02:00
uclaros
3d4c19d3b3 Add support for Wind Barb rendering for mesh vector datasets 2024-05-07 10:22:36 +02:00