23 Commits

Author SHA1 Message Date
Nyall Dawson
f9e10888cb [processing] Fix some potential errors in clip algorithm 2016-08-14 14:50:34 +10:00
Matthias Kuhn
bb79d13e82 Remove deprecated Qgis::WKBType and API cleanup (#3325)
* Remove deprecated Qgis::WKBType and API cleanup

Renames QgsWKBTypes to QgsWkbTypes

Replaces usage of the enums:

* Qgis::WKBType with QgsWkbTypes::Type
* Qgis::GeometryType with QgsWkbTypes::GeometryType

Their values should be forward compatible (a fact that was already
explited up to now by casting between the types)

Renames some SSLxxx to SslXxx and URIxxx to UriXxx

* Fix build warnings and simplify type handling

* Add a fixer to rewrite imports

* The forgotten rebase conflictThe forgotten rebase conflicts

* QgsDataSourcURI > QgsDataSourceUri

* QgsWKBTypes > QgsWkbTypes

* Qgis.WKBGeom > QgsWkbTypes.Geom

* Further python fixes

* Guess what... Qgis::wkbDimensions != QgsWkbTypes::wkbDimensions

* Fix tests

* Python 3 updates

* [travis] pull request caching cannot be disabled

so at least use it in r/w mode

* Fix python3 print in plugins
2016-08-04 09:10:08 +02:00
Nyall Dawson
d1aa03a09b Better clip for very separate features 2016-08-03 13:41:22 +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
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
1a2231f10c Rename QGis class to Qgis, for capitalisation consistency 2016-07-21 22:01:38 +10:00
Alexander Bruy
0553f7b33b [processing] allow 2.5D geometries (fix #14929) 2016-06-13 11:44:08 +03:00
Denis Rouzaud
8071acd064 move PyQt compat folder to python/qgis 2016-04-29 14:10:26 +02:00
Matthias Kuhn
59522582bf [processing] Improve error message when clipping fails due to 2.5D 2016-04-21 17:11:16 +02:00
Juergen E. Fischer
2526d3e3c8 processing: switch to pyqt wrappers, flake8 fixes 2016-03-21 17:00:25 +01:00
Alexander Bruy
11a9a66104 [processing] add icons for fTools and GDALTools algorithms 2016-03-01 15:57:31 +02:00
Alexander Bruy
e7fe61e6b9 [processing] load algorithms only when requred 3rd party modules are
available or compatible QGIS version is used

Some housekeeping in QGIS algorithms provider
2016-02-17 14:46:02 +02:00
Alexander Bruy
d4e400a425 [processing] fixes for vector geoprocessing algorithms 2016-01-29 16:33:21 +02:00
Salvatore Larosa
88a197b20f [processing] fix missing import for Union and Clip algs 2015-12-24 16:26:58 +01:00
Matthias Kuhn
afd436da9f Yet another fix to 594fafe 2015-11-24 16:57:43 +01:00
Matthias Kuhn
2e7c33281c Followup 594fafe73b8, Also fix processing 2015-11-24 16:29:35 +01:00
volaya
cba585df2b [processing] correctly set geometry type of input in clip algorithm 2015-11-13 12:20:52 +01:00
Juergen E. Fischer
b39055b39c indentation update (now including autopep8) 2015-08-22 14:29:41 +02:00
Juergen E. Fischer
66a3d02240 integrate processing into update_ts.sh (also includes all translations
in the repository and none outside of it).
2015-07-26 04:28:37 +02:00
Juergen E. Fischer
956c155e8f fix python pep8 warnings and fix some revealed errors
pep8 --ignore=E111,E128,E201,E202,E203,E211,E221,E222,E225,E226,E227,E231,E241,E261,E265,E272,E302,E303,E501,E701 \
     --exclude="ui_*.py,debian/*,python/ext-libs/*" \
     .
2015-02-01 20:46:47 +01:00
Alexander Bruy
d8a224d896 fix typos 2015-01-17 12:17:15 +02:00
Alexander Bruy
ad758aa8db [processing] i18n for qgis provider 2015-01-17 11:24:54 +02:00
Alexander Bruy
1b8597306b [processing] put all qgis algs in single directory 2014-10-03 15:47:44 +03:00