81 Commits

Author SHA1 Message Date
Nyall Dawson
2a33844416 Pass by const ref where possible 2017-09-11 21:19:22 +10:00
Nyall Dawson
5ea07684bd Also call invalidGeometryCallback when skipping features 2017-06-23 12:08:54 +10:00
Nyall Dawson
482ed3f25a Explicitly mention in docs that presence of destination CRS does
not affect filter expressions or virtual field values
2017-06-09 09:00:04 +10:00
Nyall Dawson
a98923507e Allow specifying a destination CRS in QgsFeatureRequest
If set, all geometries will be reprojected from their original
coordinate reference system to the destination CRS while
iterating over features.

If a CRS has been set as the destination CRS, then the filterRect
parameter should be specified in the same CRS as this destination
CRS.

Additionally, a callback function can be specified on the request
to be called if a transform exception is encountered while
iterating over features.

This is designed to make it easier for scripts and plugins to
correctly reproject layers in an efficient and robust way, instead
of having to implement lots of repeated code themselves and
potentially missing some of the important considerations which
come with reprojecting geometries & bounding boxes.

Now, if a script wants the features from a layer in a specific
CRS, they can call:

    crs = QgsCoordinateReferenceSystem('epsg:4326')
    request = QgsFeatureRequest().setDestinationCrs(crs)
    for f in layer.getFeatures(reqeuest):
        print('geometry in 4326 is {}.format(f.geometry().exportToWkt()))
2017-06-08 19:20:07 +10:00
Juergen E. Fischer
258c872c45 Once again fix QgsFeatureRequest::OrderBy on windows (followup b0bb873, 1d5d92e, 8f29f28 and 3c843a8) 2017-05-19 21:56:31 +02:00
Matthias Kuhn
b0bb873360 Fix build 2017-05-19 07:16:03 +02:00
Juergen E. Fischer
1d5d92e668 fix windows build of QgsFeatureRequest::OrderBy again (reapply 8f29f28 and 3c843a8) 2017-05-19 02:13:06 +02:00
Denis Rouzaud
68b990b3bb sipify batch
python/core/qgspaintenginehack.sip
python/core/qgspainting.sip
python/core/qgspallabeling.sip
python/core/qgspathresolver.sip
python/core/qgspluginlayer.sip
python/core/qgspluginlayerregistry.sip
python/core/qgspointlocator.sip
python/core/qgsproject.sip
python/core/qgsprojectbadlayerhandler.sip
python/core/qgsprojectproperty.sip
python/core/qgsprojectversion.sip
python/core/qgssnappingconfig.sip
2017-05-18 09:41:16 +02:00
Nyall Dawson
3c843a8e4c Fix windows build 2017-05-18 08:54:07 +10:00
Denis Rouzaud
8231d7528b sipify QgsExpressionContext, QgsFeatureRequest, QgsOptionalExpression 2017-05-17 15:20:31 +02:00
Denis Rouzaud
29dd519e1f introduce SIP_SKIP in headers
based on the docstrings 'not available in Python bindings'
2017-05-04 12:04:08 +02:00
Matthias Kuhn
abd26075a7 Allow QgsFeatureRequest::OrderBy expressions to be prepared 2017-05-02 01:54:57 +02:00
Nyall Dawson
9743831123 Expose invalid geometry callback to python 2017-04-25 16:16:17 +10:00
Nyall Dawson
595f104830 Allow specifying a callback for encountering invalid geometries while iterating 2017-04-25 16:16:17 +10:00
Nyall Dawson
80d07cb4b9 Add method to perform invalid geometry checking in QgsFeatureRequest
Allows requests to specify how invalid geometries should be
handled. Default is to perform no geometry validity checking.
2017-04-25 16:16:17 +10:00
Nyall Dawson
6beaa51837 Add test to provider test suite that provider source does not rely
on source layer or provider in any way

Fails for OGR provider! :o
2017-04-24 08:21:06 +10:00
Nyall Dawson
dfb5f56f80 @see -> \see 2017-04-03 13:18:35 +10:00
Nyall Dawson
e47073b1e1 \return -> \returns (for consistency) 2017-04-03 13:18:35 +10:00
Nyall Dawson
e4daf8ea62 @return(s) -> \return(s) 2017-04-03 13:18:13 +10:00
Nyall Dawson
11dcfd935c @param -> \param 2017-04-03 13:17:27 +10:00
Matthias Kuhn
fb91ed7395 Use "\since" instead of "@note added in" 2017-04-03 01:06:33 +02:00
Nyall Dawson
32326ab5df Replace "python" with "Python" in docs 2017-04-03 08:33:56 +10:00
Nyall Dawson
f3e1772bb9 Remove QgsFeatureRequest::FilterRect
This enum value has not been in use since filter rects were
separated from other filter types. Leaving it in API is confusing
and leads to incorrect use.
2017-03-20 15:03:10 +10:00
Nyall Dawson
603d02d45e Fix incorrect results when using QgsFeatureRequest.acceptFeature with filter rect 2017-03-20 14:34:21 +10:00
Denis Rouzaud
40c056cae0 run astyle on src/core 2017-03-03 09:09:37 +01:00
Nyall Dawson
d19e70700f Ensure all pointer variables are initialized to nullptr 2017-02-18 20:23:18 +10:00
Nyall Dawson
b5480633e4 Standardise names for static variables
All non-const variables are prefixed with "s", all const
statics are ALL_CAPS
2017-01-14 16:40:24 +10:00
Matthias Kuhn
b1e226c069 Add missing #include "qgis_core.h" 2017-01-05 16:49:00 +01:00
Nyall Dawson
32b1603c81 Update indentation 2016-11-08 08:57:51 +10:00
Nyall Dawson
44289084e9 Optimise passing of variables by ref/value 2016-10-24 10:36:23 +10:00
Matthias Kuhn
722fdefe43 referencedColumns returns QSet<QString> instead of QStringList
The order of the elements is irrelevant and duplicate elements are unwanted. It
is therefore a perfect candidate for a set instead of a list. This prevents
filtering for duplicates manually be replacing some filer codes with (more
performant) builtin methods of QSet.
2016-10-05 14:33:38 +02:00
Matthias Kuhn
d91a45ceaf Add shorthands to get features by fid, fids and expression
Adds new methods overloads to QgsVectorLayer

  getFeatures( expression )
  getFeatures( ids )
  getFeature( id )

These three methods to query features are by far the most used ones
and with this patch it is much easier to write and read code.
2016-07-19 10:37:09 +02:00
Nyall Dawson
0a056f8a1f Add doxygen test to force use of \ingroup for classes
Using the group tag helps keep the API docs organized
2016-07-04 19:57:13 +10:00
Nyall Dawson
df0d5969aa Fix virtual fields which depend on other virtual fields may not be
calculated in some circumstances (fix #14939)
2016-06-10 11:18:25 +10:00
Nyall Dawson
566dd4bd43 Always pass QgsFeatureId by value, not reference
Since it's just a int64, it's faster to pass by value
2015-12-30 22:51:32 +11:00
Juergen E. Fischer
8f29f28d5c fix windows build and some warnings 2015-12-24 02:17:59 +01:00
Matthias Kuhn
168c6f70bc Rename OrderBys -> OrderBy and OrderBy -> OrderByClause
And some sip fixes
2015-12-22 09:12:32 +01:00
Matthias Kuhn
a5f88181f6 Fix fallback orderby and attribute subset
Also properly closes the iterator when a fallback orderby is used
2015-12-22 09:12:32 +01:00
Juergen E. Fischer
d31e61084f fix windows build 2015-12-20 21:07:36 +01:00
Matthias Kuhn
d96a2748b6 Add Order By Clause 2015-12-18 18:36:43 +01:00
Nyall Dawson
edb16d0014 [FEATURE] Feature limit support for feature requests
Limits the maximum number of features returned by the iterator.
Some providers (postgres, spatialite, MS SQL) pass the limit on
to the provider to result in faster queries.
2015-12-05 10:24:42 +11:00
Nyall Dawson
323f265c94 Misc cleanups following c9f0d83 2015-11-20 10:38:34 +11:00
Nyall Dawson
c49b5b777f Change a lot of arguments to const references in core/gui
Rationale:
- there was a lot of large objects passed by value, so potentially
there's a speed bump from this
- even for implicitly shared classes like QString/QList there's still
a (small) cost for copying the objects when there's no reason to
- it's the right thing to do!
2015-10-07 12:02:04 +11:00
Matthias Kuhn
72608b0a6f Doxymentation 2015-09-11 23:56:34 +02:00
Nyall Dawson
3b6f5915e7 Port iterators to expression contexts 2015-08-22 19:01:40 +10:00
Denis Rouzaud
480a0f17c3 Don't send expressions with special fields to provider 2015-08-14 11:39:27 +02:00
Matthias Kuhn
cfe91f8261 Apply FilterRect in combination with other filters 2015-07-29 12:08:54 +02:00
Juergen E. Fischer
9752c468c1 indentation update 2015-07-29 11:52:14 +02:00
Denis Rouzaud
9e3183c63f Revert "sort includes"
This reverts commit 2b7d3d3c73b50ba6dc74abec6dd652ff1b87c0ec.
2015-06-10 14:54:47 +02:00
Denis Rouzaud
2b7d3d3c73 sort includes 2015-06-10 13:59:08 +02:00