365 Commits

Author SHA1 Message Date
Nyall Dawson
d5626d9236 Remove geos include from qgsgeometry.h
Avoids the need to include geos from some build targets
2018-04-26 17:28:59 +12:00
Nyall Dawson
70b67c6150 Add some more line segment methods 2018-04-24 10:07:51 +12:00
Nyall Dawson
8f1d1a31c9 Add reverse method to QgsLineSegment2D 2018-04-24 10:07:51 +12:00
Nyall Dawson
646b4af057 Add left of line test to QgsLineSegment2D 2018-04-24 10:07:51 +12:00
Nyall Dawson
c6a50fe772 Add QgsLineSegment2D class, for simple 2d line segments which
consist of just a 2D start and end point
2018-04-24 10:07:51 +12:00
Nyall Dawson
e047738981 Add QgsGeometry method to create wedge shaped buffers
Creates a wedge shaped buffer using circular strings, with
parameters for azimuth, wedge width (in degrees), outer radius
and inner radius.
2018-04-24 10:07:51 +12:00
Nyall Dawson
9a6d966d35 Allow using the longer arc with two point and center methods 2018-04-24 10:07:51 +12:00
Nyall Dawson
732d6bb475 Add convenience constructors to create QgsCircularStrings
Add constructors to create a circular string with a single arc:
- from 3 points on arc
- from 2 points and a center
2018-04-24 10:07:51 +12:00
Nyall Dawson
3f3b9515ef Add convenience constructor to create QgsLineString between two points 2018-04-24 10:07:51 +12:00
Nyall Dawson
fbf6b4a383 Add geometry method to calculate mid point on an arc from p1->p2 with given center
And improve some docstrings
2018-04-24 10:07:51 +12:00
Loïc Bartoletti
2702a3092f Fix warn doc 2018-04-21 08:16:14 +10:00
Loïc Bartoletti
0bacf0ff16 - Add some methods in QgsVector3D
- Move QgsVector3D from 3d to core
- Use QgsVector3D instead of QVector3D
2018-04-21 08:16:14 +10:00
Loïc Bartoletti
9d649e738a Add skewLines intersection algorithm 2018-04-21 08:16:14 +10:00
Martin Dobias
45b264db08 Fixes after review 2018-04-18 13:04:05 +02:00
Nyall Dawson
37295ec48e Expose extra arguments to QgsGeometry::transform
Previously these were only available via the raw QgsAbstractGeometry
API.

Also add more unit tests for QgsGeometry::transform
2018-04-10 17:49:18 +10:00
Nyall Dawson
2e7455c180 Add some geometry utils for interpolating points on lines 2018-04-06 12:43:52 +10:00
Nyall Dawson
63c5e74946 Fix clazy pass small and trivially copyable object by value warnings 2018-04-05 06:35:13 +10:00
Nyall Dawson
1ea20a4b35 Add method to swap x/y coordinates in geometries
This can be used to repair geometries which have
accidentally had their latitude and longitude coordinates
reversed.
2018-04-05 06:35:13 +10:00
Juergen E. Fischer
fcacb0db7c doxygen fixes 2018-04-02 22:48:40 +02:00
Nyall Dawson
f02602b9bb [needs-docs] geometry smooth algorithm now also retains and smooths z/m values
...instead of just discarding them

Applies to processing algorithm and expression function (and
QgsGeometry::smooth method)
2018-03-30 08:59:00 +11:00
Nyall Dawson
5d4e1bb31f Add intersection/tangent methods to QgsCircle 2018-03-29 17:40:40 +11:00
Nyall Dawson
1efb3cb9b0 Add missing /Out/ annotations 2018-03-27 17:34:24 +10:00
Nyall Dawson
4bfc808ee6 Add some circle intersection and tangent utilities to QgsGeometryUtils 2018-03-27 17:44:25 +11:00
Alessandro Pasotti
84bdc92a8c Add axisOrder to QgsAbstractGeometry GML generators 2018-03-20 13:04:17 +01:00
Nyall Dawson
6c179059a5 Add straightDistance2d and sinuosity measures to QgsCurve 2018-03-12 14:58:04 +11:00
Nyall Dawson
6bd7600aa3 Expose segmentization parameters to QgsGeometry::convertToStraightSegment 2018-03-04 12:10:27 +10:00
Matthias Kuhn
fc5073ddb0 Documentation fix 2018-03-02 12:44:02 -05:00
Nyall Dawson
3ffbd84f5f Add a bounding box intersection test to QgsGeometry
We only previously had methods for exact intersections - this
commit adds a new QgsGeometry.boundingBoxIntersects() method
which can be used to test if just the bounding boxes of
geometries/rectangles intersect.

It's fast, and doesn't care about invalid geometries (unlike
the exact intersects checks)
2018-02-20 13:20:38 +10:00
Nyall Dawson
3d4f6f82bb Followup 0548f4, fixes to layer metadata and metadata widget
Address outstanding review requests so that this PR can be merged
2018-02-20 11:10:55 +10:00
Blottiere Paul
a6a3e0b1d4 Fix spelling check and sip binding 2018-02-16 10:06:42 +00:00
Blottiere Paul
35d0f57807 Update documentation 2018-02-16 10:06:42 +00:00
Blottiere Paul
76a57b8345 The first point in 3D is used to propagate Z dimension 2018-02-16 10:06:42 +00:00
Nyall Dawson
ff7bb9aa53 Remove inefficient method for creating empty geometry of same
WKB type, and use optimized method instead

Refs #17809
2018-02-12 08:56:12 +10:00
Nyall Dawson
65827adc7d Provide an optimised constructor for a null QgsRectangle
This is used a lot, yet the current constructor calls the
normalize() method which does a bunch of operations for no
result.

So instead provide a simple optimised null QgsRectangle
constructor and save a lot of cycles.

Refs #17809
2018-02-12 08:56:12 +10:00
Denis Rouzaud
0e7cea2244 QgsGeometryUtils: rename 2 methods
- projPointOnSegment has been renamed to projectPointOnSegment
- getSelfIntersections has been renamed to selfIntersections
2018-01-24 03:38:59 -09:00
Denis Rouzaud
0cc29569f5 reformulate doxymentation 2018-01-23 21:28:00 -04:00
Denis Rouzaud
6a2a626926 move QgsCadUtils::lineCircleIntersection to QgsGeometryUtils
also add a test
2018-01-23 15:01:10 -09:00
Denis Rouzaud
7722010ca8 rename *.sip to *.sip.in for the auto generated sip files 2018-01-17 10:16:37 -04:00
Denis Rouzaud
6d94ac9c6c run sipify 2018-01-12 21:10:16 -04:00
Denis Rouzaud
d87c60512c [sipify] fix bad handling of \see within sentences
and other docstrings improvements
2018-01-09 21:40:10 -04:00
Denis Rouzaud
5babec5e07 run sipify 2018-01-09 11:40:39 -04:00
Nyall Dawson
164c439af9 Add missing docs 2018-01-05 10:03:52 +10:00
Nyall Dawson
2d43dac0b5 Refine behavior of QgsGeometry equals tests
Before we had two checks - equals() and isGeosEqual() which
performed the exact same check (since equals() called the geos
equality test)

Since the geos equality test is a slow, topological test, which
considers two geometries equal if their component edges overlap,
but disregards ordering of vertices this is not always what we
want. There's also the issue that geos cannot consider m values
when testing the geometries, so two geometries with different
m values would be reported equal.

So, now calling QgsGeometry::equals performs a very fast, strict
equality test where geometries are only equal if the have exactly
the same vertices, type, and order.

And swap most code which was calling the slow geos test to instead
use the fast strict native test.
2018-01-05 09:59:22 +10:00
Nyall Dawson
13aa5211d1 Expand equality operators for QgsAbstractGeometry subclasses 2018-01-05 09:37:27 +10:00
Nyall Dawson
6ac6939bf8 Sipify 2017-12-23 14:21:32 +10:00
Nyall Dawson
4ff72de62e
Merge pull request #5858 from lbartoletti/segment_intersection
Segment intersection
2017-12-22 21:43:13 +11:00
Denis Rouzaud
5dc9b5869a fix empty lines with spaces 2017-12-19 21:17:29 -04:00
Denis Rouzaud
64c99e054c run sipify for code snippets 2017-12-19 21:17:29 -04:00
Denis Rouzaud
90e5196996 run sipify 2017-12-19 14:55:46 -04:00
Denis Rouzaud
be8d1d7782 run sipify 2017-12-16 10:45:52 -04:00