987 Commits

Author SHA1 Message Date
nirvn
9ce1093bce [FEATURE][ogr] Add string list field type support 2019-04-10 08:06:12 +07:00
nirvn
5e0fd15570 [FEATURE][processing] Add concatenate_unique support to the aggregate alg 2019-04-05 12:01:06 +07:00
Nyall Dawson
59ed07891a Also store x/y coordinates of nearest points on features when calculating
nearest features

This can be useful, and is difficult to calculate later!
2019-04-03 02:31:03 +10:00
Nyall Dawson
95af4d4a45 [FEATURE] New Processing algorithm "Join attributes by nearest"
K-nearest neighbour joins from the Processing toolbox!

This algorithm takes an input vector layer and creates a new
vector layer that is an with additional attributes in its attribute table
The additional attributes and their values are taken from a second
vector layer, where features are joined by finding the closest features
from each layer.

By default only the single nearest feature is joined, but optionally
the join can use the n-nearest neighboring features instead.

If a maximum distance is specified, then only features which are
closer than this distance will be matched.
2019-04-03 02:31:03 +10:00
Nyall Dawson
7bf9279a53 [processing] Fix invalid reprojection in join by location (summary) 2019-04-02 06:17:56 +10:00
Nyall Dawson
f5a3485eae Fix some Python warnings, avoid accidently hiding all deprecation warnings 2019-03-28 11:47:23 +10:00
Nyall Dawson
c7ac86604f [FEATURE] New algorithm "Add X/Y fields to layer"
Adds X and Y (or latitude/longitude) fields to a point layer.
The X/Y fields can be calculated in a different CRS to the
layer (e.g. creating latitude/longitude fields for a layer in
a project CRS).

Sponsored by SMEC/SJ
2019-03-21 16:08:42 +10:00
Rashad Kanavath
e94d9a596a [TEST] add more test on otb segmentation apps
Even though not all errors are caught by these new tests, it could
expose if otb is broken or if processing api is changed to adopt
optional status of parameters at run-time.

`alg.processAlgorithm()` is running and failing correctly.
But `parameter.checkValueIsAcceptable()` and `alg.checkParameterValues()`
aren't working as expected.
2019-03-21 04:44:59 +10:00
Rashad Kanavath
d3a1c65368 Remove OtbSettings class and put constants for key names in OtbUtils 2019-03-21 04:44:59 +10:00
Nyall Dawson
db1645cf12 [processing] Fix processing.runAndLoadResults
Fixes #21551
2019-03-15 08:37:43 +10:00
Alexander Bruy
8b621b6997 [feature][processing] expose GDAL pansharpening tool in the Processing 2019-03-11 08:48:02 +10:00
Nyall Dawson
b66b944535 [FEATURE][processing] New Raster Boolean logical OR/AND algorithms
These algorithms calculate the boolean OR or AND for a set of input
rasters. For AND, if all of the input rasters have a non-zero value
for a pixel, that pixel will be set to 1 in the output raster, otherwise
it will be set to 0. For OR, if ANY of the input rasters have a non-zero
value for a pixel, that pixel will be set to 1 in the output raster,
else 0.

A reference layer parameter specifies an existing raster layer to use
as a reference when creating the output raster. The output raster will
have the same extent, CRS, and pixel dimensions as this layer

By default, a nodata pixel in ANY of the input layers will result in
a nodata pixel in the output raster. If the 'Treat nodata values
as false' option is checked, then nodata inputs will be treated the
same as a 0 input value.

Makes for much simpler raster boolean logic calculation without
the complexity of using the raster calculator (and that's not
always possible to do anyway, e.g. when ANY of the input rasters
has a nodata pixel). It's also scalable dynamic to any number of
input rasters (unlike raster calc), so is more flexible when
used within models.
2019-03-11 07:45:44 +10:00
Nyall Dawson
49742c302a [needs-docs][processing] Add option to check validity alg to ignore self-intersection
causing rings errors

By default the algorithm now uses the strict OGC definition of polygon validity, where
a polygon is marked as invalid if a self-intersecting ring causes an interior hole.
If the "Ignore ring self intersections" option is checked, then this rule will be
ignored and a more lenient validity check will be performed.

Refs #16418, refs #21336
2019-02-27 06:05:26 +10:00
Nyall Dawson
4e04d02293 By default, validity check should treat ring self intersections as invalid
We use the OGC definition of validity to ensure consistent results
with PostGIS, GDAL, etc

Fixes #16418, fixes #21336
2019-02-27 06:05:26 +10:00
Matthias Kuhn
81f0c5ce00
Merge pull request #9241 from m-kuhn/merge-lines-on-dissolve
[processing] Merge lines on dissolve
2019-02-26 07:54:51 +01:00
Matthias Kuhn
7f30680bed
Add test files for dissolve consecutive lines 2019-02-25 08:49:05 +01:00
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
Matthias Kuhn
bb78d1c933
Add test for dissolve consecutive lines 2019-02-22 14:12:24 +01: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