62 Commits

Author SHA1 Message Date
Nyall Dawson
f65e770242 [FEATURE[processing] New algorithm to compute geometry by expression
This algorithm updates existing geometries (or creates new
geometries) for input features by use of a QGIS expression. This
allows complex geometry modifications which can utilise all the
flexibility of the QGIS expression engine to manipulate and create
geometries for output features.
2016-11-02 16:05:46 +10:00
Nyall Dawson
82312e10e4 [FEATURE][processing] New algorithm to extract specific nodes
This algorithm allows you to extract specific nodes from geometries.
Eg you can extract the first or last node in the geometry.

The algorithm accepts a comma separated list of node indices to
extract, eg 0 = first node, 1 = second node, etc. Negative indices
can be used to extract nodes from the end of the geometry. Eg
-1 = last node, -2 = second last node.
2016-10-31 07:56:24 +10:00
Nyall Dawson
8dab2cd4d7 [FEATURE][processing] New algorithm to extend lines
Allows extending linestrings by a set distance at the start
and end of the line
2016-10-31 07:56:24 +10:00
Nyall Dawson
74e64645e4 [FEATURE][processing] New extract by expression algorithm
Filters an input layer by expression
2016-10-29 08:05:26 +10:00
Nyall Dawson
5eb875d63b [processing] Add algorithm to strip null geometries 2016-10-24 11:24:37 +10:00
Alexander Bruy
58f31f1a82 [processing] add tests for interpolation tools 2016-10-19 16:43:05 +03:00
Piotr Pociask
cd0fefb42b [processing] Update voronoi classes for Python3; update expected data for multipoint Delaunay traingulation test 2016-10-19 11:15:38 +02:00
Piotr Pociask
3af23036fd Test for multipoint Delaunay triangulation 2016-10-19 11:15:38 +02:00
Nyall Dawson
a05b610a8b [processing] Use prepared geometries for intersects tests
Wherever possible use prepared geometry engines for intersects
type tests, as it's much faster
2016-10-17 11:18:46 +10:00
Nyall Dawson
d4323addf0 [processing] Fix missing points in polygons menu item (fix #15670)
Also add a unit test
2016-10-11 09:30:46 +10:00
Nyall Dawson
90aebd117d [processing] Add geometry info should add z/m values (fix #14659) 2016-10-11 09:30:41 +10:00
Alexander Bruy
519e76c79f [processing] add test for gdalinfo algorithm 2016-09-14 15:55:14 +03:00
Nyall Dawson
4d60d0cdb5 [FEATURE] Add option to QgsGeometry::smooth to not smooth
segments shorter than a certain threshold or sharp corners
with an angle exceeding a threshold

Expose the angle threshold to processing smooth algorithm

Also:
- optimise QgsGeometry::smooth for new geometry classes
- Fix smooth does not work with geometries containing Z/M
2016-09-03 08:31:33 +10:00
Nyall Dawson
56b77db88c [FEATURE][processing] Add choice of simplification method to simplify
This change allows users to choose which method to use when running
the simplify geometries algorithm, with choices of the existing
distance based (Douglas Peucker) algorithm, area based (Visvalingam)
algorithm and snap-to-grid.

Visvaligam in particular usually results in more cartographically
pleasing simplification over the standard distance based methods.
2016-09-01 08:22:18 +10:00
Nyall Dawson
5d97d03ad5 [processing] Fix simplify alg handling of null goemetry, add tests 2016-09-01 07:50:02 +10:00
Nyall Dawson
9fa4e776db [FEATURE][processing] Extract nodes algorithm now saves node
index, distance along line and angle at node

Also correctly handles null geometries
2016-08-29 11:02:14 +10:00
Nyall Dawson
989d9864c5 [FEATURE][processing] New algorithm for single sided buffers 2016-08-17 06:44:04 +10:00
Nyall Dawson
0f268bf27a [FEATURE][processing] New algorithm for translating (moving) points
Allows geometries to be shifted by a x/y displacement
2016-08-14 14:36:10 +10:00
Nyall Dawson
e9423dc4dd [processing] Rework centroid algorithm to handle non-polygon layers
The existing polygoncentroids algorithm has been deprecated
(and hidden from the toolbox), and a new, generic centroids
algorithm added which works with lines and multipoints
2016-08-12 07:50:47 +10:00
Nyall Dawson
9bc61e77c7 [processing] Create vector files using default dataset/layer options
Fixes missing CRS when saving to GML (fix #14544)
2016-08-12 07:01:04 +10:00
Nyall Dawson
5025c828e5 [processing] Expose buffer settings (cap/join style/mitre limit)
Also make fixed distance buffer correctly handle null geometries
(copy the row as a geometryless row)
2016-08-11 18:35:30 +10:00
Nyall Dawson
0a2b661ecb Make QgsGeometry::offsetCurve handle multi* geometries 2016-08-11 17:59:01 +10:00
Nyall Dawson
82f4a82c66 [FEATURE][processing] New algorithm for offsetting lines 2016-08-11 08:38:43 +10:00
Nyall Dawson
142de7cb08 [FEATURE][processing] Point on surface algorithm 2016-08-10 16:57:38 +10:00
Nyall Dawson
ab022451a5 [FEATURE][processing] New algorithm for geometry boundary 2016-08-10 16:32:31 +10:00
Nyall Dawson
bd8db5d156 [FEATURE][processing] New algorithm for calculating feature bounding boxes 2016-08-10 15:41:44 +10:00
Nyall Dawson
71ebdb8f69 [FEATURE] Optimise processing clip algorithm
Before the algorithm was written to optimise clipping a few
features against thousands of mask features. The revised algorithm
is optimised for clipping thousands of input features against
a few mask features.

Given that this second operation is much more likely, it makes
sense to optimise for this use case.

I've also applied some other optimisations like taking advantage
of spatial indexes on the providers, using prepared geometries
and also only applying an intersection operation if the geometry
isn't wholly contained by the mask geometry.

Benchmarks:

clipping roads layer with 1 million lines against 2 polygons

before: 5 mins 30 seconds
after: 10 seconds

clipping address layer with 5 million points against 2 polygons

before: 50 minutes
after: 30 seconds
2016-08-03 13:15:03 +10:00
Nyall Dawson
4bfdcf0927 Fix expected test data 2016-08-02 13:50:59 +10:00
Nyall Dawson
60147e8147 Remove use of constGeometry 2016-08-02 13:50:59 +10:00
Nyall Dawson
bb54b4f41a [FEATURE] Make processing dissolve algorithm accept multiple fields
This allows you to dissolve based on more than one field value
2016-08-02 11:54:02 +10:00
Nyall Dawson
0455b6600d [processing] Fix multipart to singlepart handling of null geometry 2016-08-02 11:53:11 +10:00
Nyall Dawson
ccfd4c36be [processing] Add test for dissolve using field values 2016-08-02 11:52:37 +10:00
Nyall Dawson
30fcaed634 [FEATURE][processing] New algorithm for merging connected lines
This algorithm joins all connected parts of MultiLineString
geometries into single LineString geometries.

If any parts of the input MultiLineString geometries are not
connected, the resultant geometry will be a MultiLineString
containing any lines which could be merged and any non-connected
line parts.
2016-08-02 11:51:44 +10:00
Nyall Dawson
2db7fca7a6 [processing] Add tests for clip algorithm 2016-07-14 08:05:59 +10:00
Médéric RIBREUX
a1c541ee6d Add another bunch of tests for rasters 2016-06-26 16:13:39 +02:00
Médéric RIBREUX
bb94a179a9 Add new test data and a bunch of unit tests 2016-06-12 17:36:42 +02:00
Médéric Ribreux
1f21af6672 Improve tests: add external file support into AlgorithmsTest 2016-05-29 09:00:16 +02:00
Matthias Kuhn
dbb24e971e [processing tests] More tolerance in statistics test 2016-05-22 21:52:55 +02:00
Alexander Bruy
b7a4e20627 [processing] add Rectangles, Ovals, Diamonds algorithm (fix #11575)
This is direct port of abandoned "Rectangles, Ovals and diamonds" plugin.
There are two algorithms: one uses fixed values and second — variable
values from attribute table. Test for fixed distance version included.
2016-04-13 12:33:08 +03:00
Anita Graser
b8d1fb6fc9 added buffer tests 2016-03-27 13:31:14 +02:00
Maximilian Krambach
097b18190c identation errors and wrong file paths 2016-03-22 22:01:21 +01:00
Maximilian Krambach
c445828f9e changed check for validity from isGeosValid() to validateGeometry() in dissolve.py 2016-03-21 21:30:23 +01:00
Bernhard Ströbl
bd64b4fd4c [processing] renew test results depending on polys.gml 2016-03-16 14:29:45 +01:00
Bernhard Ströbl
f73b572704 [processing] renew test output for eliminate 2016-03-16 14:07:12 +01:00
Bernhard Ströbl
d7562eef95 [processing] add test for eliminate algorithm 2016-03-16 08:36:02 +01:00
Matthias Kuhn
e888d6d684 [processing] Add autoincremental field test 2016-03-15 11:45:34 +01:00
Matthias Kuhn
9ca09abb02 Fix expected dataset for splitlineswithlines test 2016-03-14 09:57:04 +01:00
Bernhard Ströbl
648e6ac692 [processing] test: remove gfs output files 2016-03-14 09:57:04 +01:00
Bernhard Ströbl
9124586bbf [processing] update test output files 2016-03-14 09:57:04 +01:00
Bernhard Ströbl
bf54b9529a [processing] test cases for splitlineswithlines 2016-03-14 09:57:04 +01:00