970 Commits

Author SHA1 Message Date
Nyall Dawson
ec1218314d [processing] Fix "Add geometry attributes" handling of multipoint geom
For multipoints, export the count of geometries only
2019-02-25 07:50:48 +10:00
Rashad Kanavath
9983961ee3 update Otb Algorithm test to use Map Layer instance 2019-02-23 05:20:17 +10:00
Rashad Kanavath
70be3aae9c add unit-test for passing values other than type str 2019-02-23 05:20:17 +10:00
Rashad Kanavath
8afb80e164 [test] new test for OtbChoiceWidget
This can easily go into GuiTests.py but we tend to keep it out due to
usage of create_from_metadata(). All widget in GuiTests uses
create_from_class() which will not work for this special widget
2019-02-23 05:20:17 +10:00
Rashad Kanavath
e26e0981d3 [test] a new test for otb algorithm that used crs 2019-02-23 05:20:17 +10:00
Rashad Kanavath
471865afd1 [CI] fix travis test for OtbAlgorithms 2019-02-23 05:20:17 +10:00
Rashad Kanavath
30bcfebb47 [TEST] add test for OTB processing provider
This includes yaml test like SAGA, GRASS and also test for loading
OTB Algorithms
2019-02-23 05:20:17 +10:00
Luigi Pirelli
5a96fab775
Merge pull request #8968 from volaya/fix_saga_non_ascii
fixed handling of input filenames with non-ascii characters [processing]
2019-02-21 12:35:49 +01:00
volaya
52546db839 [processing] fixed saga test 2019-02-21 10:11:57 +01:00
volaya
40134d6473 [processing] fixed SAGA command writing and test 2019-02-21 10:05:46 +01:00
Matthias Kuhn
9c0606148d
Adjust test 2019-02-20 19:11:13 +01:00
Nyall Dawson
342c093d91 [processing] Use text file for input file list to gdal tile index alg
Avoids too long command being generated with many inputs

Fixes #21296
2019-02-19 12:55:15 +10:00
Nyall Dawson
f22f182bcf [processing] Buffer algorithm should always export multipolygon layers
We can never predict when a buffer will create a multipolygon output
(e.g. for negative buffer sizes), so ALWAYS export multipolygons

Fixes #21191
2019-02-08 18:53:18 +10:00
Nyall Dawson
06d5b996bf [processing][gdal] Fix polygonize field name is ignored 2019-02-06 04:16:40 +11:00
Nyall Dawson
4f8e2317d7 [processing][saga] Fix definition of Multiple regression points/grids alg
Fixes #21146
2019-02-01 21:06:16 +11:00
Alexander Bruy
85e3b2db6e [processing] fix v.net.report and v.net.nreport 2019-01-31 16:31:35 +02:00
Alexander Bruy
b9f559ee04 [processing] fix broken stdout handling in GRASS algs (fix #21142) 2019-01-31 15:54:08 +02:00
Alexander Bruy
a911ef3367 [processing] fix output generation in v.net and add test 2019-01-31 15:54:08 +02:00
Alexander Bruy
dbe2cb73ad [processing] add test for v.net.distance algorithm 2019-01-31 15:54:08 +02:00
volaya
aa02e9f3ed added missing import 2019-01-31 08:33:29 +01:00
Alexander Bruy
19dcfb987b don't export features without category by default 2019-01-30 10:40:29 +02:00
volaya
585d42b347 [processing] fixed missing import and encoding 2019-01-30 09:09:26 +01:00
volaya
e14ad01cd1 indentation fixes 2019-01-29 09:42:24 +01:00
Nyall Dawson
7f7c7a9789 [processing][needs-docs] Add friendlier API for running algorithms as sub-steps
of main algorithm

Using code like:

    buffered_layer = processing.run(..., context, feedback)['OUTPUT']
    ...
    return {'OUTPUT': buffered_layer}

can cause issues if done as a sub-step of a larger processing algorithm. This
is because ownership of the generated layer is transferred to the caller
(Python) by processing.run. When the algorithm returns, Processing
attempts to move ownership of the layer from the context to the caller,
resulting in a crash.

(This is by design, because processing.run has been optimised for the
most common use case, which is one-off execution of algorithms as part
of a script, not as part of another processing algorithm. Accordingly
by design it returns layers and ownership to the caller, making things
easier for callers as they do not then have to resolve the layer reference
from the context object and handle ownership themselves)

This commit adds a new "is_child_algorithm" argument to processing.run.
For algorithms which are executed as sub-steps of a larger algorithm
is_child_algorithm should be set to True to avoid any ownership issues
with layers. E.g.

    buffered_layer = processing.run(..., context, feedback, is_child_algorithm=True)['OUTPUT']
    ...
    return {'OUTPUT': buffered_layer}
2019-01-29 18:04:16 +11:00
volaya
2895493cce [processing] encoding and indentation fixes 2019-01-28 09:34:15 +01:00
Nyall Dawson
431861a468 [processing] Add a better API for specifying that outputs are temporary
Instead of requiring clients to generate temporary file names themselves,
(or use the cryptic "memory:" string!), this PR adds a static constant

    QgsProcessing.TEMPORARY_OUTPUT

If a layer/sink output parameter is set to QgsProcessing.TEMPORARY_OUTPUT,
then the temporary output filename will be generated automatically at
algorithm run time. This means callers don't need to mess around with
finding appropriate temporary folders and paths.

Another benefit is that TEMPORARY_OUTPUT is stored in the processing
history, so if you re-run a previous algorithm which was set to
output to a temporary file, it no longer tries to use that same
previous temporary path and instead generates a new one.
2019-01-25 23:27:08 +11:00
Alexander Bruy
a90fb87c8e
Merge pull request #8973 from alexbruy/grass-buffer
[processing] fix GRASS v.buffer algorithm for variable buffer case (fix #19377)
2019-01-25 12:49:12 +02:00
volaya
8bbd55943a [processing] added test for SAGA output to non-ascii files 2019-01-25 11:10:30 +01:00
volaya
261430b961 [processing] added test for SAGA non-ascii inputs 2019-01-25 10:30:08 +01:00
Nyall Dawson
3cb6a40ef2 [processing] Add API to get an import statement and classname for a parameter type 2019-01-25 18:12:11 +11:00
Alexander Bruy
32f6034be7 [processing][needs-docs] force multipart output from GDAL-based dissolve
algorithm (fix #20025)
2019-01-25 09:57:31 +11:00
Alexander Bruy
bfb60e4dc7 [processing] fix GRASS v.buffer algorithm for case when buffer distance
is taken from the field (fix #19377)
2019-01-24 21:01:12 +02:00
Alexander Bruy
c6540a6276 [processing] fix description files for SVM SAGA algs (fix #20796) 2019-01-24 09:31:18 +11:00
Alexander Bruy
34ec183354 [processing] split v.surf.rst algorithm into two (fix #19472)
This algorithm cannot output cross-validation results and topographic
parameters simultaneously, hence two tools needed. Thanks to Pedro Venâncio
for finding this and proposing a fix.
2019-01-24 06:45:23 +11:00
Alexander Bruy
dc2b29ce6a [processing] add missed "srcnodata" parameter to the buildvrt algorithm
(fix #20586).

Without this parameter it is not possible to remove collars surrounding
input raster which may overlap with other input rasters. As this is very
frequent case algorithm is useless without such parameter. To keep API
compatibility new parameter is optional and not used by default.
2019-01-22 08:17:47 +02:00
Nyall Dawson
ee34431214 Use a QHash instead of std::unordered_map
Because it turns out MUCH MUCH faster
2019-01-22 13:14:03 +11:00
Alexander Bruy
bb2c3663b0 [processing] add optional EXTRA parameter to gdalwarp algorithm (fix #20721)
This allows users to pass additional command-line arguments which are
not exposed in the algorithm definition. The most frequent use case is
enabling transparency and adding nodata values.
2019-01-22 09:39:57 +11:00
Nyall Dawson
195d98f43a [needs-docs][processing] Port SAGA raster surface volume to native QGIS alg
The SAGA version of this algorithm is of limited use in QGIS, because the
volume calculated is embedded only in the SAGA terminal output. This prevents
it being saved to a file, or reused within a model as an input to a later
model step.

It's also very user-unfriendly, because users must know to manually scan
the algorithm log to find the SAGA output.

Given that the maths here is trivial, this commit ports the algorithm across
to be a native QGIS c++ algorithm. The algorithm duplicates the SAGA alg
1:1, but outputs the volume (and area) to either a HTML report, or a vector
table. Additionally, the outputs are exported as numeric outputs from the
algorithm, allowing them to be re-used within models.

(It's also considerably faster, because it avoids the forced conversion
to SAGA raster format)

Fixes #8607 (properly, even though that report is closed)
2019-01-21 12:33:54 +11:00
Ivan Ivanov
2488f71ddb Added test for 'gdal_rasterize -init 0' 2019-01-18 09:50:08 +11:00
Nyall Dawson
f89d061ba0 [FEATURE][processing] Add geodesic mode for "Join by Lines (Hub lines)" algorithm
This allows optional creation of geodesic lines, which represent the
shortest distance between the points based on the ellipsoid.

When geodesic mode is used, it is possible to split the created lines
at the antimeridian (±180 degrees longitude), which can improve
rendering of the lines. Additionally, the distance between vertices
can be specified. A smaller distance results in a denser, more accurate
line.
2019-01-17 03:39:20 +11:00
Nyall Dawson
629de0c651 Fix some corner cases 2019-01-12 05:31:00 +10:00
Nyall Dawson
2a774d6dac [FEATURE][processing] New algorithm "Geodesic line split at antimeridian"
Ports the similar algorithm from the shape tools plugin to c++, and utilises
built in QgsDistanceArea ellipsoidal calculations to split the lines.

This algorithm splits a line into multiple geodesic segments, whenever the
line crosses the antimeridian (±180 degrees longitude)

Splitting at the antimeridian helps the visual display of the lines in some
projections. The returned geometry will always be a multi-part geometry.

Whenever line segments in the input geometry cross the antimeridian,
they will be split into two segments, with the latitude of the breakpoint
being determined using a geodesic line connecting the points either side
of this segment. The current project ellipsoid setting will be used when
calculating this breakpoint.

If the input geometry contains M or Z values, these will be linearly
interpolated for the new vertices created at the antimeridian.

Supports in-place edit mode also.
2019-01-12 05:31:00 +10:00
Nyall Dawson
efd54f862f [processing][SAGA] Resync Fill Sinks descriptions, add tests
Refs #20051
2019-01-07 09:55:46 +10:00
Nyall Dawson
45f8b863db [processing][SAGA] Resync parameters for resample tool
And add tests

Fixes #20882
2019-01-07 09:55:46 +10:00
Nyall Dawson
cef9c4eaec [FEATURE][processing] New algorithms "Extract Z values" and "Extract m values"
These algorithms allow users to convert z or m values present in feature
geometries to attributes in the layer. By default the z/m value from the
first vertex in the feature is extracted, but optionally statistics
can be calculated on ALL the z/m values from the geometry (e.g. calculating
mean/min/max/sum/etc of z values).
2019-01-04 05:01:40 +10:00
Nyall Dawson
5586352a13 [FEATURE][processing] New raster zonal stats algorithm
Like the vector zonal stats algorithm, but this one works with
the zones defined in another raster.

Iterates over the input rasters in blocks to be nice and
memory efficient.

From the algorithm help:

"This algorithm calculates statistics for a raster layer's
values, categorized by zones defined in another raster layer.

If the reference layer parameter is set to "Input layer",
then zones are determined by sampling the zone raster layer
value at the centroid of each pixel from the source raster
layer.

If the reference layer parameter is set to "Zones layer",
then the input raster layer will be sampled at the centroid
of each pixel from the zones raster layer.

If either the source raster layer or the zone raster layer
value is NODATA for a pixel, that pixel's value will be
skipped and not including in the calculated statistics."
2019-01-04 05:01:16 +10:00
Alexander Bruy
f332233f6d remove obsolete tests 2019-01-01 19:28:09 +02:00
Alexander Bruy
6809d346ab [processing] add unittest for gdal_polygonize algorithm 2019-01-01 19:26:14 +02:00
Alexander Bruy
f447745b5f [processing] add unittest for gdal2xyz algorithm 2019-01-01 18:15:41 +02:00
Alexander Bruy
a5365e26eb [processing] fix handling of the mask layer in the gdal_sieve algorithm
(fix #20713)
2019-01-01 15:20:21 +02:00