Skip to content

Commit 60f4bc5

Browse files
committedAug 2, 2019
Add QgsWkbTypes::curveType method
1 parent 37b7b84 commit 60f4bc5

File tree

3 files changed

+210
-0
lines changed

3 files changed

+210
-0
lines changed
 

‎python/core/auto_generated/geometry/qgswkbtypes.sip.in

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,18 @@ Returns the multi type for a WKB type. For example, for Polygon WKB types the mu
120120

121121
.. seealso:: :py:func:`singleType`
122122

123+
.. seealso:: :py:func:`flatType`
124+
%End
125+
126+
127+
static Type curveType( Type type );
128+
%Docstring
129+
Returns the curve type for a WKB type. For example, for Polygon WKB types the multi type would be CurvePolygon.
130+
131+
.. seealso:: :py:func:`isMultiType`
132+
133+
.. seealso:: :py:func:`singleType`
134+
123135
.. seealso:: :py:func:`flatType`
124136
%End
125137

‎src/core/geometry/qgswkbtypes.h

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,146 @@ class CORE_EXPORT QgsWkbTypes
421421
return Unknown;
422422
}
423423

424+
425+
/**
426+
* Returns the curve type for a WKB type. For example, for Polygon WKB types the multi type would be CurvePolygon.
427+
* \see isMultiType()
428+
* \see singleType()
429+
* \see flatType()
430+
*/
431+
static Type curveType( Type type )
432+
{
433+
switch ( type )
434+
{
435+
case Unknown:
436+
case Triangle:
437+
case TriangleZ:
438+
case TriangleM:
439+
case TriangleZM:
440+
return Unknown;
441+
442+
case GeometryCollection:
443+
return GeometryCollection;
444+
445+
case GeometryCollectionZ:
446+
return GeometryCollectionZ;
447+
448+
case GeometryCollectionM:
449+
return GeometryCollectionM;
450+
451+
case GeometryCollectionZM:
452+
return GeometryCollectionZM;
453+
454+
case Point:
455+
return Point;
456+
457+
case MultiPoint:
458+
return MultiPoint;
459+
460+
case PointZ:
461+
return PointZ;
462+
463+
case MultiPointZ:
464+
return MultiPointZ;
465+
466+
case PointM:
467+
return PointM;
468+
469+
case MultiPointM:
470+
return MultiPointM;
471+
472+
case PointZM:
473+
return PointZM;
474+
475+
case MultiPointZM:
476+
return MultiPointZM;
477+
478+
case LineString:
479+
case CompoundCurve:
480+
case CircularString:
481+
return CompoundCurve;
482+
483+
case MultiLineString:
484+
case MultiCurve:
485+
return MultiCurve;
486+
487+
case LineStringZ:
488+
case CompoundCurveZ:
489+
case CircularStringZ:
490+
return CompoundCurveZ;
491+
492+
case MultiLineStringZ:
493+
case MultiCurveZ:
494+
return MultiCurveZ;
495+
496+
case LineStringM:
497+
case CompoundCurveM:
498+
case CircularStringM:
499+
return CompoundCurveM;
500+
501+
case MultiLineStringM:
502+
case MultiCurveM:
503+
return MultiCurveM;
504+
505+
case LineStringZM:
506+
case CompoundCurveZM:
507+
case CircularStringZM:
508+
return CompoundCurveZM;
509+
510+
case MultiLineStringZM:
511+
case MultiCurveZM:
512+
return MultiCurveZM;
513+
514+
case Polygon:
515+
case CurvePolygon:
516+
return CurvePolygon;
517+
518+
case MultiPolygon:
519+
case MultiSurface:
520+
return MultiSurface;
521+
522+
case PolygonZ:
523+
case CurvePolygonZ:
524+
return CurvePolygonZ;
525+
526+
case MultiPolygonZ:
527+
case MultiSurfaceZ:
528+
return MultiSurfaceZ;
529+
530+
case PolygonM:
531+
case CurvePolygonM:
532+
return CurvePolygonM;
533+
534+
case MultiPolygonM:
535+
case MultiSurfaceM:
536+
return MultiSurfaceM;
537+
538+
case PolygonZM:
539+
case CurvePolygonZM:
540+
return CurvePolygonZM;
541+
542+
case MultiPolygonZM:
543+
case MultiSurfaceZM:
544+
return MultiSurfaceZM;
545+
546+
case NoGeometry:
547+
return NoGeometry;
548+
549+
case Point25D:
550+
case MultiPoint25D:
551+
return MultiPoint25D;
552+
553+
case LineString25D:
554+
case MultiLineString25D:
555+
return MultiLineString25D;
556+
557+
case Polygon25D:
558+
case MultiPolygon25D:
559+
return MultiPolygon25D;
560+
}
561+
return Unknown;
562+
}
563+
424564
/**
425565
* Returns the flat type for a WKB type. This is the WKB type minus any Z or M dimensions.
426566
* For example, for PolygonZM WKB types the single type would be Polygon.

‎tests/src/python/test_qgsgeometry.py

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2748,6 +2748,64 @@ def testWkbTypes(self):
27482748
self.assertEqual(QgsWkbTypes.multiType(QgsWkbTypes.MultiLineString25D), QgsWkbTypes.MultiLineString25D)
27492749
self.assertEqual(QgsWkbTypes.multiType(QgsWkbTypes.MultiPolygon25D), QgsWkbTypes.MultiPolygon25D)
27502750

2751+
# test curveType method
2752+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.Unknown), QgsWkbTypes.Unknown)
2753+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.Point), QgsWkbTypes.Point)
2754+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.PointZ), QgsWkbTypes.PointZ)
2755+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.PointM), QgsWkbTypes.PointM)
2756+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.PointZM), QgsWkbTypes.PointZM)
2757+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiPoint), QgsWkbTypes.MultiPoint)
2758+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiPointZ), QgsWkbTypes.MultiPointZ)
2759+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiPointM), QgsWkbTypes.MultiPointM)
2760+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiPointZM), QgsWkbTypes.MultiPointZM)
2761+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.LineString), QgsWkbTypes.CompoundCurve)
2762+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.LineStringZ), QgsWkbTypes.CompoundCurveZ)
2763+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.LineStringM), QgsWkbTypes.CompoundCurveM)
2764+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.LineStringZM), QgsWkbTypes.CompoundCurveZM)
2765+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiLineString), QgsWkbTypes.MultiCurve)
2766+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiLineStringZ), QgsWkbTypes.MultiCurveZ)
2767+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiLineStringM), QgsWkbTypes.MultiCurveM)
2768+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiLineStringZM), QgsWkbTypes.MultiCurveZM)
2769+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.Polygon), QgsWkbTypes.CurvePolygon)
2770+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.PolygonZ), QgsWkbTypes.CurvePolygonZ)
2771+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.PolygonM), QgsWkbTypes.CurvePolygonM)
2772+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.PolygonZM), QgsWkbTypes.CurvePolygonZM)
2773+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiPolygon), QgsWkbTypes.MultiSurface)
2774+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiPolygonZ), QgsWkbTypes.MultiSurfaceZ)
2775+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiPolygonM), QgsWkbTypes.MultiSurfaceM)
2776+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiPolygonZM), QgsWkbTypes.MultiSurfaceZM)
2777+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.GeometryCollection), QgsWkbTypes.GeometryCollection)
2778+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.GeometryCollectionZ), QgsWkbTypes.GeometryCollectionZ)
2779+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.GeometryCollectionM), QgsWkbTypes.GeometryCollectionM)
2780+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.GeometryCollectionZM), QgsWkbTypes.GeometryCollectionZM)
2781+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.CircularString), QgsWkbTypes.CompoundCurve)
2782+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.CircularStringZ), QgsWkbTypes.CompoundCurveZ)
2783+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.CircularStringM), QgsWkbTypes.CompoundCurveM)
2784+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.CircularStringZM), QgsWkbTypes.CompoundCurveZM)
2785+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.CompoundCurve), QgsWkbTypes.CompoundCurve)
2786+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.CompoundCurveZ), QgsWkbTypes.CompoundCurveZ)
2787+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.CompoundCurveM), QgsWkbTypes.CompoundCurveM)
2788+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.CompoundCurveZM), QgsWkbTypes.CompoundCurveZM)
2789+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.CurvePolygon), QgsWkbTypes.CurvePolygon)
2790+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.CurvePolygonZ), QgsWkbTypes.CurvePolygonZ)
2791+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.CurvePolygonM), QgsWkbTypes.CurvePolygonM)
2792+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.CurvePolygonZM), QgsWkbTypes.CurvePolygonZM)
2793+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiCurve), QgsWkbTypes.MultiCurve)
2794+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiCurveZ), QgsWkbTypes.MultiCurveZ)
2795+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiCurveM), QgsWkbTypes.MultiCurveM)
2796+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiCurveZM), QgsWkbTypes.MultiCurveZM)
2797+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiSurface), QgsWkbTypes.MultiSurface)
2798+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiSurfaceZ), QgsWkbTypes.MultiSurfaceZ)
2799+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiSurfaceM), QgsWkbTypes.MultiSurfaceM)
2800+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiSurfaceZM), QgsWkbTypes.MultiSurfaceZM)
2801+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.NoGeometry), QgsWkbTypes.NoGeometry)
2802+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.Point25D), QgsWkbTypes.MultiPoint25D)
2803+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.LineString25D), QgsWkbTypes.MultiLineString25D)
2804+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.Polygon25D), QgsWkbTypes.MultiPolygon25D)
2805+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiPoint25D), QgsWkbTypes.MultiPoint25D)
2806+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiLineString25D), QgsWkbTypes.MultiLineString25D)
2807+
self.assertEqual(QgsWkbTypes.curveType(QgsWkbTypes.MultiPolygon25D), QgsWkbTypes.MultiPolygon25D)
2808+
27512809
# test flatType method
27522810
self.assertEqual(QgsWkbTypes.flatType(QgsWkbTypes.Unknown), QgsWkbTypes.Unknown)
27532811
self.assertEqual(QgsWkbTypes.flatType(QgsWkbTypes.Point), QgsWkbTypes.Point)

0 commit comments

Comments
 (0)
Please sign in to comment.