256 Commits

Author SHA1 Message Date
Nyall Dawson
4a6fef278e Cleanup docs, don't mention QString in python docs 2025-04-19 18:17:34 +10:00
David Koňařík
5b9bb8b056 Parallelise point cloud attribute editing 2025-04-02 09:26:45 +02:00
Nyall Dawson
3f6b490218 Sipify 2025-04-02 11:11:10 +10:00
Nyall Dawson
4a10066b69 Fix grammar errors in class docstrings 2025-04-01 09:44:00 +10:00
Nyall Dawson
afd2e4f42d Fix doxygen class briefs which aren't full sentences 2025-04-01 09:44:00 +10:00
Nyall Dawson
6d122f0038 Sipify 2025-03-30 20:48:07 +10:00
Nyall Dawson
ac71664a83 Fix multiparagraphs in initial class docstrings 2025-03-30 20:48:07 +10:00
Nyall Dawson
29050007d7 Fix class documentation which starts with "this is..."/"a class..." etc 2025-03-30 20:48:07 +10:00
Martin Dobias
d8f8d13691 address review 2025-01-23 21:04:55 +01:00
Martin Dobias
0a54e009b0 Add some unit tests + fix signals on rollback/commit 2025-01-23 21:04:55 +01:00
Martin Dobias
b94229e024 Only update changed 3D entities when editing point cloud attributes
QgsChunkedEntity gets a capability to update an existing sub-entity for a node
by loading the node again, creating a new 3D entity, and then discarding the old
entity in favor of the new one.

QgsPointCloudLayer gets a new signal - emitted whenever a particular node's
attribute values get changed.

These two are combined for point cloud layer's 3D chunked entity: whenever there
are edits to the point cloud data, instead of doing big hard reload of the whole
point cloud, we only update entities of the few nodes that were modified.
This greatly improves the user experience of point cloud editing (no "flashing"
of the 3D view while loading everything from scratch), and it improves how quickly
the changes can be seen.
2025-01-23 21:04:55 +01:00
Martin Dobias
377df63098 Point cloud editing: write COPC when committing changes 2025-01-16 14:59:05 +01:00
uclaros
d989f5981f adjust to use the new QgsPointCloudIndex class 2025-01-10 13:36:09 +01:00
uclaros
3e773e798e Point cloud editing part 1 2025-01-10 13:36:09 +01:00
Withalion
2bed2b7c3c Fix review issues 2025-01-08 12:40:34 +01:00
Withalion
1d3f3bbb21 Remake overview vpc options 2025-01-08 12:40:34 +01:00
Withalion
efa8912b0b Add option to change between VPC overview and extends 2025-01-08 12:40:34 +01:00
David Koňařík
b49f5ccd38 Expose QgsPointCloudIndex to Python 2025-01-06 21:31:40 +01:00
David Koňařík
252ab6ce12 Move QgsPointCloudAccessType to Qgis 2025-01-06 21:31:40 +01:00
David Koňařík
320ee6b374 Split point cloud index into implementation & wrapper 2025-01-06 21:31:40 +01:00
Nyall Dawson
72f07dc851 Fix build 2024-12-15 11:37:53 +10:00
Matej Bagar
22fe235648
Virtual point clouds - Tile Labels (#59726)
* Add label rendering into VPC tiles

* Move tile labels rendering into QgsPointCloudExtentRenderer

* Rework showLabels flag once more & connect it to widget

* Add widget for label TextFormat WIP

* Rework and fix text format widget issues

* Improve default text format used in VPC labels

* Fix banned keywords issue

* Fix QgsTextFormat review issue

* Fix labels drawing efficiency issue

* Fix formating issues

* Fix review issues
2024-12-11 10:11:44 +01:00
David Koňařík
d47ad7dfe0 Minor changes per review 2024-12-03 09:26:55 +01:00
David Koňařík
f2afd6a498 Expose point cloud class statistics to Python 2024-12-03 09:26:55 +01:00
David Koňařík
e5064f092a Refactor QgsPointCloudIndex statistics methods 2024-12-03 09:26:55 +01:00
David Koňařík
71b2591c62 Fix Identify tool on virtual point cloud
(fix #54729)
2024-10-25 08:26:00 +02:00
Nyall Dawson
08eb9c1049 Populate subset string metadata for provider subclasses 2024-09-18 17:27:06 +10:00
Nyall Dawson
49d31fa527 Fix some malformed docs 2024-08-30 05:47:07 +10:00
Nyall Dawson
3a578d6712 Header update 2024-08-13 20:28:55 +10:00
Nyall Dawson
c2c75f3b19
More no-value dox removal 2024-07-25 09:04:22 +10:00
Nyall Dawson
6d829ff7b4 Drop some more no value documentation 2024-07-25 04:02:55 +10:00
Nyall Dawson
6f652d251b Drop no-value copy constructor dox 2024-07-25 04:02:55 +10:00
Nyall Dawson
28943f9c1b Remove a bunch of useless default constructor doxygen 2024-07-23 02:08:28 +10:00
Nyall Dawson
145de5fb5e
Move QgsDataProvider::ReadFlag to Qgis::DataProviderReadFlag
and promote to enum class
2024-07-18 10:01:59 +10:00
Nyall Dawson
1f27af64a9
Use \see not \sa
So that sipify docstring processing works
2024-07-17 09:02:51 +10:00
Julien Cabieces
0ccaf2d299 sipify 2024-05-31 08:46:33 +10:00
Nyall Dawson
c8d66e1e8d Add method to retrieve significant elevation values from a layer 2024-05-20 11:52:10 +02: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
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
Nyall Dawson
ac2f1179c8 More item data role enum to enum class conversions 2024-02-06 21:04:43 +10:00
uclaros
a09b3d0341 Don't cache failed blocks
Address review
2024-02-05 09:11:56 +00:00
uclaros
1285a8dfe2 Add a static QCache to QgsPointCloudIndex for storing decoded data blocks 2024-02-05 09:11:56 +00:00
Nyall Dawson
503a95a1a1 Move enums to Qgis namespace for consistency 2024-02-02 04:59:04 +10:00
uclaros
2bb315579b added in QGIS 3.36 docstring 2023-12-13 08:19:00 +10:00
uclaros
4b6a73c071 Fix api break (and error caused by the api break :) 2023-12-13 08:19:00 +10:00
uclaros
eedabe8227 fix comment spelling 2023-12-13 08:19:00 +10:00
uclaros
b8288fd5c9 Allow point cloud classification categories to override point size 2023-12-13 08:19:00 +10:00
Martin Dobias
fbc2082b7e Nyall's review, spelling fixes, clang tidy fixes 2023-11-23 06:36:31 +10:00
Martin Dobias
fdc4ee7994 Add "Render as a surface" option to 2D point cloud renderers
When enabled, we will do Delaunay triangulation of the points in the current
map view, and then render triangles instead of points. For each point we keep
its color for interpolation in the triangle.

Global map shading is also supported with the new option, when enabled, we also
keep elevation of each point, and then rasterize triangles with interpolated
elevations to the provided elevation map.

When "Render as a surface" is enabled, drawing order is ignored, because points
do not obscure other points anymore - all input points participate in the triangulation.

There is also an option to filter large triangles (given by the maximum length of
edge of a triangle), which is useful when one wants to see the actual holes in the data.
Compared to the implementation for 3D rendering, the 2D rendering only provides
filtering based on horizontal length of triangles. Filtering based on triangle size
on the vertical axis seems irrelevant because the 2D view is always from the top.
2023-11-23 06:36:31 +10:00
Denis Rouzaud
fe4e9b5ff8
remove outdated sip files (#52848) 2023-04-23 08:50:22 +02:00