230 Commits

Author SHA1 Message Date
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
uclaros
f896513aab Add virtual point cloud provider 2023-04-13 09:57:53 +02:00
Nyall Dawson
f9c3da1e06 Move unit enums to Qgis, promote to enum class 2023-02-19 13:29:06 +10:00
Vincent Cloarec
3ca858af66
Global map terrain shading (#51535)
* QgsShadingRendering and pipe to render global elevation map

* gdal utils with datatype and resampling method enum

* raster layer elevation map

* optimize raster elevation map with rotation

* handle  no data value in the map elevation raster pipe

* mesh layer and some little fixes

* fix nodata and hillshading z factor

* render shading on layout

* activate/deactivate the shading from ui

* shading only for layer that have elevation

* apply Z scale and offset of layer elevation properties

* ui settings

* allow elevation from point cloud even edl is deactivate for pointcloud

* fix ui

* sipify

* Shading renderer widget in styling panel

* icone for shading renderer settings widget

* two methods to combin elevation

* rewording

* remove check box at the bottom of canvas

* use band of elevation properties

* fix styling pannel

* render shading in layout

* keep EDL point cloud shading individually

* add shading rendering tests

* add missing code for local EDL for point cloud

* shading inactive by default

* rework raster layer resampling

* improve nodata in elevation map

* don't allow elevation map with != size to be combined

* remove EDL from point cloud

* renaming

* sipify

* colorize tests

* renaming

* RGB32

* renaming leftover

* some ui fixes

* fix border for EDL alg

* fix EDL closed next to nodata value

* fix first shading when activated

* renaming and typo

* fixes for doc, doxygen, indentation and spelling

* remove leftover member

* fix clang-tidy

* fix edl tests

* fix dll export

* minor fixes

* adapt images of tests

* fix narrowing

* fix indentation

* sipify

* WIP

* minor ui changes
2023-01-26 15:02:16 +01:00
uclaros
1a7d160a50 add export to CSV files 2022-09-06 09:57:54 +10:00
uclaros
fe22b4c7f5 address review 2022-09-02 14:28:07 -07:00
uclaros
cf7137d218 use enum for supported formats 2022-09-02 14:28:07 -07:00
uclaros
3c426b274f also export to uncompressed las files 2022-09-02 14:28:07 -07:00
uclaros
4c39f178ad added filter by geometry / filter by layer support 2022-09-02 14:28:07 -07:00
Martin Dobias
e6da9ac607 Bring back some Python methods to make the test in Python work again 2022-09-02 07:52:22 -07:00
Martin Dobias
ec36709bfe Address reviews from Stefanos and Nyall 2022-09-02 07:52:22 -07:00
Martin Dobias
18b3bdd139 Refactor elevation map related code to a new class QgsElevationMap 2022-09-02 07:52:22 -07:00
Martin Dobias
8f933496b6 Eye dome lighting code fixes
- make it independent on the current view's Z range
- simplify scaling code
- reverse Z handling (higher Z value == closer to "camera")
- remove unused API functions and member variables
2022-09-02 07:52:22 -07:00
NEDJIMAbelgacem
83cf5fab0b fix layout tests 2022-09-02 07:52:22 -07:00
NEDJIMAbelgacem
789a83cd37 address reviews and fix docs 2022-09-02 07:52:22 -07:00
NEDJIMAbelgacem
5b6ba3e80a Revert to RGBA elevation 2022-09-02 07:52:22 -07:00
NEDJIMAbelgacem
3eedcf0d8f address reviews 2022-09-02 07:52:22 -07:00
NEDJIMAbelgacem
5ccb83b5c6 switch to using grayscale image and fix the default draw order rendering 2022-09-02 07:52:22 -07:00
NEDJIMAbelgacem
f4830334cf initial implementation 2022-09-02 07:52:22 -07:00
Stefanos Natsis
fb97c10d00
Export pointcloud layers (#49280)
* PointCloudLayerExporter class

* set points limit

* saveas dialog

* qickndirty task

* wip

* add pdal files

* transform context

* add getters

* try to use some subclasses

* use nested classes

* don't default layername

* limit supported formats

* error reporting

* limit formats in gui too

* format filters and source/target crs

* use default infinite extent

* set pdal crs

* add pdrf but keep 3 for now

* properly handle LAZ attributes

* catch coordinate transform exceptions

* use default destructor, fix leak, docs

* trim includes, fix typos

* use qgsspinboxes, add points limit to the gui

* fix limit exporting logic

* avoid auto

* fix builds

* don't reuse lastVectorFormat setting

* Rework layer name handling

* Rage against the elevation

* invert attribute activation logic

* use wkt for laz srs

* use original offset/scale if not reprojecting

* move created memory layer to main thread when done

* allways add memory layer to map

* oops

* properly handle existing vector files

* don't add layer if cancelled

* create the memory layer on the main thread

* remove colon

* remove duplicate code and avoid crashing on mesh and vectortiles

* fix leak

* handle case blunder

* address review
2022-08-31 15:46:16 +02:00
Nyall Dawson
6e5a99d332 Sipify 2022-06-03 13:13:43 +10:00
Nedjima Belgacem
8054467031
Save calculated statistics of a COPC file back into the dataset as an EVLR record (#48673)
* Implement saving stats as an EVLR

* Fix layout tests

* don't save statistics unless copc was generated by pdal

* Address Martin reviews

* Address reviews

* Only read stats EVLR and do not store count

* merge cleanup

* Address reviews
2022-06-02 19:24:03 +02:00
NEDJIMAbelgacem
904a987c42 fix python test 2022-05-31 15:47:34 +01:00
NEDJIMAbelgacem
c5ac600dad - Remove useless functions
- Remove emit QgsTask::taskTerminated
2022-05-30 13:45:58 +01:00
NEDJIMAbelgacem
e2bf3809f7 Various fixes
- Remove waiting for task to finish in ~QgsPointCloudLayer
- Fix failing ept provider test when maximum threads is set to 1.
-  make PointCloudStatisticsCalculationState into enum class
- move AttributeStatistics outside QgsPointCloudStatistics
2022-05-27 03:02:12 +01:00
NEDJIMAbelgacem
b5e2887a88 fix test 2022-05-24 10:04:33 +02:00
uclaros
79738c8e78 classify pointclouds by attribute 2022-05-13 19:17:13 +02:00