27 Commits

Author SHA1 Message Date
Nyall Dawson
e33647dc5a Move OGR processing provider specific methods to GdalUtils 2017-08-14 04:56:24 +10:00
Nyall Dawson
f9887aabf5 [processing] Remove more UseSelectionIfPresent use 2017-06-06 07:41:20 +10:00
Nyall Dawson
877775d2c0 Remove a bunch of unneeded imports 2017-05-02 14:47:58 +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
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
Juergen E. Fischer
c77172ed3d fix more flake8 warnings 2017-03-05 10:21:24 +01:00
Alexander Bruy
03eaad5bfd [processing] fix handling of the "selection" type settings 2017-01-12 12:52:04 +02:00
Nyall Dawson
4d51e1d1a1 Revert "[processing] added test for invalid geometry checking"
This reverts commit 306764871baab544f9566b327d2188a5b1fc8938.

Test is failing
2017-01-10 08:22:48 +10:00
Alexander Bruy
37725379f2 add missed import 2017-01-09 15:34:42 +02:00
volaya
306764871b [processing] added test for invalid geometry checking 2017-01-09 15:13:47 +02:00
Alexander Bruy
d81533e05a fix failing test 2016-11-12 13:31:46 +02:00
Alexander Bruy
75bd622ccc [processing] restore and fix extraction of OGR layer names 2016-11-12 13:31:45 +02:00
Alexander Bruy
85d1fd720b [processing] cleanup test data 2016-11-12 13:31:44 +02:00
Alexander Bruy
d08c02dbd0 [processing] disable polygonize test, as it is not stable 2016-11-12 13:31:43 +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
Bas Couwenberg
85818c684c Fix copyright in 2017
Match copyright header with python code.
2016-10-21 23:14:29 +02: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
bd7d913379 Refine QgsFeature geometry getters/setters
All pointer based methods have been removed.

Now we have only:

  void setGeometry( const QgsGeometry& geom )

and

  QgsGeometry geometry() const

Benefits include avoiding a whole lot of tricky pointer lifetime
issues, potential memory leaks, and finally closing #777, which
has survived for over 9 years!...

Impacts on PyQGIS code:
- no more need for the messy
  g = QgsGeometry( feature.geometry() )
  workaround, just use g = feature.geometry() instead
- IMPORTANT: you can no longer test whether a feature has geometry
 using `if f.geometry():`, since QgsFeature::geometry() will
 *always* return an object. Instead, use
 `if not f.geometry().isEmpty():`, or preferably the new method
 `if not f.hasGeometry():`

Fix #777
2016-08-01 16:25:46 +10:00
Nyall Dawson
9e1ddcb54d [processing] Allow modification of feature request when using
vector.features

Allows for optimising the request through subsets of attributes
or no geometry fetching
2016-07-13 12:06:41 +10:00