using a fill symbol below the elevation surface
This can be easier to interpret in some cases, and helps match expected
symbology conventions in certain disciplines.
This class implements an optimised method for generating a profile
from a raster layer in a thread-safe way:
On the main thread:
- The data provider is cloned during preparation, and all other
required properties from the raster layer are copied and stored
for later thread-safe use on a background thread
On the background thread:
- The profile line is transformed to the raster's native CRS
- We then iterate over the portion of the raster which intersects
the profile line's bounding box in small tiles. We use small tiles
here as we will shortcut by skipping straight over any tiles which
don't intersect the profile line at all, without requesting their
raster data at all. Since the profile line will only cover a very
small portion of an overall raster extent, by using small tiles
we end up shortcutting and avoiding the costly tile pixel iteration
for most of the raster's coverage.
- For any tiles which DO intersect the profile curve, we fetch the
tile data and then iterate over the pixels, keeping only those
which actually intersect the profile curve. These pixel centroids
are then transformed back to the original CRS of the profile line.
- After collecting the filtered pixels centroids and their raster
(height) values, we then convert the pixel x/y locations to a
distance/chainage along the profile line, giving us an array of
distance vs height values for all pixels which intersect the profile
line.
Allows elevation properties to be set for vector layers, including:
- altitude binding
- altitude clamping
- extrusion
- scale
- offset
These properties can be set through the new "Elevation" tab in
the vector layer properties dialog
Allows elevation properties to be set for raster layers, including:
- whether raster values represent heights
- scale
- offset
These properties can be set through the new "Elevation" tab in
the raster layer properties dialog
as "basemap" layers
This flag identifies if the layer is considered a 'basemap' layer, where
certain properties of the layer should be ignored when calculating
project-level properties. For instance, the extent of basemap layers
should be ignored when calculating the overall extent of a project,
as these layers are typically global and extend outside of a project's
area of interest.
* 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>
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)
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
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.
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