105 Commits

Author SHA1 Message Date
Nyall Dawson
f9887aabf5 [processing] Remove more UseSelectionIfPresent use 2017-06-06 07:41:20 +10:00
Nyall Dawson
06c4dea7ff [processing] Remove vector.createVectorWriter
Use QgsProcessingUtils.createFeatureSink instead
2017-05-07 08:02:54 +10:00
Nyall Dawson
a8a3cc82ed [processing] Port vector.createVectorWriter to c++
This implements an improved version of vector.createVectorWriter
in QgsProcessingUtils. The improved version relies on the
core class QgsVectorLayerImport to create empty layers,
which:
- reduces duplicate code and reuses the mature QgsVectorLayerImport
routines
- avoids manual conversion of field types to destination provider
field types
- potentially allows any writable provider to be used as a feature
sink for algorithms (e.g. output direct to MSSQL/Oracle/db2). This
should work now - it just needs exposing via UI.
2017-05-07 08:02:53 +10:00
Nyall Dawson
b5ae888b60 Merge pull request #4478 from nyalldawson/layer_store
Split off map layer storage handling from QgsProject to QgsMapLayerStore
2017-05-06 13:00:05 +10:00
Nyall Dawson
f81971daa4 Fix failing tests 2017-05-03 07:09:44 +10:00
Nyall Dawson
15de36ab26 [processing] Always require real QgsFields objects in getVectorWriter,
don't allow arrays of fields as inputs
2017-05-03 06:26:12 +10:00
Nyall Dawson
ee1236f067 [processing] Remove unused options argument from (create/get)VectorWriter 2017-05-03 06:25:30 +10:00
Nyall Dawson
877775d2c0 Remove a bunch of unneeded imports 2017-05-02 14:47:58 +10:00
Nyall Dawson
49c688bbe4 Fix use of QgsProcessingUtils.mapLayerFromString 2017-05-02 13:40:49 +10:00
Nyall Dawson
df1ead5ed4 [processing] Remove vector.spatialindex()
Use QgsProcessingUtils.createSpatialIndex() instead.
2017-05-02 13:39:36 +10:00
Nyall Dawson
bde1bf457b [processing] Remove unused vector.duplicateInMemory() function 2017-05-02 13:29:42 +10:00
Nyall Dawson
7eb7a7aa01 [processing] Remove vector.bufferedBoundingBox()
Use QgsRectangle.grow() instead
2017-05-02 13:27:01 +10:00
Nyall Dawson
b1eecfdba4 Fix resolving memory layers when multiple memory layers are used in model 2017-05-02 12:45:54 +10:00
Nyall Dawson
f84d703234 Add method QgsProcessingUtils::mapLayerFromString
Algorithms and other processing code should use this method
(instead of dataobjects.getLayerFromString) to
retrieve layers from a string, as it considers the processing
context and allows resolving strings to temporarily stored layers.

This permits processing models to function correctly when
intermediate results are stored as memory layers. Subsequent
model algorithms can then access these temporary layers as inputs.
All temporary layers will be removed when the context object
is destroyed after the model algorithm is run.
2017-05-02 12:33:04 +10:00
Nyall Dawson
0b0ccc9e9d Rename QgsVectorLayer::selectedFeaturesIterator to getSelectedFeatures
It's more in line with QgsVectorLayer::getFeatures, hence a more
discoverable API
2017-04-27 11:16:10 +10:00
Nyall Dawson
fd2c18ee16 Refactor processing writer to use QgsFeatureSink, and to store
temporary output layers in the provided processing context

Should fix loss of intermediate memory layers when running
a multi-step model
2017-04-26 17:38:40 +10:00
Nyall Dawson
1394c28d13 [processing] Move some log handling to c++ class 2017-04-26 13:56:29 +10:00
Nyall Dawson
f247a7cda3 Add c++ optimised uniqueValues method which respects processing context
Remove processing vector.uniqueValues/vector.getUniqueValues
and port usage to c++ method

Should be much faster than the python method, as the c++ method takes
advantage of handing off the unique values calculation to the
provider source whenever possible
2017-04-26 12:53:35 +10:00
Nyall Dawson
b067bd786a Rename UseSelection -> UseSelectionIfPresent, clarify docs 2017-04-26 12:53:35 +10:00
Nyall Dawson
427c3b1684 Remove vector.features
Use QgsProcessingUtils.getFeatures instead
2017-04-26 12:53:35 +10:00
Nyall Dawson
6397386fda Remove len method from vector.features
Use QgsProcessingUtils::featureCount instead
2017-04-26 12:53:35 +10:00
Nyall Dawson
8cf1617f5d Use context to control vector.features() 2017-04-26 12:53:35 +10:00
Nyall Dawson
3f137e123d Add context argument to other vector methods 2017-04-26 12:53:35 +10:00
Nyall Dawson
adc7cf0ec2 Add context argument to vector.features 2017-04-26 12:53:35 +10:00
Nyall Dawson
ee777447a9 [processing] Remove special handling for invalid geometries
Instead rely on QgsFeatureRequest method. There's a temporary
loss of the feedback on encountering an invalid geometry
when abort on invalid is set, but that will be resurrected
when all of vector.features is moved to c++
2017-04-25 16:16:17 +10:00
Nyall Dawson
cc5b9bfe17 More QgsDistanceArea API cleanups and simplification
- setEllipsoidalMode() was removed. Ellipsoidal calculations are
now enabled whenever a valid ellipsoid() has been set. Set the
ellipsoid to 'NONE' to disable ellipsoidal calculations.

- ellipsoidalEnabled() was removed. Ellipsoidal calculations
are now enabled whenever a valid ellipsoid() is set. Check
willUseEllipsoid() to determine whether ellipsoidal
calculations will be performed.

- sourceCrs() and setSourceCrs() now always take and return
QgsCoordinateReferenceSystem objects. All string/ID based CRS
methods were removed.

- geographic() was removed. This was only used internally
in one place, so was replaced with sourceCrs().isGeographic() instead.

- some largely overlapping measurement functions were consolidated
2017-04-18 08:14:16 +10:00
Nyall Dawson
377b181c4e Port more processing dataobjects methods to c++
Also
- simplify and add tests
- remove large memory leak (persistant store of all non-project layers)
- remove broken support for direct loading postgres/virtual layers
by string (Python version was very broken and would never match
a postgres/virtual layer)
2017-04-05 19:50:46 +10:00
rldhont
eb2231925f [BUGFIX][Processing] Vector tools -- add next methods for features iterator 2017-03-15 21:01:21 +01:00
Juergen E. Fischer
ecc5bb508e pep8/pyflakes3 cleanups 2017-03-04 02:38:15 +01:00
Juergen E. Fischer
a10c890383 More QgsSettings updates:
* revives WMS
* QgsSettings::clear() added
* section added to QgsSettings::contains()
* type parameter added to sip binding of QgsSettings.value()
* TODO: customization & evis
2017-03-04 02:37:59 +01:00
Juergen E. Fischer
fe75e1f2a6 processing: fix warning 2017-02-11 21:44:32 +01:00
Denis Rouzaud
748be8de71 [spelling] replace behaviour by behavior 2017-01-11 11:35:19 +01:00
Alexander Bruy
c4cc954141 [processing] restore functionality of the TableWriter class (fix #16053) 2017-01-10 20:23:05 +02:00
Juergen E. Fischer
378212cf42 indentation update 2017-01-10 09:05:42 +01:00
volaya
1500eadd2c [processing] fixed usage of filter function in vector.features 2017-01-09 18:25:29 +01:00
volaya
7b68c77f4c [processing] removed unnecessary code to check validity of geometries 2017-01-09 15:13:47 +02:00
volaya
e8c149ed42 [processing] added ‘invalid feature handling’ option 2017-01-09 15:13:47 +02:00
Martin Dobias
d56a97d4fe Merge QgsMapLayerRegistry into QgsProject
All methods/signals of QgsMapLayerRegistry moved verbatim to QgsProject.
2016-12-10 15:18:12 +08:00
Alexander Bruy
75bd622ccc [processing] restore and fix extraction of OGR layer names 2016-11-12 13:31:45 +02:00
Alexander Bruy
a6bd9f0207 Revert "Fix extraction of ogr LayerName from multi-layer dataset URIs"
This reverts commit 6c5364186dd8d45ac51e5bd1a72c6a542f032cb1.

As it breaks all OGR geoprocessing algoroithms.
2016-11-12 13:31:42 +02:00
Alexander Bruy
5991eccb47 [processing] simple test for ogr buffering 2016-11-12 13:31:42 +02:00
Alexander Bruy
ee9e1c3328 [processing] add missed spatial index constructor (follow up 700441eec9) 2016-10-19 09:19:00 +03:00
Alexander Bruy
700441eec9 [processing] remove debug line and fix spatial index creation 2016-10-18 16:55:19 +03:00
volaya
90db246488 [processing] use only selected features for spatial index
fixes #15584
2016-10-18 16:55:19 +03:00
Sandro Santilli
8843de88c7 Fix ogrLayerName handling of PostgreSQL dataset URIs
Also document "uri" parameter semantic, and add more tests.
See for background
https://lists.osgeo.org/pipermail/qgis-developer/2016-October/045311.html
REF #15698
2016-10-18 11:05:31 +02:00
Sandro Santilli
52a0082ade Fix extraction of ogr LayerName from database dataset URIs
See 6c5364186d (commitcomment-19439676)
Includes testcase.

REF #15698
2016-10-17 11:55:35 +02:00
Sandro Santilli
6c5364186d Fix extraction of ogr LayerName from multi-layer dataset URIs
Adds supports for "layerid" when present.
Drop special handling for "table=" portions found in URI,
making the code more generic.

Includes testcase.

Fixes #15698 - import geodatabase to postgis via processing
2016-10-15 09:13:18 +02:00
Nyall Dawson
6605a2274f [processing] Optimise uniqueValues method
Now it uses the standard QgsVectorLayer.uniqueValues() method
where possible so that provider side optimisations are used

Also add test, and optimise request when using selected
features only
2016-10-12 17:05:15 +10:00
Nyall Dawson
05ea4be7c3 [processing] Fix inefficient values() method
Method was iterating over ever feature in a layer, including
geometries and all attributes for EVERY attribute requested

Add test and refactor so only one optimised iteration (eg no
geometry, only required attributes) is used
2016-10-12 16:56:29 +10:00
Nyall Dawson
90aebd117d [processing] Add geometry info should add z/m values (fix #14659) 2016-10-11 09:30:41 +10:00