218 Commits

Author SHA1 Message Date
Nyall Dawson
b8f65cbf01 Promote temporal related enums to enum classes, move to Qgis 2021-09-09 14:56:47 +10:00
Francesco Bursi
179cb1d951
[feature] virtual raster data provider (#44195)
* try to commit some changes in the branch

* addedd 3 file, cmake, vrp .h and .cpp

* updating VRP, no good results

* try to solve some issue to the virtual raster provider

* metadata class added, it should be developed

* registred in qgsproviderregistry the new VRP

* on line to test debug in the  new VRP

* chenge of 1_06

* minor change 2 06

* updating VRP, it can add some useless color to map canvas

* add baseclass test fro new provider

* Delete testqgsvirtualrasterprovider.cpp

* move VRP to src/providers

* Delete src/core/providers/virtualrasterprovider directory

* little change to cmake

* added as dynamic provider

* move the VRP to src/providers and let it work

* move the VRP to src/providers and let it work

* including qgis analysis

* updating block function with some calc tools

* delete block function, updating readblock function

* modified block method, used setValue --> to update with bits

* modified block method

* modified block method, adding takedata to the resultmatrix

* modified test for the new provider

* Add some checks in the block method, for raster entries

* tries for the calculator tool

* work on the hardcoded part and test

* work on the hardcoded test

* minor change in order to make the calc functionaltiy work

* minor change to the loop in which the computation occurs

* try to understand how qgsrastermatrixworks

* work on debugging new class

* work on debugging new class

* updating test and block method

* updating test and and block, now it works running in test mode

* updating test and and block, now it works running in test mode with bits

* updating test and and block, now it works running in test mode with bits

* update test

* update test and provider class

* add decodeuri and encodeui in metadata, at the moment they do nothing

* modify qgsrasterdataprovider by adding decoding and encoding uri methods

* workin on encode and decode funct

* work on encode/decode after Martin advices

* work on encode/decode after Martin advices, and update unit test

* work on encode/decode and update Cmakelist of provider test

* work on encode/decode and update Cmakelist and provider test

* work on encode/decode and update test + constructor

* work on encode/decode and constructor

* decode is now non trivial, he same as constructor

* working on encoding

* working on encoding/decoding

* change a little the code/decode mehods in order to return and get a struct as output/input

* change of decode method

* change the encode method, I should polish the code and optimize the encode for raster layers

* add flag ptr bool to decode mehod

* add flag ptr and modified the constructor of vrprovider

* work on the constructor and deconstructor, the flag does not work properly

* work on the constructor anf decoder

* work on the constructor and decoder

* work on the constructor and add some lines to popoluta mRasterEntries

* delete hardcoded data

* work on constructor and copy constructor 2

* add the parsing of the formula in the constructor, I should make a private var with calcnode

* add the parsing of the formula in the constructor, I should make a private var with calcnode2

* add some checks in the constructor2

* modify the copy constructor, add some code to adjust the qgsrasterdataprovider.sip

* modify checks in the constructor and in the decode method, in order to avoid nested if stat

* delete the logic in the decode method and add in the constructor

* delete the logic in the decode method and add in the constructor, add some redundant check in the constructor

* delete the logic in the decode method and add in the constructor, add some redundant check in the constructor 2

* test is now more general

* test is now more general2

* delete of a comment

* banned keywords check

* little error

* add copyright

* add copyright2

* add assignment operator= delete

* add documentation in qgsrasterprovider

* documentation

* modify qgsstringutils

* little modifications

* add the checkbox to the ui

* come back to old ui for raster calc

* adjust some qt::endl in the test of vrprovider

* start to work on the ui dialog

* layot of the code

* add some logic to the dialog of the raster calc

* add some test to qgisapp, need to modify the encoder and maybe put it in the qgrastercalcdialog

* modify some logic in rastercalcdialog and in the app, I should modify and move the encode method

* modify the comment

* add method to calcnode, modify the constructor of the provider and the open of the dialog

* add documentation

* some modifications according to the first review

* sadd some changes according to Martin's review

* change qgsrastercalcnode methods that returns raster names, small change to ui

* change the ui

* change the ui - using QString instead of QStringLiteral

* change the ui - using QString instead of QStringLiteral

* change name of subdirectory containing the virtual raster provider

* change name of subdirectory containing the virtual raster provider2

* change name of subdirectory containing the virtual raster provider3

* minor changes to makefiles

* minor change to dialog, to hide and show the output format and path

* provider key changed to the shorter virtualraster

* add some code to QgsRasterLayer::encodedSource and decodedSource

* delete some comments

* updating VRP, no good results

* made some change after the the second review

* delete the comments

* change some part of the code (delete of comments and cleaning the code)

* correct some layout errors

* change the mail contatct in my prvider

* change details on the method in qgsrastercalcnode

* change some method of the test class of my provider

* delete some leakage in the virtual raster provider

* modify some parts according to the review + change two lines of code for encoding/decoding methods

* modify a line of qgisapp.cpp

* small change according to the comments on th PR

* add a test method for second generation virtual raster and modify checks in qgisapp

* correction of the test method

Co-authored-by: franc <Franc-Brs>
2021-08-17 10:00:16 +02:00
Mathieu Pellerin
8a4683f737
[feature][exiftools] Implement tags reading, allow for individual tag value read (#44076) 2021-07-08 14:13:25 +07:00
nirvn
4b52b7be7f Move QgsExifTools utility class to core 2021-07-07 13:46:11 +07:00
Nyall Dawson
8c9d008413 Spelling 2021-06-25 13:53:52 +10:00
Nyall Dawson
2d489737e2 [feature] Add a "redraw layer only" temporal mode for raster layers
Just like the equivalent setting for vector layers, this option
causes a raster layer to be redrawn on each new animation frame. It's
useful when the layer uses time-based expression values (e.g. data
defined renderer opacity, to fade/in out a raster layer)
2021-06-25 13:53:52 +10:00
Nyall Dawson
c013c78285 [api] Attach QgsPropertyCollection to QgsRasterPipe to allow
for data-defined raster pipeline properties
2021-06-25 13:53:52 +10:00
Nyall Dawson
f62ddb37a2 Promote QgsRasterPipe enums to enum classes in Qgis namespace
and add forward declares where possible
2021-06-23 17:30:47 +10:00
Nyall Dawson
e2b7f0712e Improve QgsRasterPipe docs 2021-06-23 17:30:47 +10:00
nirvn
01fe6c5b77 [FEATURE][rasters] Invert colors' raster rendering filter option 2021-06-20 21:29:55 -07:00
Blottiere Paul
a36e60884d Skip method from sip binding 2021-06-17 22:28:07 +02:00
Blottiere Paul
0924ae1b4e Update sip 2021-06-17 22:28:07 +02:00
Nyall Dawson
005a0ad093 Sipify 2021-05-27 13:44:15 +10:00
Nyall Dawson
b4fea529f1 Promote Qgis::DataType to enum class 2021-05-27 13:44:15 +10:00
Matthias Kuhn
ef3d9a2c32
Merge branch 'master' into unvirtualize-setdatasource 2021-05-05 08:01:26 +01:00
Mathieu Pellerin
8299547682 Address review 2021-05-03 20:43:37 +07:00
Mathieu Pellerin
8d1371f3e9 [layouts] Respect XYZ output zoom level when previewing map items in the layout designer 2021-05-03 18:01:24 +07:00
rldhont
4afa66af30 [API] Unvirtualize layer setDataSource method
Changes in the layer API:
* The setDatasource() methods become non-virtual public method
* The virtual private setDataSourcePrivate() method is defined and the provider setDataSource implementations have been moved to this new virtual method
2021-04-26 17:14:07 +02:00
Nyall Dawson
7715a12916 Fix spelling 2021-03-31 10:59:47 +10:00
Nyall Dawson
b85614e67e Spelling 2021-03-31 10:59:47 +10:00
Nyall Dawson
c4c8aab7b4 Improve documentation for raster pyramid creation methods/classes
The PyQGIS documentation for this workflow was very poorly documented
2021-03-31 10:59:47 +10:00
Nyall Dawson
929b7086b1 If a wms-t layer is the first temporal layer loaded into a project,
use the wms-t capabilities to set a sensible default time step
for the temporal controller (just like we do for mesh layers)
2021-03-25 17:55:04 +10:00
Nyall Dawson
cae8aae849 Add method to collate all used time ranges for layers in project
Unlike the existing methods, this new method does not return
a single overall time range, but rather (possibly with gaps)
containing all time ranges were we know data actually exists
in the project.
2021-03-25 13:35:52 +10:00
Nyall Dawson
894283b994 Add "allAvailableTemporalRanges" getter/setter to QgsRasterDataProviderTemporalCapabilities
So that we can store and retrieve a list of all available temporal
ranges for a raster data provider when that range of dates is
non-contiguous
2021-03-25 08:01:51 +10:00
Denis Rouzaud
ba8a445850 run sipify 2021-03-22 21:13:52 +01:00
Alessandro Pasotti
7b2fc4c1f8 More doxy nonsense, pt 2 2021-02-19 08:15:29 +10:00
Nyall Dawson
13fbcd1cff Expose additional GDAL supported resampling methods as options
for "early" raster resampling

Notably, this adds the "Average" resampling as an option for
early resampling methods. (A nice side effect is that we also
get mode, cubic spline, Lanczos, ... for free!)

Fixes #40746
2021-02-01 07:58:20 +10:00
Nyall Dawson
50b9beaad6 [sipify] Catch more class references and insert :py:class: annotations 2021-01-31 05:41:22 +10:00
Denis Rouzaud
2cc632ee5d follow up QVariant 2021-01-03 20:16:56 +01:00
Mathieu Pellerin
14136a15cb
[ui] Insure color/value changes in the colormap tree are reflected in the color ramp button of the color ramp shader widget (#40671) 2020-12-28 20:01:48 +07:00
Juergen E. Fischer
7719668453 fix build (take II; followup 1c9d89a7c3d) 2020-12-19 22:57:54 +01:00
Nyall Dawson
a0accab0c2 Add QgsColorRampLegendNodeSettings to QgsSingleBandGrayRenderer 2020-12-18 12:03:26 +10:00
Nyall Dawson
45d2edda16 QgsColorRampShader can have color ramp legend node settings 2020-12-18 12:03:26 +10:00
Nyall Dawson
e48286c0d4 Pass QgsReadWriteContext onto QgsColorRampShader read/writeXml methods 2020-12-18 12:03:26 +10:00
Nyall Dawson
60aea700d1 Forward declare more classes 2020-12-18 12:03:26 +10:00
Nyall Dawson
0d7b95fa67 Generate more descriptive legends for raster layers
- include band name details where its useful
- create a legend for multiband raster renderer
2020-12-17 04:57:56 +10:00
Nyall Dawson
d7ce1a3167 Create color ramp legend nodes for pseudocolor or grayscale rasters or
point clouds using a Linear color ramp based renderer
2020-12-16 18:46:53 +10:00
Matthias Kuhn
0d55e61145 Add QgsRasterDataProvider::Capability::ReloadData for gdal, ams and wcs provider 2020-12-14 09:02:16 +10:00
Nyall Dawson
f21ca86a91 Cleanup api, fix crash 2020-12-07 11:42:39 +10:00
Nyall Dawson
60ce8eb9af Use new api to return nice legend items for raster contour renderer
Instead of no legend, we now create a legend with the contour symbols!
2020-12-07 11:42:39 +10:00
Nyall Dawson
6932985d82 Add api to allow raster layer renderers to create different legend node types,
instead of forcing them to always use the solid color blocks created by QgsRasterSymbolLegendNode
2020-12-07 11:42:39 +10:00
NEDJIMAbelgacem
7f26477c81 add comparison operator for QgsColorRampShader 2020-12-03 22:27:20 +01:00
Nyall Dawson
28c2788989 Spelling 2020-11-16 19:38:07 +10:00
Nyall Dawson
bf8ccad89e Add contrast enhancement options for point cloud RGB renderer 2020-11-16 19:38:07 +10:00
Nyall Dawson
0056bb1580 Proxy QgsRasterLayer::setOpacity/opacity to QgsRasterRenderer::setOpacity
This allows layer opacity for raster layers to be set and retrieved using
the exact same API as all other map layer types
2020-11-13 21:27:06 +10:00
Alessandro Pasotti
3f11294dfd
Merge pull request #39778 from elpaso/bugfix-gh39757-shared-locale-sort
Bugfix gh39757 shared locale sort
2020-11-13 10:38:49 +01:00
Nyall Dawson
819fc50b0e Don't use generic "QgsMapLayer" class name in map layer Python repr
strings

Rather use actual layer subclass type, e.g. QgsVectorLayer
2020-11-12 16:05:52 +10:00
Alessandro Pasotti
02552e489a Raster shader: store label precision 2020-11-09 15:40:43 +01:00
Nyall Dawson
add4fec46a Improve QgsRasterIdentifyResult docs 2020-10-26 13:26:43 +10:00
Nyall Dawson
d3adc10ec3 Move some todos so they don't sit between member doxygen and declaration
Sipify doesn't handle this, and drops off the docstring from the python method
2020-10-21 09:32:15 +10:00