23234 Commits

Author SHA1 Message Date
Marco Hugentobler
96d5cc99b3 Consider setting layerTreeInsertionMethod when adding content from qlr to canvas 2024-04-09 06:52:29 +10:00
Mathieu Pellerin
a62cc55e92 Remove renderer widget from python bindings 2024-04-08 11:47:51 +07:00
Mathieu Pellerin
d68a428f6e Address review 2024-04-08 11:47:51 +07:00
Mathieu Pellerin
4bd2e66b3f Rename classes 2024-04-08 11:18:35 +07:00
Mathieu Pellerin
d7325cba40 [raster] New single color renderer 2024-04-08 11:18:35 +07:00
Mathieu Pellerin
6dafb5d495 More review addressed 2024-04-08 09:27:58 +10:00
Mathieu Pellerin
e9b3408a6c Optimize a bit 2024-04-08 09:27:58 +10:00
Mathieu Pellerin
feabbe722e Address review 2024-04-08 09:27:58 +10:00
Mathieu Pellerin
891a8efc84 [raster][temporal] Add a brand new temporal mode: pixel value as temporal datetime 2024-04-08 09:27:58 +10:00
Andrea Giudiceandrea
94f56380f9 [db manager] Fix field property editing 2024-04-05 15:34:09 +10:00
Jean Felder
1a4e1a77e7 qgsgeometry: Add contains method from x,y coordinates 2024-04-03 20:38:40 +02:00
Julien Cabieces
dc677f4230
Merge pull request #56600 from troopa81/feat_add_srs_getfeatureinfo_json
[Feature][WMS] Add crs information in WMS GetFeatureInfo output when it differs from WGS84
2024-04-02 17:54:00 +02:00
Blottiere Paul
2b00dc1cde Explicit slot 2024-03-29 09:43:03 +01:00
Blottiere Paul
46069292c8 Fix doc 2024-03-28 15:32:43 +01:00
Blottiere Paul
f8b6a0b3f3 Add doc 2024-03-28 15:26:23 +01:00
Blottiere Paul
bd6489303a Remove the corresponding capabilities doc in cache when a project is removed from cache 2024-03-28 15:09:49 +01:00
Nyall Dawson
63c1d5cfc0 Implement a proper read-only state for list/key value widget wrappers
Instead of just setting the whole widget as disabled, implement proper
read-only state for these widgets. This fixes an annoying UI issue where
the list / key value widgets can't be scrolled when opening read-only
attribute forms, preventing users from viewing all the entries in
the widget.
2024-03-27 11:44:00 +10:00
Nyall Dawson
94bef546b2 Ensure temporal and elevation filters work correctly in conjunction
Fixes #56938
2024-03-26 08:54:31 +10:00
Nyall Dawson
4d442441f8 [sensorthings] Add support for Multidatastreams
This adds support for the Multidatastream entity type, as
implemented in the SensorThings version 1.1 "MultiDatastream extension"

While the specification mandates that MultiDatastreams have an
optional polygon geometry, I've encountered numerous servers
which expose different geometry types for this entity or which
return errors when attempting to read the geometries from
MultiDatastreams. Accordingly we always expose an option to
load MultiDatastreams as geometryless layers alongside the
default option to load them as polygon layers, to handle a
wider range of connections.
2024-03-25 19:16:56 +10:00
t0b3
57517b7292
fix: build without qtserialport
closes: https://github.com/qgis/QGIS/issues/56944
Signed-off-by: t0b3 <thomas.bettler@gmail.com>
2024-03-24 14:24:12 +01:00
Nyall Dawson
3f44760a82 Add "Fixed Time Range Per Band" mode for raster temporal control
This mode can be used when each band in the raster layer is associated
with a fixed time range, eg. NetCDF files.

The user can either manually populate a table with begin/end dates for
each band in the raster, or build the table using QGIS expressions
which return datetime values.
2024-03-22 12:40:54 +10:00
Nyall Dawson
d9a49f58fd Add API for custom preview generators in QgsExpressionBuilderWidget
In this mode, the widget will call a callback function to generate
a new QgsExpressionContext as the previewed object changes. This
can be used to provide custom preview values for different objects
(i.e. for objects which aren't vector layer features), such as raster
bands or other custom objects.
2024-03-21 12:33:33 +01:00
Nyall Dawson
4383a3a225 Add "dynamic elevation range per band" mode for rasters
In this mode, the user can specify a QGIS expression for the
lower and upper value corresponding to raster bands, using
variables like @band, @band_name and @band_description.

E.g

    @band * 100

Can be used when each band represents a 100 m vertical slice
of data.

The expression will be evaluated when required to determine
the actual elevation range corresponding to each band.

This differs from the existing "Fixed Elevation Range Per Band"
mode in that "Fixed Elevation Range Per Band" requires users
to manually enter an elevation for each band separately,
and these values are then treated as constants. That mode works
best for rasters with non-regular steps in the band
elevation values, while this new mode is better for regular
band elevation steps
2024-03-21 12:33:33 +01:00
Nyall Dawson
84f37095bc
Fix typo 2024-03-20 14:17:00 +10:00
Nyall Dawson
c997d5a8d9 Fix test 2024-03-19 13:44:02 +10:00
Nyall Dawson
d2e3534dbd [processing] Use correct ellipsoid for network analysis tools
Use the processing context's ellipsoid instead of a hardcoded
WGS84 ellipsoid for distance calculations during network
analysis, so that the lengths used will exactly match other
measurement tools used on the same features in the same
project.
2024-03-19 13:44:02 +10:00
Nyall Dawson
40847d0596 Avoid some unnecessary redraws 2024-03-19 13:29:40 +10:00
Nyall Dawson
0bb3a26b20 Implement fixed elevation range for mesh layers
Just like the equivalent mode for raster layers, this mode indicates
that a fixed constant z range should be applied to the entire mesh
layer.
2024-03-19 13:29:40 +10:00
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
465d8bd0ba Use inline settings widget in menu instead of separate dialog 2024-03-18 12:37:42 +10:00
Nyall Dawson
a9d2d43a0e Also rename QgsRangeSlider fixed range size methods 2024-03-18 12:37:42 +10:00
Nyall Dawson
9ee09c176a Rename to fixed range size 2024-03-18 12:37:42 +10:00
Nyall Dawson
ecc71b4479 Add fixed range width option to QgsElevationControllerWidget 2024-03-18 12:37:42 +10:00
Nyall Dawson
a91f5bf7c2 Add a fixed range width option to QgsRangeSlider
Allows forcing the widget to have a specific fixed range width,
so that interactions with the lower or upper slider automatically
force the other slider to move to keep a constant width
2024-03-18 12:37:42 +10: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
Mathieu Pellerin
b0f8eed17a [plugins manager] Normalize _all_ version references 2024-03-15 16:01:00 +07:00
uclaros
9796d3766b update topological point snap threshold 2024-03-13 15:37:06 +01:00
Nyall Dawson
4cbde0f067 Show labels in elevation controller widget 2024-03-13 13:18:20 +10:00
Nyall Dawson
9b780c1d36 Create QgsElevationControllerWidget
A widget which allows configuring a slice of a 2d map canvas to show
2024-03-13 13:18:20 +10: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