455 Commits

Author SHA1 Message Date
Alexander Bruy
81dbdd8bae
Merge pull request #53874 from alexbruy/processing-port-align-raster-tool
Port Align rasters tool to Processing
2023-09-14 16:29:49 +03:00
Nyall Dawson
d05c898922 Implement elevation properties for tiled scene layers
Allows offsetting and scaling z value in the scene by specified
amounts
2023-08-23 13:59:20 +02:00
Alexander Bruy
fa59a02c4e doxymentation and SIP fixes 2023-08-23 08:35:14 +03:00
Alexander Bruy
bd627101c6 move some struct and enum defintions from analysis library to core in
order to make them accessible for Processing
2023-08-23 08:35:14 +03:00
Nyall Dawson
78b99d5578 Remove texture color renderer, and replace with checkbox option
in wireframe renderer
2023-08-11 18:28:21 +10:00
Nyall Dawson
939877f51e Rename mesh renderer to wireframe renderer 2023-08-11 18:28:21 +10:00
Nyall Dawson
3c7f0730e5 Implement 2d renderer for tiled scenes
We currently offer three renderer choices:
- Textured (default). Loads the texture image and paints the mesh using
  these textures
- Texture color. Uses the center point color for rendering each mesh
  triangle. Gives a clear visual overview of the mesh structure while
  also providing some context via the texture color
- Mesh. Renders the scene's mesh using a fill symbol
2023-08-11 18:28:21 +10:00
Nyall Dawson
c6a4a71bd9 Implement GUI infrastructure for 2d tiled scene renderers 2023-08-07 18:43:10 +10:00
Nyall Dawson
c8658efde4 Setup core infrastructure for tiled scene 2d renderers 2023-08-07 18:43:10 +10:00
Nyall Dawson
9f57fb2ef0 Rename "tiled mesh" to "tiled scene"
Better reflects that these types can contain lines and point
data, not just meshes
2023-08-05 21:31:49 +10:00
Nyall Dawson
e1f62940d9 Remove QgsTiledMeshNode from public api 2023-08-05 05:05:46 +10:00
Nyall Dawson
00f63c3b76 Introduce QgsTiledMeshIndex
This is an equivalent of the point cloud index class, with some
notable differences:

- The class is designed to be thread safe. There's a shallow copy
QgsTiledMeshIndex class, which contains an implicitly shared
QgsAbstractTiledMeshIndex object. Tiled mesh data providers will
be accompanied by a concrete class of QgsAbstractTiledMeshIndex.
- The QgsTiledMeshIndex class takes care of thread safety by
protecting the underlying QgsAbstractTiledMeshIndex via a read/write
lock
- Callers can request tiled mesh tiles from the index by calling
QgsTiledMeshIndex::getTiles along with a QgsTiledMeshRequest object.
This will return the unique IDs of tiles matching the request.
Currently only geometric error based filtering is supported
by QgsTiledMeshRequest, but bounding box based filtering will
also be introduced.
- Individual tile details are retrieved by calling
QgsTiledMeshIndex::getTile along with the tile's unique ID.
- A caller can determine whether a specific tile can be further
refined by checking QgsTiledMeshIndex::tileCanRefine. This allows
the caller to check whether more children are available for a
tile, but which haven't yet been fetched (eg due to a sub dataset
tileset which hasn't yet been retrieved)
- A tile can be refined by calling QgsTiledMeshIndex::refineAsync.
(Non async refinement will be introduced later)
- Clients can request tile content by calling
  QgsTiledMeshIndex::retrieveContent. This will either return
a cached version of the content (if available), or retrieve and cache
the content for future retrieval. Currently this uses a custom caching
mechanism, but this will be replaced in future with
QgsTileDownloadManager. (Currently QgsTileDownloadManager lacks support
for blocking gets which is required by the index to avoid use
of local event loops)

The api is implemented by the cesium tiles data provider, which
builds the index upfront from the cesium tiles tileset.json definitions.
2023-08-05 05:05:46 +10:00
Nyall Dawson
08e739fea7 Add class for storing hierarchy tree of QgsTiledMeshTile 2023-08-05 05:05:46 +10:00
Nyall Dawson
c22796d6fe Add QgsTiledMeshRequest
Encapsulates parameters for filtering tiled mesh tiles
2023-08-05 05:05:46 +10:00
Nyall Dawson
f3c987f5e5 Introduce QgsTiledMeshTile
Represents an individual tile from a tiled mesh scene
2023-08-05 05:05:46 +10:00
Nyall Dawson
71a778e492 Introduce framework for QgsMapLayerSelectionProperties
QgsMapLayerSelectionProperties exposes settings for controlling
how an individual QgsMapLayer behaves with respect to feature selection.
2023-07-29 18:36:11 +10:00
Martin Dobias
a271a36fda Expose QgsMatrix4x4 in Python + add PyQGIS test 2023-07-19 05:42:09 +10:00
Nyall Dawson
f658e5de7b Create class for representing tiled mesh node bounding volumes
And implement for sphere, region and oriented box bounding volume
types
2023-07-18 12:35:45 +02:00
Nyall Dawson
c4b3608462 Rename to QgsOrientedBox3d 2023-07-16 14:43:38 +10:00
Nyall Dawson
8ca716907e Move QgsOrientedBoundingBox out to own file 2023-07-16 14:43:38 +10:00
Nyall Dawson
5ab122bc62 Add new class QgsSphere for representing 3d spheres 2023-07-16 14:43:38 +10:00
Nyall Dawson
b81e52dd43 Parse bounding region values from cesium tiles root tileset 2023-07-12 14:58:33 +10:00
Nyall Dawson
5cf8f2ceb5 Shell for QgsTiledMeshLayer/QgsTiledMeshDataProvider 2023-06-28 17:47:17 +10:00
Nyall Dawson
b6338da0b7 Create QgsScreenProperties as a small storage class for QScreen settings 2023-06-22 18:49:22 +10:00
Nyall Dawson
33ffe9f6b9 [api] Add framework for exporting elevation profile results
as vector layers
2023-05-27 06:34:04 +10:00
Nyall Dawson
e036570c77 Setup framework for data provider's to provide information about
elevation related properties to their layers

And use this to ensure that wms tiles with maptiler terrain
or terrarium terrain interpretation are always included by
default in elevation profile plots.

Most specifically, this ensures that projects containing the
out-of-the-box "Mapzen Global Terrain" layer will be automatically
included in elevation plots.
2023-05-19 23:06:21 +10:00
Nyall Dawson
cd3a1bf237 [api] Add text-along-line annotation item type
This annotation item renders curved text along a linestring
2023-03-31 13:17:25 +10:00
Mathieu Pellerin
346abae549
Merge pull request #52329 from nirvn/sensors_framework_2
Sensor options panel within the project properties dialog
2023-03-28 15:34:21 +07:00
Nyall Dawson
1742934be5 Add more flexible/understandable api for setting layer tree legend filters
And update existing broken tests which are incorrectly showing
symbols which should not be visible in the legend
2023-03-26 20:21:56 +10:00
Mathieu Pellerin
99f8005d6b [sensors] Add a sensor model class 2023-03-26 11:21:19 +07:00
Mathieu Pellerin
d2b117a3c8 [sensors] Brand new sensors framework (manager, registry, sensor types) 2023-03-24 15:28:47 +07:00
Nyall Dawson
04851d5b75 Sip updates 2023-02-06 09:45:26 +01:00
Denis Rouzaud
34ca2d9e3b move settings tree away from QgsSettings to QgsSettingsTree
* to avoid any dependency on QgsSettings class
* reduce overhead by limiting includes of qgssettings.h
2023-02-03 09:05:37 +01: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
Giovanni Allegri
863d6fd615
Geonode provider removal (#2)
* Removal of GeoNode provider
2023-01-25 15:51:21 +01:00
Denis Rouzaud
42f4e1c80e
Merge pull request #51295 from 3nids/settings-registry-migration-core-5-tree-element
Tree structures for settings
2023-01-23 08:53:33 +01:00
Alessandro Pasotti
0523c661c6
Merge pull request #51502 from elpaso/spacer-widget
Spacer widget for drag & drop attribute forms
2023-01-18 09:12:34 +01:00
Denis Rouzaud
7fa484dbf6 sipify 2023-01-17 16:52:47 +01:00
Denis Rouzaud
2a5838433b rename QgsSettingsTreeElement to QgsSettingsTreeNode 2023-01-17 11:53:39 +01:00
Nyall Dawson
7fdc80496c Framework 2023-01-17 15:36:03 +10:00
Alessandro Pasotti
6cd867eb19 Spacer widget for Drag&Drop attribute forms 2023-01-16 15:59:04 +01:00
Denis Rouzaud
799ef3925c move QgsSettingsEntryGroup to a separate file and deprecate it 2023-01-16 09:00:52 +01:00
Denis Rouzaud
44039d164c sipify them all 2023-01-16 09:00:49 +01:00
Alessandro Pasotti
e9b5c3a358 Sipify 2022-12-29 10:34:14 +01:00
Alessandro Pasotti
118c956cff Add SLD export context 2022-12-21 11:09:03 +01:00
Nyall Dawson
8fefb8a010 Move action files to subdirectories 2022-11-23 08:25:33 +01:00
Nyall Dawson
3e818b942b Split out qgsgpsconnection files into modular components 2022-11-17 20:13:41 +10:00
Nyall Dawson
d5c05e3b17 Refactor out GPS logging classes, so that they share a common base class
Moves GPS track logging logic out of app and into core so that it
can be resused in a generic way.
2022-11-14 18:00:29 +10:00
Nyall Dawson
6571b9b573 Empty structure for logger 2022-11-14 18:00:29 +10:00
Nyall Dawson
816eb16460 Create new QgsProjectGpsSettings class
Destinated for a storage location for GPS settings which are
project specific
2022-11-06 17:55:20 +10:00