QGIS API Documentation  3.17.0-Master (a035f434f4)
qgswkbtypes.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgswkbtypes.cpp
3  ---------------
4  begin : January 2015
5  copyright : (C) 2015 by Marco Hugentobler
6  email : marco at sourcepole dot ch
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #include "qgswkbtypes.h"
19 
20 /***************************************************************************
21  * This class is considered CRITICAL and any change MUST be accompanied with
22  * full unit tests.
23  * See details in QEP #17
24  ****************************************************************************/
25 
26 
27 struct WkbEntry
28 {
29  WkbEntry( const QString &name, bool isMultiType, QgsWkbTypes::Type multiType, QgsWkbTypes::Type singleType, QgsWkbTypes::Type flatType, QgsWkbTypes::GeometryType geometryType,
30  bool hasZ, bool hasM )
31  : mName( name )
32  , mIsMultiType( isMultiType )
33  , mMultiType( multiType )
34  , mSingleType( singleType )
35  , mFlatType( flatType )
36  , mGeometryType( geometryType )
37  , mHasZ( hasZ )
38  , mHasM( hasM )
39  {}
40  QString mName;
46  bool mHasZ;
47  bool mHasM;
48 };
49 
50 typedef QMap<QgsWkbTypes::Type, WkbEntry> WkbEntries;
51 
53 {
54  //register the known wkb types
57  //point
63  //linestring
69  //circularstring
74  //compoundcurve
79  //polygon
85  //triangle
90  //curvepolygon
95  //multipoint
101  //multiline
107  //multicurve
112  //multipolygon
118  //multisurface
123  //geometrycollection
128 } ) )
129 
130 QgsWkbTypes::Type QgsWkbTypes::parseType( const QString &wktStr )
131 {
132  QString typestr = wktStr.left( wktStr.indexOf( '(' ) ).simplified().remove( ' ' );
133 
134  QMap<QgsWkbTypes::Type, WkbEntry>::const_iterator it = sWkbEntries()->constBegin();
135  for ( ; it != sWkbEntries()->constEnd(); ++it )
136  {
137  if ( it.value().mName.compare( typestr, Qt::CaseInsensitive ) == 0 )
138  {
139  return it.key();
140  }
141  }
142  return Unknown;
143 }
144 
146 {
147  QMap< Type, WkbEntry >::const_iterator it = sWkbEntries()->constFind( type );
148  if ( it == sWkbEntries()->constEnd() )
149  {
150  return QString();
151  }
152  return it->mName;
153 }
154 
156 {
157  switch ( type )
158  {
159  case Unknown: return QObject::tr( "Unknown" );
160  case Point: return QObject::tr( "Point" );
161  case LineString: return QObject::tr( "LineString" );
162  case Polygon: return QObject::tr( "Polygon" );
163  case Triangle: return QObject::tr( "Triangle" );
164  case MultiPoint: return QObject::tr( "MultiPoint" );
165  case MultiLineString: return QObject::tr( "MultiLine" );
166  case MultiPolygon: return QObject::tr( "MultiPolygon" );
167  case GeometryCollection: return QObject::tr( "GeometryCollection" );
168  case CircularString: return QObject::tr( "CircularString" );
169  case CompoundCurve: return QObject::tr( "CompoundCurve" );
170  case CurvePolygon: return QObject::tr( "CurvePolygon" );
171  case MultiCurve: return QObject::tr( "MultiCurve" );
172  case MultiSurface: return QObject::tr( "MultiSurface" );
173  case NoGeometry: return QObject::tr( "No Geometry" );
174  case PointZ: return QObject::tr( "PointZ" );
175  case LineStringZ: return QObject::tr( "LineStringZ" );
176  case PolygonZ: return QObject::tr( "PolygonZ" );
177  case TriangleZ: return QObject::tr( "TriangleZ" );
178  case MultiPointZ: return QObject::tr( "MultiPointZ" );
179  case MultiLineStringZ: return QObject::tr( "MultiLineZ" );
180  case MultiPolygonZ: return QObject::tr( "MultiPolygonZ" );
181  case GeometryCollectionZ: return QObject::tr( "GeometryCollectionZ" );
182  case CircularStringZ: return QObject::tr( "CircularStringZ" );
183  case CompoundCurveZ: return QObject::tr( "CompoundCurveZ" );
184  case CurvePolygonZ: return QObject::tr( "CurvePolygonZ" );
185  case MultiCurveZ: return QObject::tr( "MultiCurveZ" );
186  case MultiSurfaceZ: return QObject::tr( "MultiSurfaceZ" );
187  case PointM: return QObject::tr( "PointM" );
188  case LineStringM: return QObject::tr( "LineStringM" );
189  case PolygonM: return QObject::tr( "PolygonM" );
190  case TriangleM: return QObject::tr( "TriangleM" );
191  case MultiPointM: return QObject::tr( "MultiPointM" );
192  case MultiLineStringM: return QObject::tr( "MultiLineStringM" );
193  case MultiPolygonM: return QObject::tr( "MultiPolygonM" );
194  case GeometryCollectionM: return QObject::tr( "GeometryCollectionM" );
195  case CircularStringM: return QObject::tr( "CircularStringM" );
196  case CompoundCurveM: return QObject::tr( "CompoundCurveM" );
197  case CurvePolygonM: return QObject::tr( "CurvePolygonM" );
198  case MultiCurveM: return QObject::tr( "MultiCurveM" );
199  case MultiSurfaceM: return QObject::tr( "MultiSurfaceM" );
200  case PointZM: return QObject::tr( "PointZM" );
201  case LineStringZM: return QObject::tr( "LineStringZM" );
202  case PolygonZM: return QObject::tr( "PolygonZM" );
203  case MultiPointZM: return QObject::tr( "MultiPointZM" );
204  case MultiLineStringZM: return QObject::tr( "MultiLineZM" );
205  case MultiPolygonZM: return QObject::tr( "MultiPolygonZM" );
206  case GeometryCollectionZM: return QObject::tr( "GeometryCollectionZM" );
207  case CircularStringZM: return QObject::tr( "CircularStringZM" );
208  case CompoundCurveZM: return QObject::tr( "CompoundCurveZM" );
209  case CurvePolygonZM: return QObject::tr( "CurvePolygonZM" );
210  case MultiCurveZM: return QObject::tr( "MultiCurveZM" );
211  case MultiSurfaceZM: return QObject::tr( "MultiSurfaceZM" );
212  case TriangleZM: return QObject::tr( "TriangleZM" );
213  case Point25D: return QObject::tr( "Point25D" );
214  case LineString25D: return QObject::tr( "LineString25D" );
215  case Polygon25D: return QObject::tr( "Polygon25D" );
216  case MultiPoint25D: return QObject::tr( "MultiPoint25D" );
217  case MultiLineString25D: return QObject::tr( "MultiLineString25D" );
218  case MultiPolygon25D: return QObject::tr( "MultiPolygon25D" );
219  }
220  return QString();
221 }
222 
224 {
225 
226  switch ( type )
227  {
228  case PointGeometry:
229  return QStringLiteral( "Point" );
230  case LineGeometry:
231  return QStringLiteral( "Line" );
232  case PolygonGeometry:
233  return QStringLiteral( "Polygon" );
234  case UnknownGeometry:
235  return QStringLiteral( "Unknown geometry" );
236  case NullGeometry:
237  return QStringLiteral( "No geometry" );
238  default:
239  return QStringLiteral( "Invalid type" );
240  }
241 
242 
243 }
244 
245 /***************************************************************************
246  * This class is considered CRITICAL and any change MUST be accompanied with
247  * full unit tests.
248  * See details in QEP #17
249  ****************************************************************************/
bool mHasZ
Definition: qgswkbtypes.cpp:46
static Type parseType(const QString &wktStr)
Attempts to extract the WKB type from a WKT string.
static QString geometryDisplayString(GeometryType type) SIP_HOLDGIL
Returns a display string for a geometry type.
Type
The WKB type describes the number of dimensions a geometry has.
Definition: qgswkbtypes.h:69
bool mIsMultiType
Definition: qgswkbtypes.cpp:41
QString mName
Definition: qgswkbtypes.cpp:40
GeometryType
The geometry types are used to group QgsWkbTypes::Type in a coarse way.
Definition: qgswkbtypes.h:140
bool mHasM
Definition: qgswkbtypes.cpp:47
static QString translatedDisplayString(Type type) SIP_HOLDGIL
Returns a translated display string type for a WKB type, e.g., the geometry name used in WKT geometry...
QgsWkbTypes::Type mSingleType
Definition: qgswkbtypes.cpp:43
QgsWkbTypes::Type mFlatType
Definition: qgswkbtypes.cpp:44
QgsWkbTypes::GeometryType mGeometryType
Definition: qgswkbtypes.cpp:45
static QString displayString(Type type) SIP_HOLDGIL
Returns a non-translated display string type for a WKB type, e.g., the geometry name used in WKT geom...
QgsWkbTypes::Type mMultiType
Definition: qgswkbtypes.cpp:42
QMap< QgsWkbTypes::Type, WkbEntry > WkbEntries
Definition: qgswkbtypes.cpp:50
Q_GLOBAL_STATIC_WITH_ARGS(WkbEntries, sWkbEntries,({ { QgsWkbTypes::Unknown, WkbEntry(QLatin1String("Unknown"), false, QgsWkbTypes::Unknown, QgsWkbTypes::Unknown, QgsWkbTypes::Unknown, QgsWkbTypes::UnknownGeometry, false, false) }, { QgsWkbTypes::NoGeometry, WkbEntry(QLatin1String("NoGeometry"), false, QgsWkbTypes::NoGeometry, QgsWkbTypes::NoGeometry, QgsWkbTypes::NoGeometry, QgsWkbTypes::NullGeometry, false, false) }, {QgsWkbTypes::Point, WkbEntry(QLatin1String("Point"), false, QgsWkbTypes::MultiPoint, QgsWkbTypes::Point, QgsWkbTypes::Point, QgsWkbTypes::PointGeometry, false, false) }, {QgsWkbTypes::PointZ, WkbEntry(QLatin1String("PointZ"), false, QgsWkbTypes::MultiPointZ, QgsWkbTypes::PointZ, QgsWkbTypes::Point, QgsWkbTypes::PointGeometry, true, false) }, {QgsWkbTypes::PointM, WkbEntry(QLatin1String("PointM"), false, QgsWkbTypes::MultiPointM, QgsWkbTypes::PointM, QgsWkbTypes::Point, QgsWkbTypes::PointGeometry, false, true) }, {QgsWkbTypes::PointZM, WkbEntry(QLatin1String("PointZM"), false, QgsWkbTypes::MultiPointZM, QgsWkbTypes::PointZM, QgsWkbTypes::Point, QgsWkbTypes::PointGeometry, true, true) }, {QgsWkbTypes::Point25D, WkbEntry(QLatin1String("Point25D"), false, QgsWkbTypes::MultiPoint25D, QgsWkbTypes::Point25D, QgsWkbTypes::Point, QgsWkbTypes::PointGeometry, true, false) }, { QgsWkbTypes::LineString, WkbEntry(QLatin1String("LineString"), false, QgsWkbTypes::MultiLineString, QgsWkbTypes::LineString, QgsWkbTypes::LineString, QgsWkbTypes::LineGeometry, false, false) }, { QgsWkbTypes::LineStringZ, WkbEntry(QLatin1String("LineStringZ"), false, QgsWkbTypes::MultiLineStringZ, QgsWkbTypes::LineStringZ, QgsWkbTypes::LineString, QgsWkbTypes::LineGeometry, true, false) }, { QgsWkbTypes::LineStringM, WkbEntry(QLatin1String("LineStringM"), false, QgsWkbTypes::MultiLineStringM, QgsWkbTypes::LineStringM, QgsWkbTypes::LineString, QgsWkbTypes::LineGeometry, false, true) }, { QgsWkbTypes::LineStringZM, WkbEntry(QLatin1String("LineStringZM"), false, QgsWkbTypes::MultiLineStringZM, QgsWkbTypes::LineStringZM, QgsWkbTypes::LineString, QgsWkbTypes::LineGeometry, true, true) }, { QgsWkbTypes::LineString25D, WkbEntry(QLatin1String("LineString25D"), false, QgsWkbTypes::MultiLineString25D, QgsWkbTypes::LineString25D, QgsWkbTypes::LineString, QgsWkbTypes::LineGeometry, true, false) }, { QgsWkbTypes::CircularString, WkbEntry(QLatin1String("CircularString"), false, QgsWkbTypes::MultiCurve, QgsWkbTypes::CircularString, QgsWkbTypes::CircularString, QgsWkbTypes::LineGeometry, false, false) }, { QgsWkbTypes::CircularStringZ, WkbEntry(QLatin1String("CircularStringZ"), false, QgsWkbTypes::MultiCurveZ, QgsWkbTypes::CircularStringZ, QgsWkbTypes::CircularString, QgsWkbTypes::LineGeometry, true, false) }, { QgsWkbTypes::CircularStringM, WkbEntry(QLatin1String("CircularStringM"), false, QgsWkbTypes::MultiCurveM, QgsWkbTypes::CircularStringM, QgsWkbTypes::CircularString, QgsWkbTypes::LineGeometry, false, true) }, { QgsWkbTypes::CircularStringZM, WkbEntry(QLatin1String("CircularStringZM"), false, QgsWkbTypes::MultiCurveZM, QgsWkbTypes::CircularStringZM, QgsWkbTypes::CircularString, QgsWkbTypes::LineGeometry, true, true) }, { QgsWkbTypes::CompoundCurve, WkbEntry(QLatin1String("CompoundCurve"), false, QgsWkbTypes::MultiCurve, QgsWkbTypes::CompoundCurve, QgsWkbTypes::CompoundCurve, QgsWkbTypes::LineGeometry, false, false) }, { QgsWkbTypes::CompoundCurveZ, WkbEntry(QLatin1String("CompoundCurveZ"), false, QgsWkbTypes::MultiCurveZ, QgsWkbTypes::CompoundCurveZ, QgsWkbTypes::CompoundCurve, QgsWkbTypes::LineGeometry, true, false) }, { QgsWkbTypes::CompoundCurveM, WkbEntry(QLatin1String("CompoundCurveM"), false, QgsWkbTypes::MultiCurveM, QgsWkbTypes::CompoundCurveM, QgsWkbTypes::CompoundCurve, QgsWkbTypes::LineGeometry, false, true) }, { QgsWkbTypes::CompoundCurveZM, WkbEntry(QLatin1String("CompoundCurveZM"), false, QgsWkbTypes::MultiCurveZM, QgsWkbTypes::CompoundCurveZM, QgsWkbTypes::CompoundCurve, QgsWkbTypes::LineGeometry, true, true) }, { QgsWkbTypes::Polygon, WkbEntry(QLatin1String("Polygon"), false, QgsWkbTypes::MultiPolygon, QgsWkbTypes::Polygon, QgsWkbTypes::Polygon, QgsWkbTypes::PolygonGeometry, false, false) }, { QgsWkbTypes::PolygonZ, WkbEntry(QLatin1String("PolygonZ"), false, QgsWkbTypes::MultiPolygonZ, QgsWkbTypes::PolygonZ, QgsWkbTypes::Polygon, QgsWkbTypes::PolygonGeometry, true, false) }, { QgsWkbTypes::PolygonM, WkbEntry(QLatin1String("PolygonM"), false, QgsWkbTypes::MultiPolygonM, QgsWkbTypes::PolygonM, QgsWkbTypes::Polygon, QgsWkbTypes::PolygonGeometry, false, true) }, { QgsWkbTypes::PolygonZM, WkbEntry(QLatin1String("PolygonZM"), false, QgsWkbTypes::MultiPolygonZM, QgsWkbTypes::PolygonZM, QgsWkbTypes::Polygon, QgsWkbTypes::PolygonGeometry, true, true) }, { QgsWkbTypes::Polygon25D, WkbEntry(QLatin1String("Polygon25D"), false, QgsWkbTypes::MultiPolygon25D, QgsWkbTypes::Polygon25D, QgsWkbTypes::Polygon, QgsWkbTypes::PolygonGeometry, true, false) }, { QgsWkbTypes::Triangle, WkbEntry(QLatin1String("Triangle"), false, QgsWkbTypes::Unknown, QgsWkbTypes::Triangle, QgsWkbTypes::Triangle, QgsWkbTypes::PolygonGeometry, false, false) }, { QgsWkbTypes::TriangleZ, WkbEntry(QLatin1String("TriangleZ"), false, QgsWkbTypes::Unknown, QgsWkbTypes::TriangleZ, QgsWkbTypes::Triangle, QgsWkbTypes::PolygonGeometry, true, false) }, { QgsWkbTypes::TriangleM, WkbEntry(QLatin1String("TriangleM"), false, QgsWkbTypes::Unknown, QgsWkbTypes::TriangleM, QgsWkbTypes::Triangle, QgsWkbTypes::PolygonGeometry, false, true) }, { QgsWkbTypes::TriangleZM, WkbEntry(QLatin1String("TriangleZM"), false, QgsWkbTypes::Unknown, QgsWkbTypes::TriangleZM, QgsWkbTypes::Triangle, QgsWkbTypes::PolygonGeometry, true, true) }, { QgsWkbTypes::CurvePolygon, WkbEntry(QLatin1String("CurvePolygon"), false, QgsWkbTypes::MultiSurface, QgsWkbTypes::CurvePolygon, QgsWkbTypes::CurvePolygon, QgsWkbTypes::PolygonGeometry, false, false) }, { QgsWkbTypes::CurvePolygonZ, WkbEntry(QLatin1String("CurvePolygonZ"), false, QgsWkbTypes::MultiSurfaceZ, QgsWkbTypes::CurvePolygonZ, QgsWkbTypes::CurvePolygon, QgsWkbTypes::PolygonGeometry, true, false) }, { QgsWkbTypes::CurvePolygonM, WkbEntry(QLatin1String("CurvePolygonM"), false, QgsWkbTypes::MultiSurfaceM, QgsWkbTypes::CurvePolygonM, QgsWkbTypes::CurvePolygon, QgsWkbTypes::PolygonGeometry, false, true) }, { QgsWkbTypes::CurvePolygonZM, WkbEntry(QLatin1String("CurvePolygonZM"), false, QgsWkbTypes::MultiSurfaceZM, QgsWkbTypes::CurvePolygonZM, QgsWkbTypes::CurvePolygon, QgsWkbTypes::PolygonGeometry, true, true) }, { QgsWkbTypes::MultiPoint, WkbEntry(QLatin1String("MultiPoint"), true, QgsWkbTypes::MultiPoint, QgsWkbTypes::Point, QgsWkbTypes::MultiPoint, QgsWkbTypes::PointGeometry, false, false) }, { QgsWkbTypes::MultiPointZ, WkbEntry(QLatin1String("MultiPointZ"), true, QgsWkbTypes::MultiPointZ, QgsWkbTypes::PointZ, QgsWkbTypes::MultiPoint, QgsWkbTypes::PointGeometry, true, false) }, { QgsWkbTypes::MultiPointM, WkbEntry(QLatin1String("MultiPointM"), true, QgsWkbTypes::MultiPointM, QgsWkbTypes::PointM, QgsWkbTypes::MultiPoint, QgsWkbTypes::PointGeometry, false, true) }, { QgsWkbTypes::MultiPointZM, WkbEntry(QLatin1String("MultiPointZM"), true, QgsWkbTypes::MultiPointZM, QgsWkbTypes::PointZM, QgsWkbTypes::MultiPoint, QgsWkbTypes::PointGeometry, true, true) }, { QgsWkbTypes::MultiPoint25D, WkbEntry(QLatin1String("MultiPoint25D"), true, QgsWkbTypes::MultiPoint25D, QgsWkbTypes::Point25D, QgsWkbTypes::MultiPoint, QgsWkbTypes::PointGeometry, true, false) }, { QgsWkbTypes::MultiLineString, WkbEntry(QLatin1String("MultiLineString"), true, QgsWkbTypes::MultiLineString, QgsWkbTypes::LineString, QgsWkbTypes::MultiLineString, QgsWkbTypes::LineGeometry, false, false) }, { QgsWkbTypes::MultiLineStringZ, WkbEntry(QLatin1String("MultiLineStringZ"), true, QgsWkbTypes::MultiLineStringZ, QgsWkbTypes::LineStringZ, QgsWkbTypes::MultiLineString, QgsWkbTypes::LineGeometry, true, false) }, { QgsWkbTypes::MultiLineStringM, WkbEntry(QLatin1String("MultiLineStringM"), true, QgsWkbTypes::MultiLineStringM, QgsWkbTypes::LineStringM, QgsWkbTypes::MultiLineString, QgsWkbTypes::LineGeometry, false, true) }, { QgsWkbTypes::MultiLineStringZM, WkbEntry(QLatin1String("MultiLineStringZM"), true, QgsWkbTypes::MultiLineStringZM, QgsWkbTypes::LineStringZM, QgsWkbTypes::MultiLineString, QgsWkbTypes::LineGeometry, true, true) }, { QgsWkbTypes::MultiLineString25D, WkbEntry(QLatin1String("MultiLineString25D"), true, QgsWkbTypes::MultiLineString25D, QgsWkbTypes::LineString25D, QgsWkbTypes::MultiLineString, QgsWkbTypes::LineGeometry, true, false) }, { QgsWkbTypes::MultiCurve, WkbEntry(QLatin1String("MultiCurve"), true, QgsWkbTypes::MultiCurve, QgsWkbTypes::CompoundCurve, QgsWkbTypes::MultiCurve, QgsWkbTypes::LineGeometry, false, false) }, { QgsWkbTypes::MultiCurveZ, WkbEntry(QLatin1String("MultiCurveZ"), true, QgsWkbTypes::MultiCurveZ, QgsWkbTypes::CompoundCurveZ, QgsWkbTypes::MultiCurve, QgsWkbTypes::LineGeometry, true, false) }, { QgsWkbTypes::MultiCurveM, WkbEntry(QLatin1String("MultiCurveM"), true, QgsWkbTypes::MultiCurveM, QgsWkbTypes::CompoundCurveM, QgsWkbTypes::MultiCurve, QgsWkbTypes::LineGeometry, false, true) }, { QgsWkbTypes::MultiCurveZM, WkbEntry(QLatin1String("MultiCurveZM"), true, QgsWkbTypes::MultiCurveZM, QgsWkbTypes::CompoundCurveZM, QgsWkbTypes::MultiCurve, QgsWkbTypes::LineGeometry, true, true) }, { QgsWkbTypes::MultiPolygon, WkbEntry(QLatin1String("MultiPolygon"), true, QgsWkbTypes::MultiPolygon, QgsWkbTypes::Polygon, QgsWkbTypes::MultiPolygon, QgsWkbTypes::PolygonGeometry, false, false) }, { QgsWkbTypes::MultiPolygonZ, WkbEntry(QLatin1String("MultiPolygonZ"), true, QgsWkbTypes::MultiPolygonZ, QgsWkbTypes::PolygonZ, QgsWkbTypes::MultiPolygon, QgsWkbTypes::PolygonGeometry, true, false) }, { QgsWkbTypes::MultiPolygonM, WkbEntry(QLatin1String("MultiPolygonM"), true, QgsWkbTypes::MultiPolygonM, QgsWkbTypes::PolygonM, QgsWkbTypes::MultiPolygon, QgsWkbTypes::PolygonGeometry, false, true) }, { QgsWkbTypes::MultiPolygonZM, WkbEntry(QLatin1String("MultiPolygonZM"), true, QgsWkbTypes::MultiPolygonZM, QgsWkbTypes::PolygonZM, QgsWkbTypes::MultiPolygon, QgsWkbTypes::PolygonGeometry, true, true) }, { QgsWkbTypes::MultiPolygon25D, WkbEntry(QLatin1String("MultiPolygon25D"), true, QgsWkbTypes::MultiPolygon25D, QgsWkbTypes::Polygon25D, QgsWkbTypes::MultiPolygon, QgsWkbTypes::PolygonGeometry, true, false) }, { QgsWkbTypes::MultiSurface, WkbEntry(QLatin1String("MultiSurface"), true, QgsWkbTypes::MultiSurface, QgsWkbTypes::CurvePolygon, QgsWkbTypes::MultiSurface, QgsWkbTypes::PolygonGeometry, false, false) }, { QgsWkbTypes::MultiSurfaceZ, WkbEntry(QLatin1String("MultiSurfaceZ"), true, QgsWkbTypes::MultiSurfaceZ, QgsWkbTypes::CurvePolygonZ, QgsWkbTypes::MultiSurface, QgsWkbTypes::PolygonGeometry, true, false) }, { QgsWkbTypes::MultiSurfaceM, WkbEntry(QLatin1String("MultiSurfaceM"), true, QgsWkbTypes::MultiSurfaceM, QgsWkbTypes::CurvePolygonM, QgsWkbTypes::MultiSurface, QgsWkbTypes::PolygonGeometry, false, true) }, { QgsWkbTypes::MultiSurfaceZM, WkbEntry(QLatin1String("MultiSurfaceZM"), true, QgsWkbTypes::MultiSurfaceZM, QgsWkbTypes::CurvePolygonZM, QgsWkbTypes::MultiSurface, QgsWkbTypes::PolygonGeometry, true, true) }, { QgsWkbTypes::GeometryCollection, WkbEntry(QLatin1String("GeometryCollection"), true, QgsWkbTypes::GeometryCollection, QgsWkbTypes::Unknown, QgsWkbTypes::GeometryCollection, QgsWkbTypes::UnknownGeometry, false, false) }, { QgsWkbTypes::GeometryCollectionZ, WkbEntry(QLatin1String("GeometryCollectionZ"), true, QgsWkbTypes::GeometryCollectionZ, QgsWkbTypes::Unknown, QgsWkbTypes::GeometryCollection, QgsWkbTypes::UnknownGeometry, true, false) }, { QgsWkbTypes::GeometryCollectionM, WkbEntry(QLatin1String("GeometryCollectionM"), true, QgsWkbTypes::GeometryCollectionM, QgsWkbTypes::Unknown, QgsWkbTypes::GeometryCollection, QgsWkbTypes::UnknownGeometry, false, true) }, { QgsWkbTypes::GeometryCollectionZM, WkbEntry(QLatin1String("GeometryCollectionZM"), true, QgsWkbTypes::GeometryCollectionZM, QgsWkbTypes::Unknown, QgsWkbTypes::GeometryCollection, QgsWkbTypes::UnknownGeometry, true, true) }, })) QgsWkbTypes
Definition: qgswkbtypes.cpp:52
WkbEntry(const QString &name, bool isMultiType, QgsWkbTypes::Type multiType, QgsWkbTypes::Type singleType, QgsWkbTypes::Type flatType, QgsWkbTypes::GeometryType geometryType, bool hasZ, bool hasM)
Definition: qgswkbtypes.cpp:29