167 Commits

Author SHA1 Message Date
Nyall Dawson
83d44b9fe9 Fix zonal statistics calculations when pixel size is greater than
polygon size

Fixes #17159
2018-06-08 10:13:13 +10:00
Nyall Dawson
985aee6920 Fix incorrect calculation of zonal statistics
Raster block extent was based on intersection of raster vs
feature's bounding box, which was not necessarily snapped to
multiples of the pixel size. But the pixel center point/extent
was being calculated as though the retrieved extent was an
exact multiple of the pixel size. This led to incorrect
retrieval of pixel values.
2018-06-08 10:13:13 +10:00
Nyall Dawson
8ddab4476a Ensure zonal stats respsects all user set no data values 2018-06-08 10:13:13 +10:00
Nyall Dawson
88a49e7e33 Fix zonal stats doesn't work with raster/vector in different CRS
Fixes #19027
2018-06-05 23:04:58 +10:00
Nyall Dawson
b69389b650 Run clang-tidy modernization checks 2018-06-05 12:50:39 +10:00
Nyall Dawson
2ed144ac59 Apply clang-tidy readability-avoid-const-params-in-decls fixit
Checks whether a function declaration has parameters that are
top level const.

const values in declarations do not affect the signature of a
function, so they should not be put there.
2018-06-05 10:19:13 +10:00
Nyall Dawson
e91aed6617 [processing] Force model outputs to respect constraints set by
their underlying algorithm's provider

E.g. for model outputs generated by a saga algorithm, only
sdat and shp files are valid outputs. So only give users choices
of these instead of all formats.

Also fixes temporary file names generated as part of model
execution may use formats which are not compatible with the
algorithm's provider.

Fixes #18908
2018-06-05 10:05:32 +10:00
Nyall Dawson
84806b9161 [processing] Fix cannot use feature source as input for model crs or extent parameters 2018-06-04 21:30:12 +10:00
Nyall Dawson
a1d46de0de [processing] Fix evaluation of vector layer references to compatible feature sources
Refs #18545
2018-06-04 13:57:06 +10:00
Nyall Dawson
f6416a1990 [processing] Fix missing vector inputs when run in batch mode
Fix incorrect definition of compatibleVectorLayers, which was
using layer WKB type values instead of processing source types.
2018-06-01 15:55:11 +10:00
Nyall Dawson
870d20740c [processing] Tweaks and checks for checkParameterValues 2018-05-28 16:02:38 +10:00
Juergen E. Fischer
e6c949895a fix stretch build 2018-05-23 10:37:10 +02:00
Nyall Dawson
33669ab723 [processing] Don't crash when hitting transform exceptions
inside transform algorithm
2018-05-22 11:57:41 +10:00
Alexander Bruy
cce49567ca [processing] add test for temporary output without extension 2018-05-20 18:17:15 +10:00
arnaud.morvan@camptocamp.com
81dabd185c [processing] Finish default values in model for destination parameters 2018-05-14 22:12:32 +10:00
Nyall Dawson
c738bcf7af [processing] Don't skip null parameter values when converting
parameters to pythong strings

We need to include these, in order to differentiate unspecified
parameters from parameters set to null values
2018-05-10 15:48:20 +10:00
Nyall Dawson
d05f95f7d5 [processing] Ensure unset parameters are translated to Python
None values when representing parameters as pythong strings
2018-05-10 15:48:20 +10:00
Martin Dobias
819ae6f31a Fix test that checked an exception from QgsSpatialIndex constructor 2018-05-08 20:28:27 -04:00
Nyall Dawson
3791bac432 [processing][modeler] Fix some child algorithm vector results
are not shown as input choices for other child algorithms
2018-05-07 18:50:19 +10:00
Nyall Dawson
787dd3413e [processing] More helpful errors when raster inputs are not valid 2018-05-06 19:19:45 +10:00
Nyall Dawson
386495bc76 [processing] Also warn on non-matching point and extent CRS
if algorithm cannot handle automatic reprojection
2018-05-02 04:55:01 +10:00
Nyall Dawson
c314639e00 [processing] More stringent testing of parameter validity
- Check static QgsProperty parameter values
- Properly check QgsProcessingFeatureSourceDefinition and
QgsProcessingOutputLayerDefinition values
2018-04-28 05:50:47 +10:00
Nyall Dawson
249dca7830 [processing] Consist helpful error messages when sinks cannot be created
And throw exceptions always when sinks are not created to avoid
generic errors
2018-04-28 05:50:47 +10:00
Nyall Dawson
5339d62715 [processing] More helpful errors when sources cannot be loaded
Include descriptive text with the specified parameter value
in error, and always check that sources were loaded to avoid
raw Python exceptions when they are not
2018-04-28 05:50:47 +10:00
Martin Dobias
16a6a90dd7
Merge pull request #6859 from wonder-sk/overlay-alg-fixes-3
Port Union algorithm to C++ and fix it
2018-04-26 22:56:22 +02:00
Martin Dobias
5e7719c38f Tests for fieldNamesToIndices() and indicesToFields() 2018-04-26 10:51:34 +02:00
Nyall Dawson
d8c36233e8 Remove some more redundant include directories 2018-04-26 17:28:59 +12:00
Nyall Dawson
6a2625664e [processing] Add dedicated "distance" parameter
This is a subclass of QgsProcessingParameterNumber, but specifically
for numeric parameters which represent distances. It is linked
to a parent parameter, from which the distance unit will
be determined, and is shown using a dedicated distance widget
within the processing parameters panel. This widget shows
the distance unit.

This avoids the confusion when running algorithms which
use distances where the unit depends on a layer or CRS parameter -
e.g. the distance parameter in the buffer algorithm gives
the distance in layer units... so now we can show those units
directly within the dialog. Hopefully this leads to less
user confusion and accidental "1000 degree buffers"!

Additionally - if the unit is in degrees, a small warning
icon is shown next to the parameter. The tooltip for this
icon advises users to reproject data into a suitable
projected local coordinate system.

Initially implemented for the native buffer and single
sided buffer algorithm only - but more will be added.

Fixes #16290
2018-04-20 18:27:00 +10:00
Alessandro Pasotti
5be057c90a [tests] Add some tests for 9 cells algorithms
Note: this does not test the correctness of the
algorithms but only that the filters are correctly
working.
2018-04-16 15:39:07 +02:00
Matthias Kuhn
29b080fce3
Merge pull request #6754 from m-kuhn/processing_filter_algorithm
[FEATURE] Feature filter algorithm for processing models
2018-04-11 08:29:12 +02:00
Nyall Dawson
bf0c4f9413 [processing] Accept strings of form "(1,2") for point parameters too
Since the help text above a point parameter indicates the acceptable
format is "(x, y)", it can be confusing for users to know whether
the brackets should be entered here. So be forgiving and accept
strings with or without brackets.

Refs https://gis.stackexchange.com/questions/278765/how-do-i-enter-start-point-in-shortest-path-algorithm-in-qgis-3-0-1
2018-04-11 04:56:12 +10:00
Matthias Kuhn
41b47a297f Add more feature filter algorithm tests 2018-04-09 13:10:49 +02:00
Nyall Dawson
09241ea195 Fix coverity warnings in unit tests 2018-04-03 16:35:32 +10:00
Nyall Dawson
9ab4d96362 [processing] Don't try to load algorithms for disabled providers
Fixes #18488
2018-03-21 08:45:38 +11:00
Nyall Dawson
fa2c5aebb7 [FEATURE][processing] Import geotagged photos algorithm
This implements a new "import geotagged photos" algorithm
for processing. It allows selection of a folder which it
will scan for jpg files which have been geotagged and
creates a PointZ layer with the result, with attributes
for photo path, altitude, direction and timestamp.

Optionally the scan can be recursive and you can create
an optional table of photos which could not be read
or which were missing geotags.

The algorithm automatically sets the output table to
use an external resource widget to display the linked
photos in the attribute form.

[ALGCHANGE]
2018-03-16 15:08:29 +11:00
Nyall Dawson
bd1d87ed86 [processing] Allow algorithms to set layer post-processors for
execution on generated layers after the algorithm (or parent
model) completes

This commit adds an interface for layer post-processing handlers
for execution following a processing algorithm operation.

Post-processing of a layer will ONLY occur if that layer is set
to be loaded into a QGIS project on algorithm completion.

Algorithms that wish to set post-processing steps for generated
layers should implement this interface in a separate class
(NOT the algorithm class itself!) and implement a method
to handle the layer post-processing.

This method always runs in the main thread and can be used to
setup renderers, editor widgets, metadata, etc for the given layer.

Fixes #17961
2018-03-15 17:55:25 +11:00
Matthias Kuhn
e3dabac78a Only add parameter when it is new 2018-03-07 09:00:33 +11:00
Matthias Kuhn
542910e9da Add QgsProcessingParameterType tests 2018-03-07 09:00:33 +11:00
Nyall Dawson
84cdd609ab [processing] Fix invalid filenames are used for temporary files
during models

Fixes #18263
2018-03-05 12:06:50 +11:00
Alexander Bruy
a2179046e8 [processing] add tests for creating outputs from FileDestination
parameter
2018-03-02 10:35:56 +02:00
Nyall Dawson
f8c3f39670 [processing] Fix dependency calculation for model child algs 2018-02-21 20:34:40 +11:00
Nyall Dawson
7e4cdc024b Update test 2018-02-17 19:10:46 +11:00
Nyall Dawson
14787ffb32 [processing] Add easy method to retrieve layers from context
Allows python algorithms to call

layer = context.getMapLayer(other_alg_results['OUTPUT'] )
2018-02-16 19:49:30 +11:00
Nyall Dawson
5c40975fe7 [processing] Don't replace " with ' when handling layer paths
Since netcdf, and possibly other gdal drivers, use layer uris
of the format NETCDF:"/tmp/test.nc":var1 we can't safely
remove or reformat these quotations.
2018-02-15 16:43:21 +10:00
Nyall Dawson
3e1b99be69 Remove a bunch of Qt4 compatibility code 2018-02-06 22:39:42 +11:00
Nyall Dawson
247ea02ae7 Update tests 2018-02-01 13:02:59 +11:00
Nyall Dawson
6c5276cea5 Fix test 2018-02-01 13:02:59 +11:00
Nyall Dawson
70fc32b784 Spelling 2018-02-01 07:53:54 +11:00
Nyall Dawson
fc68bb25d7 [processing] Allow case-different duplicate parameter names
But always prefer case-exact matches for parameter names. Turns
out the grass provider requires use of parameters with the same
name but different case, so we need to be able to handle this.
2018-02-01 07:53:54 +11:00
Nyall Dawson
bf19eb6f35 [processing] Non-filed based outputs (e.g. postgis, geopackage)
options should be available for certain model outputs and script
algorithm outputs

We do this by swapping the test for non-file based output support
from checking only the algorithm's provider to instead checking
on a parameter-by-parameter basis.

This is done in order to support models. For models, depending
on what child algorithm a model output is based off, an individual
model may or may not have support for non-file based outputs. E.g
a model may generate outputs from a native qgis alg (supporting
these outputs) AND an output from a GDAL alg (with no support
for these outputs). In this case we need to enable or disable
the ui controls for non-file based outputs on an individual
output basis.

For scripts (for now) we blindly just say all outputs support
non-file based formats. This is going to be the case most of
the time, since scripts will usually be written using PyQGIS
API. For the exceptions (e.g. scripts which call other algs
like GDAL algs) we probably should add some way for the script
to indicate whether an individual output supports this, but
for now we just say they all do.

Fixes #17949
2018-01-25 15:47:42 +11:00