436 Commits

Author SHA1 Message Date
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
Alessandro Pasotti
b75997e217 No renderer 2022-10-22 08:52:37 +10:00
Alessandro Pasotti
d5559be0ba Sipify 2022-10-22 08:52:37 +10:00
Nyall Dawson
05bd566089 Modify text renderer to account for rendering text with HTML
content which varies in font metrics
2022-09-07 22:09:52 +10:00
Martin Dobias
18ba28b39e Fix sip 2022-09-02 07:52:22 -07:00
Alessandro Pasotti
35403d507f Layer metadata provider API
Implementation of QEP #250 DB metadata storage.

- General API for registering layer metadata providers
- Metadata provider GPKG
- Metadata provider POSTGRES
- Metadata provider POSTGRES RASTER

Tests and custom python metadata provider implementation.

No GUI.

Funded by: ARPA Piemonte
2022-08-31 18:53:12 +02: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
73692a6a41 Create QgsProviderSqlQueryBuilder
QgsProviderSqlQueryBuilder provides an interface for creation of SQL queries, which
can be overridden for backend provider specific SQL syntax.

Initially add a virtual method for creation of row limited select *
queries.
2022-08-28 15:37:15 +10:00
Nyall Dawson
51e3c0833b Sip update 2022-08-12 20:36:07 +10:00
Nyall Dawson
6d65e4e450 Show existing relationships in browser when expanding datasources 2022-08-02 15:44:40 +10:00
Nyall Dawson
4981f1846f Expose QgsWeakRelation to PyQGIS 2022-08-02 15:44:40 +10:00
Nyall Dawson
31ae975923 Introduce QgsUnsetAttributeValue 2022-08-01 12:37:35 +10:00
Nyall Dawson
44708b9c0c Create QgsColorUtils class
Contains methods to serialize/deserialize colors from xml and strings,
where the colors are losslessly stored/restored.

The previous methods for storing colors (Eg QgsSymbolLayerUtils::encode/decodeColor)
are lossy, and only store QColors as 8 bit RGB representations. In
contrast, the new methods store the full lossless representation of
a QColor, including support for 16 bit color components, extended
RGB color components, and storage of HSL/HSV/CMYK color specifications
using their original color components instead of RGB components.

When these new methods are used in place of the existing lossy methods,
they open the possibility of 16 bit color support for QGIS symbols/projects,
(and potentially future CMYK color support).
2022-07-09 07:12:08 +10:00
Nyall Dawson
721bcaab66 Implement API for selecting features in a vector tile layer 2022-07-08 09:12:46 +10:00
Nyall Dawson
0091696272 Start on QgsFontManager class 2022-06-20 13:01:55 +10:00
Nyall Dawson
8bb64a0683 Split existing "Show all labels (including colliding labels)" into
two separate new options

This setting was ambiguous in meaning -- it could be interpreted
as either:

"I don't care about overlapping labels, use them when
you have no other choice"

OR

"I want to see labels for EVERYTHING in this layer, and I don't
care what you have to do to show me those"

This leads to situations like those discussed in #41043, where some
users interpret the setting as the first meaning and get confused
when eg. a curved label line layer starts showing horizontal placements
for some features which couldn't otherwise be labeled (eg short
lines).

So, split the setting into two new options (checkboxes) with explicit, clear
distinction:

- "Allow overlapping labels if unavoidable": This setting means labels
can be overlapping, if there's no other option. It does NOT gaurantee
that all features in the layer will have labels, because other
constraints (such as lines too short to fit a label's text) will still
be respected and may prevent labels for the feature.

- "Allow inferior fallback placements": This mode permits features
to fallback to worse placement options when there's no other choice,
e.g. when a line is too short to fit a curved label text then the
label may be placed horizontally just over the feature's center
point.

The combination of checking BOTH options WILL gaurantee that
all features in the layer are labelled, albeit with both overlapping
labels and the degraded placements!

Fixes #41043
2022-06-03 18:20:03 +10:00
Martin Dobias
571820327d
Merge pull request #48321 from NEDJIMAbelgacem/point-cloud-stats-calculator
Statistics calculator for point cloud
2022-05-12 23:21:06 +02:00
Nyall Dawson
86f7d4e89e [api] Add QgsCombinedStyleModel class, for combining entities from several
QgsStyle models into a single combined view
2022-05-12 19:58:04 +10:00
Nyall Dawson
a11b4ebf83 Add QgsSingleItemModel, a QAbstractItemModel subclass for a single
item
2022-05-12 19:58:04 +10:00
Julien Cabieces
a57281c836 Vectorization of selective masking 2022-05-12 11:45:39 +10:00