76 Commits

Author SHA1 Message Date
Nyall Dawson
34b9d39b27 [FEATURE][processing] K Means clustering algorithm
Adds a native k-means clustering algorithm.

Based on a port of PostGIS' ST_ClusterKMeans function, this
new algorithm adds a new cluster ID field to a set of input
features identify the feature's cluster based on the k-means
clustering approach. If non-point geometries are used as input,
the clustering is based off the centroid of the input geometries.
2018-06-29 07:12:48 +10:00
Nyall Dawson
0da30699a5 [processing] Add unit tests for reclassify using nulls 2018-06-13 14:54:40 +10:00
Nyall Dawson
7a157837cb Add tests for processing reclassification algorithms 2018-06-13 14:54:40 +10:00
Nyall Dawson
77786f38c3 [processing][SAGA] Fix interpolation choices for add grid values algorithms
And add more tests

Fixes #19132
2018-06-08 12:18:35 +10:00
Nyall Dawson
f7a6864b9c [processing] Fix invalid characters in HTML for 'Raster layer unique values' report 2018-06-01 08:53:20 +10:00
nirvn
5ab3fe4ba0 Add subsetStringChanged signal 2018-05-29 17:10:17 +07:00
Nyall Dawson
9d2c4fca19 [FEATURE][layouts] Use text renderer for drawing scalebar text
Allows the full range of formatting options exposed through
text renderer - e.g. scalebar text with buffers, shadows,
background shapes, letter spacing, etc.

Say goodbye to unreadable scale bar text!
2018-05-11 17:48:45 +10:00
Martin Dobias
aa2b1e9834 Add test for single layer union 2018-05-10 06:50:57 -04:00
nirvn
fdaa57a273 [FEATURE][processing] Zonal histogram algorithm 2018-05-03 11:36:16 +07:00
Matthias Kuhn
0a269aa6e6
Merge pull request #6864 from ghtmtt/fix_saga
[processing] fix broken SAGA algorithms
2018-05-02 16:47:03 +02:00
matteo
291c039435
Shapefile instead of GML for travis 2018-04-27 11:49:41 +02:00
matteo
9c0a9ca466
[processing] add test for fixed algorithm 2018-04-27 09:15:37 +02: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
Matthias Kuhn
3e2694a068
Merge pull request #6848 from gacarrillor/line_intersection_with_geometry_collections
[processing] Make line intersection alg able to handle collections
2018-04-26 07:20:55 +02:00
Martin Dobias
21a756ff1d Remove older (incorrect!) test cases for union
The newer test data (overlay1_a and overlay1_b) cover more scenarios
and can be more easily investigated if something goes wrong.
2018-04-25 23:29:04 +02:00
gacarrillor
49ee8bba13 [processing] Make line intersection alg able to handle intersections of type 'geometry collection' 2018-04-23 23:27:23 -05:00
Nyall Dawson
0dfb3c2d8c [processing] Use distance parameter for more algorithms 2018-04-20 18:27:00 +10:00
Martin Dobias
4f829fde62 Port Intersection algorithm to C++, cleanups and tests
Finally starting a suite of unit tests for overlay algorithms:
- overlay1 - layers that cover various basic overlay situations
- overlay2 - layers where one input has self-intersecting polygons
- overlay3 - layers where intersections return different geometry types
2018-04-17 19:12:58 +02:00
Nyall Dawson
ee185cce4d [processing] Fix python runAlgorithm when algorithm has missing optional outputs 2018-04-10 09:57:58 +10:00
Nyall Dawson
1942854166 [processing] Port Explode Lines to c++
Aside from the performance benefits, the Python version of this
algorithm occasionally fails on Travis with odd errors. Hopefully
by porting to c++ it will fix these, or at least give useful
debug information in the event of a fail.

Also add support for curved input geometries.
2018-04-06 15:34:52 +10:00
Nyall Dawson
78a6118ba4 [processing] Fix broken Densify by Interval algorithm, add test
Fix #18640
2018-04-06 11:50:23 +10:00
Nyall Dawson
8aa9a82d28 [FEATURE][processing] Add algorithm to swap x/y coordinate values
This algorithm swaps the X and Y coordinate values in input
geometries. It can be used to repair geometries which have
accidentally had their latitude and longitude values reversed.
2018-04-05 06:35:13 +10: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
8df954d6b8 [processing] Port Delete Holes algorithm to c++, allow dynamic
min area parameter
2018-03-12 10:41:22 +11:00
Nyall Dawson
4232b93539 [FEATURE][processing] Add "segmentize" algorithms
Adds two new algorithms which expose QgsGeometry's methods
for segmentizing curved geometries.

"Segmentize by maximum distance":
The segmentization is performed by specifying the maximum
allowed offset distance between the original curve and the
segmentized representation.

"Segmentize by maximum angle":
The segmentization is performed by specifying the maximum
allowed radius angle between vertices on the straightened
geometry (e.g the angle of the arc created from the
original arc center to consective output vertices on the
linearized geometry).
2018-03-04 21:28:42 +10:00
Nyall Dawson
e12621ce2a Add API method to remove duplicate nodes from geometries
Removes duplicate nodes from the geometry, wherever removing the
nodes does not result in a degenerate geometry.

By default, z values are not considered when detecting duplicate
nodes. E.g. two nodes with the same x and y coordinate but
different z values will still be considered duplicate and one
will be removed. If useZValues is true, then the z values are
also tested and nodes with the same x and y but different z
will be maintained.

Note that duplicate nodes are not tested between different
parts of a multipart geometry. E.g. a multipoint geometry
with overlapping points will not be changed by this method.

The function will return true if nodes were removed, or false
if no duplicate nodes were found.

Includes unit tests and a processing algorithm which exposes
this functionality.
2017-12-03 14:58:21 +10:00
matteo
c321700ada [processing] test for union algorithm 2017-11-15 11:27:30 +11:00
Nyall Dawson
5ffd7214ee [processing] Shortest path handling for multipoint layers
Fixes shortest path algorithms fail for multipoint source layers
or layers with null geometries

Refs #17325
2017-10-31 16:00:18 +10:00
lbartoletti
977ce426db [FEATURE][processing]Transect processing
Adds a C++ version of the "ststion lines" plugin as a
new processing algorithm for creating transect lines.
2017-10-24 05:42:03 +11:00
Nyall Dawson
0943cd5d51 Resurrect commented out zonal stats test 2017-09-26 15:30:14 +10:00
Nyall Dawson
21f92a6fb2 Port line intersection and split with lines to c++ 2017-09-22 15:19:32 +10:00
Nyall Dawson
be88da8173 [FEATURE][processing] Add 'Join by location (summary)' algorithm
Like the main Join Attributes by Location algorithm, this algorithm
takes two layers and combines the attributes based on a spatial
criteria.

However this algorithm calculates summaries for the attributes for
all matching features, e.g. calculating the mean/min/max/etc.

The list of fields to summaries, and the summaries to
calculate for those, can be selected.
2017-09-13 18:45:56 +10:00
Nyall Dawson
47fe2a182d Port Points From Lines to new API 2017-08-14 01:42:16 +10:00
Nyall Dawson
c8ac7841f0 Port Points Displacement algorithm to new API
Rework algorithm to use same approach as points displacement
renderer. Also maintain Z/M values, and add tests and docs.
2017-08-14 01:42:15 +10:00
Nyall Dawson
b4b39996d2 Port hub lines algorithm to new API
Improvements:
- transparent reprojection to match hub/spoke CRS
- keep all attributes from matched hub/spoke features
- don't break after matching one hub point to spoke - instead
join ALL hub/spoke points with matching id values
2017-08-05 17:51:38 +10:00
Nyall Dawson
fc1746e770 Port Hub Distance (points) to new API
Improvements:
- handle different CRS between points and hubs
- add unit test
2017-08-05 17:51:38 +10:00
Nyall Dawson
95be6d17b5 Restore text to float algorithm
And add test
2017-07-27 12:14:28 +10:00
Nyall Dawson
dd0f18355b [FEATURE] Followup addition of set Z/M values algs with Drop Z/M Values algorithm
Allows easy access to drop any z or m values present in a layer (e.g. if
required for compatibility with a database destination, etc)
2017-07-18 19:41:33 +10:00
Alexander Bruy
fe7c981aea [processing] handle NULL values in the single to multi algorithm (fix #15822) 2017-05-16 13:43:42 +03:00
Alexander Bruy
11475c621d Revert "Merge pull request #4562 from alexbruy/processing-singletomulti-3"
This reverts commit e3d79a1fe940b5d813b5f79c51b43393d085bb16, reversing
changes made to 3f7f95ee262ea3646d61600c21faed0866bc70b0.

Reverting again, as Travis started failing after merging PR (with all
test passed) into master branch
2017-05-16 13:42:47 +03:00
Alexander Bruy
b56e46dad4 [processing] handle NULL values in the single to multi algorithm (fix #15822) 2017-05-16 10:06:26 +03:00
Alexander Bruy
7ee1cbfaae Revert "[processing] handle NULL values in the Singleparts to multiparts (fix #15822)"
This reverts commit a944f7c4c1010767abb811200686e327040c2d32.
2017-05-01 10:53:15 +03:00
Alexander Bruy
a944f7c4c1 [processing] handle NULL values in the Singleparts to multiparts (fix #15822) 2017-04-30 14:31:52 +03:00
Nyall Dawson
92249c1a33 [FEATURE][processing] Snap Geometries algorithm can now snap
within the same layer

Allows closure of gaps within a layer
2017-03-30 13:54:05 +10:00
matteo
6f042835b2 [processing] gdal IDW test 2017-03-04 09:42:48 +01:00
matteo
79b6c29b1f [processing] gdal proximity test 2017-03-04 09:42:48 +01:00
Nyall Dawson
1cf0a20267 [FEATURE][processing] New algorithm for topological coloring of polygons
This ports to old (pre 2.0!!) topocolor plugin to processing. It's based
off my beta 2.x fork (never publicly released) which implemented
a bunch of improvements to the algorithm allowing for minimal number
of required colors and also balanced counts of features assigned
each individual color.

** Pretty sure this plugin was highlighted in Victor's presentation
about plugins-which-shouldn't-be-plugins-and-should-be-processing-algs
instead. It's a prime example of a plugin where the amount of code
required for gui+setup exceeded the actual "guts" of the plugin by
a huge factor, and which is much more useful when it can be
integrated into a larger processing model.
2017-02-22 12:10:13 +10:00
Nyall Dawson
91eea30e7d [FEATURE][processing] Algorithm to find an unknown layer's projection
If you have a layer with an unknown CRS, this algorithm gives a list
of possible candidate CRSes which the layer could be in.

It allows users to set the area (and corresponding CRS) which they know
the layer should be located near. The algorithm then tests every CRS
in the database to see what candidate CRSes would cause the layer
to be located at that preset area.

It's much faster than it sounds!! (just a couple of seconds)

Sponsored by SMEC/Surbana Jurong
2017-02-14 05:49:23 +10:00
Nyall Dawson
87f2fe55b2 Add unit test for processing polygonize algorithm 2017-01-31 10:47:00 +10:00
matteo
f7644b4708 [processing] add test for merge gdal 2017-01-27 10:13:04 +01:00