57 Commits

Author SHA1 Message Date
Nyall Dawson
f5a6aef55f Raise IndexError in PyQGIS when calling geometryN on a collection
with an invalid geometry index

And add len operator to QgsGeometryCollection
2018-11-20 05:05:37 +11:00
Nyall Dawson
ba17b130f8 Move forceRHR to QgsGeometry, avoid duplicate code 2018-11-09 19:06:48 +10:00
Nyall Dawson
27e1ef5c1c Add method to QgsCurvePolygon to force RHR, ensuring standard ring orientation 2018-11-09 19:06:48 +10:00
Nyall Dawson
c22364d45e Add method to determine orientation of closed curves 2018-11-09 19:06:48 +10:00
Nyall Dawson
7be2925649 Remove QgsGeometry bool operator
This is too dangerous -- it gets silently casted to numeric values
instead of throwing compilation errors
2018-11-05 08:39:10 +10:00
Matthias Kuhn
0da210df52
Add QgsRectangle::snappedToGrid
Snaps a rectangle to a grid.
2018-10-26 07:58:27 +02:00
Denis Rouzaud
5577d83a75 mark method as const 2018-10-25 13:49:26 -04:00
Denis Rouzaud
80d0c33f5b add QgsRectangle::scaled which returns the scaled rectangle
facilitates one-lines
2018-10-25 13:37:07 -04:00
Denis Rouzaud
32d4bcc425
add Python __repr__ method to QgsGeometry.Error (#8198) 2018-10-15 06:53:09 -08:00
Denis Rouzaud
ef1efebda4 forward declaration of QgsPoint 2018-10-09 11:48:33 -08:00
Nathan Woodrow
f928c2e545
[FIX] - Respect selection order in attribute table copy. (#8048)
Only copy fields shown in view for current table.
2018-10-08 12:07:28 +10:00
Even Rouault
7e81226b51 Replace toUtf8().data() by toUtf8().constData()
All your uses of toUtf8().data() actually just need a const char*
So use constData() that is semantically more correct, and documented
to be faster.

From http://doc.qt.io/qt-5/qbytearray.html#data
"For read-only access, constData() is faster because it never
causes a deep copy to occur."
2018-10-07 07:23:42 +10:00
Denis Rouzaud
9fa8c356dd
make QgsWkbTypes a Q_GADGET and declare GeometryType as Q_ENUM (#8024)
* make QgsWkbTypes a Q_GADGET and declare GeometryType as Q_ENUM

* include QObject

* remove extra include

* move QgsWkbTypes to moc headers

* run sip_include
2018-10-05 10:25:35 -08:00
Nyall Dawson
f1ced30ee2 Fix dox 2018-09-28 13:17:12 +10:00
Nyall Dawson
39d148612b Optimise conversion of geometry from OGR -> QGIS
Avoid conversion to/from WKB at OGR/QGIS side, and just directly
utilise OGR geometry API to construct QGIS geometries.

Shaves ~10% off rendering time for a large point layer (GPKG)
2018-09-28 13:17:12 +10:00
Matthias Kuhn
7f63d41b44
Merge pull request #7822 from m-kuhn/constCorrectQgsGeometryError
Const correctness for QgsGeometry::Error
2018-09-07 15:00:40 +02:00
Matthias Kuhn
e637fd5e66 Add doxymentation 2018-09-07 13:19:52 +02:00
Matthias Kuhn
8ba442f14a Const correctness for QgsGeometry::Error 2018-09-07 10:58:13 +02:00
Juergen E. Fischer
a823046b5f followup spelling fixes 2018-09-07 00:33:13 +02:00
Denis Rouzaud
ea2ab53482 fix QgsGeometry API doc for 3.x for get/set methods 2018-08-23 06:38:58 +10:00
Nyall Dawson
c6a91dab09 [FEATURE] Use native interpolate point method instead of GEOS method
Because:
- Exactly follows curves and doesn't require segmentizing input geometry
- Also interpolates z/m values if they are present in input geometry
- Is faster
2018-08-15 14:01:59 +10:00
Nyall Dawson
513bcb68e4 [FEATURE] New geometry API call to return a curve substring
Returns a new curve representing a substring of a curve, from
a start distance and end distance.

If z or m values are present, the output z and m will be interpolated using
the existing vertices' z or m values.

Handles curved geometries without loss.
2018-08-15 14:01:59 +10:00
Nyall Dawson
5b0bdbd4d9 Add QgsGeometryUtils method to interpolate a point on an arc given a distance 2018-08-15 14:01:59 +10:00
Nyall Dawson
56fd4e3b16 Add QgsGeometryUtils method for interpolating point between two points, with z/m handling 2018-08-15 14:01:59 +10:00
Nyall Dawson
d09faf42be Add method to transform vertices of QgsGeometry/QgsAbstractGeometry
in place using a custom lambda function
2018-07-30 12:11:17 +10:00
Nyall Dawson
20e62b4c5f Fix typo, failing test 2018-07-26 09:37:19 +10:00
Denis Rouzaud
ff1988f11d Python __repr__ test output 2018-06-19 13:55:53 -04:00
Denis Rouzaud
763dfd2998 use SIP to define Python __repr__ rather than injections
because it's a bit more clever!
2018-06-19 07:58:26 -04:00
Denis Rouzaud
cc3e29bcc2 add __repr__ for more geometry classes and add test 2018-06-19 07:02:17 -04:00
Denis Rouzaud
ac4f508c13 create Python __repr__ methods for QgsPoint and QgsPointXY 2018-06-19 07:02:17 -04:00
Nyall Dawson
4059c9b71d Move some more common geometry methods to headers to allow compiler inlining 2018-06-19 13:16:02 +10:00
Nyall Dawson
4fb9091e6e QgsRectangle::intersect should use a reference, not a pointer
We never call this method using nullptrs, so there's no need
for this to be a pointer argument in the first place. And
having it a pointer encourages leaky code, such as the
leak this commit fixes in server.
2018-06-18 07:55:17 +10:00
Denis Rouzaud
5cb86be6a2 rename some arguments and variables 2018-06-11 23:11:03 -04:00
Denis Rouzaud
6d1d1498f7 fix documentation in QgsRectangle 2018-06-08 08:03:03 -04:00
Denis Rouzaud
59202acc45 [vertex editor] set extent of map canvas on the whole selection of nodes 2018-06-07 15:13:13 -04:00
Nyall Dawson
2ed144ac59 Apply clang-tidy readability-avoid-const-params-in-decls fixit
Checks whether a function declaration has parameters that are
top level const.

const values in declarations do not affect the signature of a
function, so they should not be put there.
2018-06-05 10:19:13 +10:00
Nyall Dawson
1395dc0e9c Add missing license headers 2018-06-04 11:30:32 +10:00
Nyall Dawson
3aa4968f93 Optimise geometry conversion to/from geos 2018-05-30 18:52:41 +10:00
Nyall Dawson
2a70c4bcca Remove invalid ring handling from filterVertices, move to removeInvalidRings() 2018-05-30 05:01:40 +10:00
Nyall Dawson
0c7df170e1 Optimise QgsCurve::asQPolygonF for linestring geometries 2018-05-30 05:01:40 +10:00
Nyall Dawson
f092c7edb7 Add method to filter vertices for geometries in place, by providing a custom filter function 2018-05-30 05:01:40 +10:00
Denis Rouzaud
65bb60e96c run sipify 2018-05-28 10:39:34 -08:00
Nyall Dawson
f8bc97030b Remove extra space added before first line of docstring 2018-05-28 08:22:11 +10:00
Nyall Dawson
7a1a787c0a Fix incorrect returns docstring when doxygen \returns has extra trailing spaces or uses tabs 2018-05-27 18:54:09 +10:00
Nyall Dawson
9f650fead9 Fix incorrect param docstring when doxygen \param has extra
trailing spaces or uses tabs
2018-05-27 18:54:09 +10:00
Nyall Dawson
4b1b752633 Fix bad regex 2018-05-27 18:54:09 +10:00
Nyall Dawson
3d6ea5972b Remove some junk lines from docstrings 2018-05-27 18:54:09 +10:00
Nyall Dawson
38850bdb94 [pyqgis] Ensure that multiline param tags are indented for additional lines 2018-05-27 18:54:09 +10:00
Nyall Dawson
c864d22d1f Add "get ..." to doxygen compliance blacklist
Should be "gets ..." for consistent tense, or better yet
"returns ..." for consistency.
2018-05-27 14:05:06 +10:00
Nyall Dawson
4bb7f82fcb Remove some incorrect 'not available in Python bindings' notes 2018-05-26 16:51:58 +10:00