173 Commits

Author SHA1 Message Date
Nyall Dawson
e9730b1bb3 Add capabilities for raster renderers
And selectively expose some of QgsRasterRendererRegistry to python
2024-03-18 21:26:20 +01:00
Nyall Dawson
1796318afe Add a "fixed range per band" elevation mode for rasters
In this mode, each band in the raster can have a fixed elevation
range associated with it. This is designed for data sources which
expose elevation related data in bands, eg netcdf files, such
as a raster with temperate data at different ocean depths.
2024-03-18 21:26:20 +01:00
Nyall Dawson
7fc4ed3999 Add range limits api to QgsRange 2024-03-16 13:11:54 +10:00
Nyall Dawson
253623feb0 Introduce fixed elevation range for raster layers
This introduces a new option for specifying how raster layers
have associated elevation. It permits a fixed elevation range
to be set for the layer. It can be used when the layer has
a single fixed elevation, or a range (slice) of elevation values.

Users can set the lower and upper elevation range for the layer,
and whether the lower or upper limits are inclusive or
exclusive.

When enabled, the layer will only be visible in elevation
filtered 2d maps when the layer's range is included in the map's
z range.
2024-03-16 13:11:54 +10:00
Nyall Dawson
4a0bc4ae99 Deprecated subclass methods 2024-03-16 06:35:16 +10:00
Nyall Dawson
2556a6674d Also add virtual inputBand getter 2024-03-16 06:35:16 +10:00
Nyall Dawson
e297f54871 Add some see links 2024-03-16 06:35:16 +10:00
Nyall Dawson
5d29d49869 [api] Add virtual QgsRasterRenderer::setInputBand method
Attempts to set the input band for the renderer.
Returns TRUE if the band was successfully set, or FALSE if the
band could not be set.

This was implemented in various raster renderer subclasses,
but it was necessary to down cast and then call the individual
methods (which don't have consistent names!).

Instead, add a top level virtual method so that it's easy to
change the input band for the renderers.
2024-03-16 06:35:16 +10:00
uclaros
9796d3766b update topological point snap threshold 2024-03-13 15:37:06 +01:00
Nyall Dawson
94697e8176 Rework QgsGpsDetector to make it memory safe
This is messy, as there's no way we can possibly make the current,
stable API of this class safe. We have to resort to an opt-in
"safe" mode which exposes a non-dangerous API.

This should hopefully fix issues where the qt event loop causes
destruction of the detected connection before listener slot is
called and is able to take ownership of the signal argument...
2024-03-13 12:54:21 +10:00
Nyall Dawson
56af3498e8 Add method to convert raw pixel values to elevation values 2024-03-13 05:56:05 +10:00
Nyall Dawson
a47476d388 Add z range to QgsIdentifyContext
And hookup for point cloud identification. We actually already
correctly handled z range filtering for point cloud identify,
because that method is using the canvas' render context and
filtering by the corresponding z range. But this new approach
makes things more flexible and usable for different layer types.
2024-03-13 05:56:05 +10:00
uclaros
bf8433bf6d Fix splitting when snapping to segment is used 2024-03-12 09:13:51 +01:00
Nyall Dawson
14313198dc Add QgsCoordinateReferenceSystem::horizontalCrs()
Similar to verticalCrs(), this returns just the horizontal component
of a crs
2024-03-12 12:45:36 +10:00
Germán Carrillo
8b706bac64 [core] Add option 'Use only selected features' to DXF export 2024-03-12 12:07:42 +10:00
Mathieu Pellerin
12bc99414c
Merge pull request #56779 from nirvn/sensor_serial_delimiter
Serial port sensor's data frame delimiter
2024-03-11 15:03:17 +07:00
Mathieu Pellerin
681b83598c
Merge pull request #56655 from nirvn/valuerelation_groupby
[editor widgets] Implement value relation's grouping functionality
2024-03-11 14:55:14 +07:00
mhugent
53153b5c5b
Merge pull request #56428 from mhugent/dxf_data_defined_blocks
Create DXF blocks for point symbols with data defined properties
2024-03-11 07:36:40 +01:00
Mathieu Pellerin
4394ceafbe [editor widgets] Store value relation's group values as variants 2024-03-11 11:40:55 +07:00
Mathieu Pellerin
848a1f3d3b [editor widgets] Implement value relation widget's grouping for combobox and table widgets 2024-03-11 11:40:55 +07:00
Mathieu Pellerin
0995197eb6 Address review 2024-03-11 09:32:40 +07:00
Mathieu Pellerin
6619dc738b [sensors] Add new data frame delimiter option for the serial port sensor 2024-03-10 09:33:17 +07:00
Nyall Dawson
9d281971d5 Add QgsCoordinateReferenceSystem method to create a compound CRS 2024-03-10 12:19:04 +10:00
Nyall Dawson
b2c1fff11a [api] Add method to retrieve vertical CRS from QgsCoordinateReferenceSystem
Returns the vertical CRS associated with this CRS object.

In the case of a compound CRS, this method will return just the vertical CRS component.

An invalid CRS will be returned if the object does not contain a vertical component.
2024-03-10 06:40:39 +10:00
Nyall Dawson
07294f7252 Add elevation range to QgsProjectElevationProperties
And expose through Project Properties elevation settings widget

This setting allows users to specify the upper and lower
elevation limits associated with the project. (I.e. its an
equivalent to QgsProjectTimeSettings::temporalRange)
2024-03-09 06:57:53 +10:00
Nyall Dawson
7892bd855b Register QgsIntRange/QgsDoubleRange as metatypes 2024-03-09 06:57:53 +10:00
Matthias Kuhn
912ae75fb0
Merge branch 'master' into no-leak-build-path 2024-03-04 09:10:53 +01:00
Nyall Dawson
e22a1d605b [feature][layouts] Add z range filter option for layout maps
Similar to the existing setting for temporal filtering of 2d layout
maps, this setting allows users to set a specific elevation/z range
for a layout map item. When set, map layers with support for 2d
z range filtering (currently point clouds and raster DEMs) will
be filtered to show only content within this range.

The z range can be data-defined, allowing differing z range
for different atlas or report features.
2024-03-04 17:00:24 +10:00
Nyall Dawson
24edefb684 Add extent based filtering for SensorThings layers
Allows users to set an extent limit for the layer, so that
features are only ever loaded within this extent

The extent can be set from the data source manager before adding
the layer initially, or modified from the layer properties, source
tab.
2024-03-04 08:26:10 +10:00
Nyall Dawson
bb379242fc Add filter for provider origin fields only to QgsFieldProxyModel 2024-03-04 08:14:01 +10:00
Nyall Dawson
4284b8645b Use vector instead of list for better performance
This container is expected to have only a handful of items in it
in most cases and will rarely change => QVector is a better choice
2024-03-04 07:25:51 +10:00
Nyall Dawson
c40a1ef3bb Further cleanups to QgsRasterTransparency API
Avoid confusing mix of transparency vs opacity, multiple scaling
and round trips through integers.
2024-03-04 07:25:51 +10:00
Nyall Dawson
c162375965 [api] Add explicit setting for includeMinimum/Maximum
to QgsRasterTransparency.TransparentSingleValuePixel. Allows (via
API only) control over whether the extremities of the range
should be included in the transparency.

Also add equality operator, repr to these classes, and additional
tests
2024-03-04 07:25:51 +10:00
Nyall Dawson
65ba3ddfef Cleanup QgsRasterTransparency API
- Make classes less like to be created with uninitialized members
- Use opacity instead of transparency, to match API from elsewhere in
  QGIS
2024-03-04 07:25:51 +10:00
Even Rouault
a68422b982 Various typo fixes
Including 3 public methods, which are deprecated by this commit and replaced by a typo-fixed version
2024-02-29 06:03:03 +10:00
Marco Hugentobler
3abf199f5f Change method naming and comments 2024-02-28 18:06:12 +01:00
Nyall Dawson
80c0c385f8 Use better python repr for null QgsRectangle 2024-02-28 13:00:01 +10:00
Jacky Volpes
8983852288 Note precision about method becoming public 2024-02-28 12:34:26 +10:00
Jacky Volpes
fdc64b79a0 Sipify 2024-02-28 12:34:26 +10:00
Nyall Dawson
ebea330398 Add data provider flags for FastExtent2D/FastExtent3D
These flags reflect that retrieval of the provider's 2D or 3D extent
retrieval via QgsDataProvider::extent()/extent3D() are ALWAYS guaranteed
to be trivial/fast to calculate and involve absolutely no extra work.
2024-02-28 06:04:50 +10:00
Even Rouault
f36caa7274 [Qt6] Fix crash with Python on QgsLocatorResult::userData (fixes #56456) 2024-02-28 06:04:20 +10:00
mhugent
2392d877e0
Merge branch 'qgis:master' into dxf_data_defined_blocks 2024-02-26 09:06:16 +01:00
Mathieu Pellerin
f2d70de878 Address review 2024-02-26 11:43:23 +07:00
Mathieu Pellerin
e79bd538b6 [network logger] Insure the actual request URL is properly reflected in the logger 2024-02-26 11:05:12 +07:00
Matthias Kuhn
60940bfe16 Do not leak build env paths into public headers 2024-02-24 21:48:32 +01:00
Alessandro Pasotti
db37ff8fc9
Merge pull request #56334 from elpaso/bugfix-gh55532-line-break-in-html-labels
[labeling] fix BR in HTML labels
2024-02-23 09:28:08 +01:00
Nyall Dawson
58e31ad3c0
Revert "Restore default metadata from DB" 2024-02-23 09:12:26 +10:00
Nyall Dawson
ed43556c93 Don't show misleading null in variant warnings when converting objects
for Python

This isn't something we are doing wrong, it's how sip handles these
objects.
2024-02-23 05:41:22 +10:00
Nyall Dawson
7d0d81f373 Add setters for QgsWeakRelation layer sources 2024-02-21 12:31:15 +10:00
Alessandro Pasotti
1850b9b2e6
Merge pull request #55924 from elpaso/bugfix-gh55726-restore-default-metadata
Restore default metadata from DB
2024-02-20 18:14:51 +01:00