63 Commits

Author SHA1 Message Date
Matthias Kuhn
e351d24a7d More types support for QgsVectorFileWriter 2016-01-12 12:58:47 +01:00
Nyall Dawson
881074b194 Boost coverage of SIP bindings
Now all classes and members are either exposed to bindings or marked
as "not available in Python bindings" in the docs.

Drop test thresholds to 0. Now it should be much easier to determine
what missing members have been added which are causing test
failures.
2016-01-05 11:16:15 +11:00
Juergen E. Fischer
71dc339106 more stl to qt ports and size_t => int fixups 2015-12-26 00:59:09 +01:00
Nyall Dawson
6122f0462d Remove unimplemented QgsSurfaceV2::pointOnSurface method
Was always returning a point not on the surface! (0,0). Use the
GEOS method instead.
2015-12-22 16:50:37 +11:00
Nyall Dawson
85eebff69b Avoid some unnecessary object conversion during point rendering 2015-12-15 22:36:49 +11:00
Nyall Dawson
4e18d54555 Tests and fixes for QgsPolygonV2
- Setting exterior ring will force all interior rings to match
dimensionality of exterior ring
- add equality operator
- use correct WKB types for rings when creating polygon from WKB
- segmentize curves when setting exterior ring with curved segments
- fix export to GML2/3 (should use LinearRing, not LineString as
ring element tag)
2015-12-15 22:36:41 +11:00
Nyall Dawson
c176e3f41e Fix documentation test failure 2015-12-11 19:30:15 +11:00
Nyall Dawson
233f67b419 QgsPolygonV2 tests and fixes
- fixes for handling Polygon25D
- add QgsAbstractGeometryV2::convertTo( QgsWKBTypes::Type type ) for
easy conversion between geometry types
- fix crash when calculating perimeter with no exterior ring
- ensure that added rings respect dimensionality of polygon (avoids
issues such as polygons with z having a ring without z, or a
Polygon25D with LineStringZ rings)
- if a curved ring is added to a polygon then a segmentized version
of the ring is used (can't have a Polygon with a CircularString
ring)
- when calling setInteriorRings, make sure empty rings are skipped
and that all rings are converted to correct type for polygon
- don't crash when requesting or removing interior ring with
index < 0
2015-12-11 18:40:11 +11:00
Nyall Dawson
d2bf8d8923 Add equality operators to QgsLineStringV2 2015-12-11 18:40:11 +11:00
Nyall Dawson
d388a4f1a4 [geometry] Add method to drop z/m values from a geometry 2015-12-01 16:33:44 +11:00
Nyall Dawson
a3d780cb4e [geometry] Add method to drop z/m from wkb types 2015-12-01 16:33:13 +11:00
Nyall Dawson
7eb1133bc5 Make QgsLineStringV2::fromWkbPoints private 2015-11-27 16:32:47 +11:00
Nyall Dawson
1f33011960 Add more tests to QgsLineStringV2, fix vertexAngle calculation 2015-11-27 16:32:09 +11:00
Nyall Dawson
74ca290bd3 QgsLineStringV2 fixes
- fix incorrect centroid calculation (was always returning 0,0)
- fix closestSegment when numPoints < 2
- fix broken leftOf calculation for closestSegment
- area calculation when numPoints < 2

Plus add more unit tests
2015-11-26 16:56:30 +11:00
Nyall Dawson
f3a5dcc98b Fix build 2015-11-19 20:37:47 +11:00
Nyall Dawson
8c0fe47d8e Add tests for QgsPointV2, fix some issues:
- prevent creation of a QgsPointV2 with a non-point WKB type
- fix bounding box was not invalidated for some modification routines
- if WKT type is PointZ/M/ZM and not enough coordinates specified,
initialise extra coordinates to 0
2015-11-19 19:48:42 +11:00
Nyall Dawson
5019fe244c Add methods to directly retrieve/set coordinates for linestring nodes
Also add method to create QgsPointV2 from a QPointF
2015-11-18 21:49:02 +11:00
Nyall Dawson
86c1ffa0aa Add reversed method to QgsCurveV2
Also clean up and add missing docs for QgsLineStringV2
2015-11-18 16:24:27 +11:00
Nyall Dawson
9cfbba1647 Add rx(), ry(), ... methods to QgsPointV2, add missing docs to class
Allows for directly modifying point's coordinates in place
2015-11-18 16:24:08 +11:00
Matthias Kuhn
56ccb2b858 sipClass_Klass is deprecated for a long time: replace with sipType_Klass 2015-11-11 23:22:51 +01:00
Nyall Dawson
87168c14a5 100% test coverage for QgsWKBTypes, add missing docs 2015-11-11 19:51:42 +11:00
Nyall Dawson
719ff408a5 Add some missing SIP bindings, comment some classes as not available
in Python
2015-11-10 17:08:27 +11:00
Nyall Dawson
da942233e7 Add DE-9IM variant which tests against a specified pattern
(available in PyQGIS/expression engine)
2015-11-04 16:03:55 +11:00
Matthias Kuhn
cd0eb05ded [py3] Some compatibility fixes for python 3 2015-10-24 13:47:32 +02:00
Juergen E. Fischer
bf64f8d0a0 spelling fixes and indentation update 2015-10-22 21:56:54 +02:00
Nyall Dawson
5f1bb6cf1f Geometry fixes:
- when creating geometry from WKT, upgrade dimensionality of geometry
if coordinates are 3/4 dimensional
- match dimensionality of collections to child dimensionality
- fix area of curves was non-zero if curve is closed
- don't consider m values when testing for curve closedness
- add unit tests for closedness
- add unit tests for CircularStrings, CompoundCurves, CurvePolygon,
tests with geometries with Z/M values
2015-10-18 21:03:15 +11:00
Nyall Dawson
8c5f3f88a9 [geometry] Fix calculation of length/perimeter for collections
Split length from perimeter calculation in geometry API, as
returning perimeter for length for polygons is misleading and
results in incorrect length/perimeter calculations for mixed
geometry collections.

Enable length & perimeter unit tests against reference geometries.
Now the length & perimeter values match those calculated by
PostGIS.
2015-10-17 15:40:36 +11:00
Nyall Dawson
fab5a32d9a Fix geometry casting in python bindings (missing MultiLineString and
GeometryCollection casts)
2015-10-17 15:02:11 +11:00
Nyall Dawson
55c27ce710 Add some extra unit tests for geometry:
- Add some tests for conversion to/from WKT, using a bulk lot of testsdata
from PostGIS
- Add some tests for area/length calculation, using some test data and
results from PostGIS/geos unit tests
- Add tests for spatial relations, using test data from PostGIS. Note
that this required adding support for calculating the DE-9IM relation. I'll
expose this to users via the expression engine in 2.14.

Along the way this also fixes a number of bugs relating to WKT geometry
import, such as
- add support for alternate MultiPoint(1 1,2 2,...) format
- fix GeometryCollection to support collections with multi* children
and GeometryCollection children (allowed by spec)
2015-10-16 17:46:06 +11:00
Nyall Dawson
34dc314345 Fix exporting geometry collections to WKT
Child types were incorrectly being dropped when the collection
consisted of mixed geometry types (eg line & polygon) (refs #13608)
2015-10-16 07:48:42 +11:00
Nyall Dawson
5654eeca55 Fix area calculation when OTF active and no ellipsoid (fix #13601) 2015-10-15 17:51:07 +11:00
Nyall Dawson
a333fc8248 Add method to geometries for adding z/m dimension, initialized
to a specified value
2015-10-14 08:39:05 +11:00
Nyall Dawson
665379645f Add method to QgsWKBTypes to add z/m dimension to a wkb type
Also add some unit tests for QgsWKBTypes
2015-10-14 08:39:05 +11:00
Nyall Dawson
ad10b5264e Fix using add part tool to add part to geometryless rows
(fix #12885, #11319)

Also fix some potential crashes with edit tools and null geometry
2015-10-13 16:59:52 +11:00
Sandro Mani
c927073e20 Add some docstrings 2015-10-08 11:28:32 +02: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
Nyall Dawson
0caf944747 Misc optimisations identified by clazy:
- call reserve on container classes where applicable
- make sure Q_FOREACH uses references
- remove dynamic casts to base classes
- fix some implicit bool conversions
2015-10-05 18:43:18 +11:00
Sandro Mani
e9e638f6f4 Geometry Checker and Geometry Snapper plugins 2015-09-21 10:03:24 +02:00
Nyall Dawson
285c1d3ee1 Fix doxygen warning 2015-09-09 17:46:36 +10:00
Nyall Dawson
806da2d385 Fix QgsGeometry::insertVertex and deleteVertex compatibility with
<2.10 API and multipoint geometries

Also fix a crash in QgsGeometryCollection::removeGeometry
2015-09-09 16:11:09 +10:00
mhugent
86115435f5 Merge pull request #2290 from mhugent/geometry_marker
Geometry marker
2015-09-05 09:12:06 +02:00
Marco Hugentobler
8e1a19a9cc Documentation 2015-09-04 17:23:41 +02:00
Marco Hugentobler
56316ddcad Consider curved geometries in marker line symbol layer 2015-09-04 14:53:06 +02:00
Nyall Dawson
8ce9930f4a Fix leak in add map tool 2015-09-01 16:07:10 +10:00
Marco Hugentobler
c39ffe9fc2 [FEATURE]: Tool to add circular strings with start point, curve point and end point 2015-08-17 17:14:05 +02:00
Juergen E. Fischer
9752c468c1 indentation update 2015-07-29 11:52:14 +02:00
Marco Hugentobler
39f8bd9eb9 Add factory annotation 2015-06-25 11:34:36 +02:00
Marco Hugentobler
7b31f8a02f Remove python bindings for QgsGeos, move createGeometryEngine() from edit utils to QgsGeometry class 2015-06-25 10:45:53 +02:00
Marco Hugentobler
0bbc11b3f8 Derive MultiLineString from MultiCurve and MultiPolygon from MultiSurface 2015-06-23 13:41:14 +02:00
Nyall Dawson
c590e1ecee Hide unimplemented GeometryV2 clip methods 2015-06-22 22:20:27 +10:00