QGIS API Documentation
4.3.0-Master (16eddb2670e)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
core
geometry
qgswkbtypes.h
Go to the documentation of this file.
1
/***************************************************************************
2
qgswkbtypes.h
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
#ifndef QGSWKBTYPES_H
19
#define QGSWKBTYPES_H
20
21
#include "
qgis.h
"
22
#include "qgis_core.h"
23
#include "
qgis_sip.h
"
24
25
#include <QMap>
26
#include <QObject>
27
#include <QString>
28
29
/***************************************************************************
30
* This class is considered CRITICAL and any change MUST be accompanied with
31
* full unit tests in testqgsstatisticalsummary.cpp.
32
* See details in QEP #17
33
****************************************************************************/
34
40
41
class
CORE_EXPORT
QgsWkbTypes
42
{
43
Q_GADGET
44
public
:
45
// clang-format off
53
static
Qgis::WkbType
singleType
(
Qgis::WkbType
type )
SIP_HOLDGIL
54
// clang-format on
55
{
56
switch
( type )
57
{
58
case
Qgis::WkbType::Unknown
:
59
case
Qgis::WkbType::GeometryCollection
:
60
case
Qgis::WkbType::GeometryCollectionZ
:
61
case
Qgis::WkbType::GeometryCollectionM
:
62
case
Qgis::WkbType::GeometryCollectionZM
:
63
return
Qgis::WkbType::Unknown
;
64
65
case
Qgis::WkbType::Point
:
66
case
Qgis::WkbType::MultiPoint
:
67
return
Qgis::WkbType::Point
;
68
69
case
Qgis::WkbType::PointZ
:
70
case
Qgis::WkbType::MultiPointZ
:
71
return
Qgis::WkbType::PointZ
;
72
73
case
Qgis::WkbType::PointM
:
74
case
Qgis::WkbType::MultiPointM
:
75
return
Qgis::WkbType::PointM
;
76
77
case
Qgis::WkbType::PointZM
:
78
case
Qgis::WkbType::MultiPointZM
:
79
return
Qgis::WkbType::PointZM
;
80
81
case
Qgis::WkbType::LineString
:
82
case
Qgis::WkbType::MultiLineString
:
83
return
Qgis::WkbType::LineString
;
84
85
case
Qgis::WkbType::LineStringZ
:
86
case
Qgis::WkbType::MultiLineStringZ
:
87
return
Qgis::WkbType::LineStringZ
;
88
89
case
Qgis::WkbType::LineStringM
:
90
case
Qgis::WkbType::MultiLineStringM
:
91
return
Qgis::WkbType::LineStringM
;
92
93
case
Qgis::WkbType::LineStringZM
:
94
case
Qgis::WkbType::MultiLineStringZM
:
95
return
Qgis::WkbType::LineStringZM
;
96
97
case
Qgis::WkbType::Polygon
:
98
case
Qgis::WkbType::MultiPolygon
:
99
return
Qgis::WkbType::Polygon
;
100
101
case
Qgis::WkbType::PolygonZ
:
102
case
Qgis::WkbType::MultiPolygonZ
:
103
return
Qgis::WkbType::PolygonZ
;
104
105
case
Qgis::WkbType::PolygonM
:
106
case
Qgis::WkbType::MultiPolygonM
:
107
return
Qgis::WkbType::PolygonM
;
108
109
case
Qgis::WkbType::PolygonZM
:
110
case
Qgis::WkbType::MultiPolygonZM
:
111
return
Qgis::WkbType::PolygonZM
;
112
113
case
Qgis::WkbType::Triangle
:
114
return
Qgis::WkbType::Triangle
;
115
116
case
Qgis::WkbType::TriangleZ
:
117
return
Qgis::WkbType::TriangleZ
;
118
119
case
Qgis::WkbType::TriangleM
:
120
return
Qgis::WkbType::TriangleM
;
121
122
case
Qgis::WkbType::TriangleZM
:
123
return
Qgis::WkbType::TriangleZM
;
124
125
case
Qgis::WkbType::CircularString
:
126
return
Qgis::WkbType::CircularString
;
127
128
case
Qgis::WkbType::CircularStringZ
:
129
return
Qgis::WkbType::CircularStringZ
;
130
131
case
Qgis::WkbType::CircularStringM
:
132
return
Qgis::WkbType::CircularStringM
;
133
134
case
Qgis::WkbType::CircularStringZM
:
135
return
Qgis::WkbType::CircularStringZM
;
136
137
case
Qgis::WkbType::NurbsCurve
:
138
return
Qgis::WkbType::NurbsCurve
;
139
140
case
Qgis::WkbType::NurbsCurveZ
:
141
return
Qgis::WkbType::NurbsCurveZ
;
142
143
case
Qgis::WkbType::NurbsCurveM
:
144
return
Qgis::WkbType::NurbsCurveM
;
145
146
case
Qgis::WkbType::NurbsCurveZM
:
147
return
Qgis::WkbType::NurbsCurveZM
;
148
149
case
Qgis::WkbType::CompoundCurve
:
150
case
Qgis::WkbType::MultiCurve
:
151
return
Qgis::WkbType::CompoundCurve
;
152
153
case
Qgis::WkbType::CompoundCurveZ
:
154
case
Qgis::WkbType::MultiCurveZ
:
155
return
Qgis::WkbType::CompoundCurveZ
;
156
157
case
Qgis::WkbType::CompoundCurveM
:
158
case
Qgis::WkbType::MultiCurveM
:
159
return
Qgis::WkbType::CompoundCurveM
;
160
161
case
Qgis::WkbType::CompoundCurveZM
:
162
case
Qgis::WkbType::MultiCurveZM
:
163
return
Qgis::WkbType::CompoundCurveZM
;
164
165
case
Qgis::WkbType::CurvePolygon
:
166
case
Qgis::WkbType::MultiSurface
:
167
return
Qgis::WkbType::CurvePolygon
;
168
169
case
Qgis::WkbType::CurvePolygonZ
:
170
case
Qgis::WkbType::MultiSurfaceZ
:
171
return
Qgis::WkbType::CurvePolygonZ
;
172
173
case
Qgis::WkbType::CurvePolygonM
:
174
case
Qgis::WkbType::MultiSurfaceM
:
175
return
Qgis::WkbType::CurvePolygonM
;
176
177
case
Qgis::WkbType::CurvePolygonZM
:
178
case
Qgis::WkbType::MultiSurfaceZM
:
179
return
Qgis::WkbType::CurvePolygonZM
;
180
181
case
Qgis::WkbType::PolyhedralSurface
:
182
return
Qgis::WkbType::PolyhedralSurface
;
183
184
case
Qgis::WkbType::PolyhedralSurfaceZ
:
185
return
Qgis::WkbType::PolyhedralSurfaceZ
;
186
187
case
Qgis::WkbType::PolyhedralSurfaceM
:
188
return
Qgis::WkbType::PolyhedralSurfaceM
;
189
190
case
Qgis::WkbType::PolyhedralSurfaceZM
:
191
return
Qgis::WkbType::PolyhedralSurfaceZM
;
192
193
case
Qgis::WkbType::TIN
:
194
return
Qgis::WkbType::TIN
;
195
196
case
Qgis::WkbType::TINZ
:
197
return
Qgis::WkbType::TINZ
;
198
199
case
Qgis::WkbType::TINM
:
200
return
Qgis::WkbType::TINM
;
201
202
case
Qgis::WkbType::TINZM
:
203
return
Qgis::WkbType::TINZM
;
204
205
case
Qgis::WkbType::NoGeometry
:
206
return
Qgis::WkbType::NoGeometry
;
207
208
case
Qgis::WkbType::Point25D
:
209
case
Qgis::WkbType::MultiPoint25D
:
210
return
Qgis::WkbType::Point25D
;
211
212
case
Qgis::WkbType::LineString25D
:
213
case
Qgis::WkbType::MultiLineString25D
:
214
return
Qgis::WkbType::LineString25D
;
215
216
case
Qgis::WkbType::Polygon25D
:
217
case
Qgis::WkbType::MultiPolygon25D
:
218
return
Qgis::WkbType::Polygon25D
;
219
}
220
return
Qgis::WkbType::Unknown
;
221
}
222
232
static
Qgis::WkbType
multiType
(
Qgis::WkbType
type )
SIP_HOLDGIL
233
{
234
switch
( type )
235
{
236
case
Qgis::WkbType::Unknown
:
237
return
Qgis::WkbType::Unknown
;
238
239
case
Qgis::WkbType::Triangle
:
240
return
Qgis::WkbType::MultiPolygon
;
241
242
case
Qgis::WkbType::TriangleZ
:
243
return
Qgis::WkbType::MultiPolygonZ
;
244
245
case
Qgis::WkbType::TriangleM
:
246
return
Qgis::WkbType::MultiPolygonM
;
247
248
case
Qgis::WkbType::TriangleZM
:
249
return
Qgis::WkbType::MultiPolygonZM
;
250
251
case
Qgis::WkbType::GeometryCollection
:
252
return
Qgis::WkbType::GeometryCollection
;
253
254
case
Qgis::WkbType::GeometryCollectionZ
:
255
return
Qgis::WkbType::GeometryCollectionZ
;
256
257
case
Qgis::WkbType::GeometryCollectionM
:
258
return
Qgis::WkbType::GeometryCollectionM
;
259
260
case
Qgis::WkbType::GeometryCollectionZM
:
261
return
Qgis::WkbType::GeometryCollectionZM
;
262
263
case
Qgis::WkbType::Point
:
264
case
Qgis::WkbType::MultiPoint
:
265
return
Qgis::WkbType::MultiPoint
;
266
267
case
Qgis::WkbType::PointZ
:
268
case
Qgis::WkbType::MultiPointZ
:
269
return
Qgis::WkbType::MultiPointZ
;
270
271
case
Qgis::WkbType::PointM
:
272
case
Qgis::WkbType::MultiPointM
:
273
return
Qgis::WkbType::MultiPointM
;
274
275
case
Qgis::WkbType::PointZM
:
276
case
Qgis::WkbType::MultiPointZM
:
277
return
Qgis::WkbType::MultiPointZM
;
278
279
case
Qgis::WkbType::LineString
:
280
case
Qgis::WkbType::MultiLineString
:
281
return
Qgis::WkbType::MultiLineString
;
282
283
case
Qgis::WkbType::LineStringZ
:
284
case
Qgis::WkbType::MultiLineStringZ
:
285
return
Qgis::WkbType::MultiLineStringZ
;
286
287
case
Qgis::WkbType::LineStringM
:
288
case
Qgis::WkbType::MultiLineStringM
:
289
return
Qgis::WkbType::MultiLineStringM
;
290
291
case
Qgis::WkbType::LineStringZM
:
292
case
Qgis::WkbType::MultiLineStringZM
:
293
return
Qgis::WkbType::MultiLineStringZM
;
294
295
case
Qgis::WkbType::Polygon
:
296
case
Qgis::WkbType::MultiPolygon
:
297
case
Qgis::WkbType::PolyhedralSurface
:
298
case
Qgis::WkbType::TIN
:
299
return
Qgis::WkbType::MultiPolygon
;
300
301
case
Qgis::WkbType::PolygonZ
:
302
case
Qgis::WkbType::MultiPolygonZ
:
303
case
Qgis::WkbType::PolyhedralSurfaceZ
:
304
case
Qgis::WkbType::TINZ
:
305
return
Qgis::WkbType::MultiPolygonZ
;
306
307
case
Qgis::WkbType::PolygonM
:
308
case
Qgis::WkbType::MultiPolygonM
:
309
case
Qgis::WkbType::PolyhedralSurfaceM
:
310
case
Qgis::WkbType::TINM
:
311
return
Qgis::WkbType::MultiPolygonM
;
312
313
case
Qgis::WkbType::PolygonZM
:
314
case
Qgis::WkbType::MultiPolygonZM
:
315
case
Qgis::WkbType::PolyhedralSurfaceZM
:
316
case
Qgis::WkbType::TINZM
:
317
return
Qgis::WkbType::MultiPolygonZM
;
318
319
case
Qgis::WkbType::CompoundCurve
:
320
case
Qgis::WkbType::CircularString
:
321
case
Qgis::WkbType::NurbsCurve
:
322
case
Qgis::WkbType::MultiCurve
:
323
return
Qgis::WkbType::MultiCurve
;
324
325
case
Qgis::WkbType::CompoundCurveZ
:
326
case
Qgis::WkbType::CircularStringZ
:
327
case
Qgis::WkbType::NurbsCurveZ
:
328
case
Qgis::WkbType::MultiCurveZ
:
329
return
Qgis::WkbType::MultiCurveZ
;
330
331
case
Qgis::WkbType::CompoundCurveM
:
332
case
Qgis::WkbType::CircularStringM
:
333
case
Qgis::WkbType::NurbsCurveM
:
334
case
Qgis::WkbType::MultiCurveM
:
335
return
Qgis::WkbType::MultiCurveM
;
336
337
case
Qgis::WkbType::CompoundCurveZM
:
338
case
Qgis::WkbType::CircularStringZM
:
339
case
Qgis::WkbType::NurbsCurveZM
:
340
case
Qgis::WkbType::MultiCurveZM
:
341
return
Qgis::WkbType::MultiCurveZM
;
342
343
case
Qgis::WkbType::CurvePolygon
:
344
case
Qgis::WkbType::MultiSurface
:
345
return
Qgis::WkbType::MultiSurface
;
346
347
case
Qgis::WkbType::CurvePolygonZ
:
348
case
Qgis::WkbType::MultiSurfaceZ
:
349
return
Qgis::WkbType::MultiSurfaceZ
;
350
351
case
Qgis::WkbType::CurvePolygonM
:
352
case
Qgis::WkbType::MultiSurfaceM
:
353
return
Qgis::WkbType::MultiSurfaceM
;
354
355
case
Qgis::WkbType::CurvePolygonZM
:
356
case
Qgis::WkbType::MultiSurfaceZM
:
357
return
Qgis::WkbType::MultiSurfaceZM
;
358
359
case
Qgis::WkbType::NoGeometry
:
360
return
Qgis::WkbType::NoGeometry
;
361
362
case
Qgis::WkbType::Point25D
:
363
case
Qgis::WkbType::MultiPoint25D
:
364
return
Qgis::WkbType::MultiPoint25D
;
365
366
case
Qgis::WkbType::LineString25D
:
367
case
Qgis::WkbType::MultiLineString25D
:
368
return
Qgis::WkbType::MultiLineString25D
;
369
370
case
Qgis::WkbType::Polygon25D
:
371
case
Qgis::WkbType::MultiPolygon25D
:
372
return
Qgis::WkbType::MultiPolygon25D
;
373
}
374
return
Qgis::WkbType::Unknown
;
375
}
376
377
390
static
Qgis::WkbType
promoteNonPointTypesToMulti
(
Qgis::WkbType
type )
SIP_HOLDGIL
391
{
392
switch
(
geometryType
( type ) )
393
{
394
case
Qgis::GeometryType::Point
:
395
case
Qgis::GeometryType::Unknown
:
396
case
Qgis::GeometryType::Null
:
397
return
type;
398
399
case
Qgis::GeometryType::Line
:
400
case
Qgis::GeometryType::Polygon
:
401
return
multiType
( type );
402
}
403
return
Qgis::WkbType::Unknown
;
404
}
405
420
static
Qgis::WkbType
curveType
(
Qgis::WkbType
type )
SIP_HOLDGIL
421
{
422
switch
( type )
423
{
424
case
Qgis::WkbType::Unknown
:
425
case
Qgis::WkbType::Triangle
:
426
case
Qgis::WkbType::TriangleZ
:
427
case
Qgis::WkbType::TriangleM
:
428
case
Qgis::WkbType::TriangleZM
:
429
return
Qgis::WkbType::Unknown
;
430
431
case
Qgis::WkbType::GeometryCollection
:
432
return
Qgis::WkbType::GeometryCollection
;
433
434
case
Qgis::WkbType::GeometryCollectionZ
:
435
return
Qgis::WkbType::GeometryCollectionZ
;
436
437
case
Qgis::WkbType::GeometryCollectionM
:
438
return
Qgis::WkbType::GeometryCollectionM
;
439
440
case
Qgis::WkbType::GeometryCollectionZM
:
441
return
Qgis::WkbType::GeometryCollectionZM
;
442
443
case
Qgis::WkbType::Point
:
444
return
Qgis::WkbType::Point
;
445
446
case
Qgis::WkbType::MultiPoint
:
447
return
Qgis::WkbType::MultiPoint
;
448
449
case
Qgis::WkbType::PointZ
:
450
return
Qgis::WkbType::PointZ
;
451
452
case
Qgis::WkbType::MultiPointZ
:
453
return
Qgis::WkbType::MultiPointZ
;
454
455
case
Qgis::WkbType::PointM
:
456
return
Qgis::WkbType::PointM
;
457
458
case
Qgis::WkbType::MultiPointM
:
459
return
Qgis::WkbType::MultiPointM
;
460
461
case
Qgis::WkbType::PointZM
:
462
return
Qgis::WkbType::PointZM
;
463
464
case
Qgis::WkbType::MultiPointZM
:
465
return
Qgis::WkbType::MultiPointZM
;
466
467
case
Qgis::WkbType::LineString
:
468
case
Qgis::WkbType::CompoundCurve
:
469
case
Qgis::WkbType::CircularString
:
470
case
Qgis::WkbType::NurbsCurve
:
471
return
Qgis::WkbType::CompoundCurve
;
472
473
case
Qgis::WkbType::MultiLineString
:
474
case
Qgis::WkbType::MultiCurve
:
475
return
Qgis::WkbType::MultiCurve
;
476
477
case
Qgis::WkbType::LineStringZ
:
478
case
Qgis::WkbType::CompoundCurveZ
:
479
case
Qgis::WkbType::CircularStringZ
:
480
case
Qgis::WkbType::NurbsCurveZ
:
481
case
Qgis::WkbType::LineString25D
:
482
return
Qgis::WkbType::CompoundCurveZ
;
483
484
case
Qgis::WkbType::MultiLineStringZ
:
485
case
Qgis::WkbType::MultiCurveZ
:
486
case
Qgis::WkbType::MultiLineString25D
:
487
return
Qgis::WkbType::MultiCurveZ
;
488
489
case
Qgis::WkbType::LineStringM
:
490
case
Qgis::WkbType::CompoundCurveM
:
491
case
Qgis::WkbType::CircularStringM
:
492
case
Qgis::WkbType::NurbsCurveM
:
493
return
Qgis::WkbType::CompoundCurveM
;
494
495
case
Qgis::WkbType::MultiLineStringM
:
496
case
Qgis::WkbType::MultiCurveM
:
497
return
Qgis::WkbType::MultiCurveM
;
498
499
case
Qgis::WkbType::LineStringZM
:
500
case
Qgis::WkbType::CompoundCurveZM
:
501
case
Qgis::WkbType::CircularStringZM
:
502
case
Qgis::WkbType::NurbsCurveZM
:
503
return
Qgis::WkbType::CompoundCurveZM
;
504
505
case
Qgis::WkbType::MultiLineStringZM
:
506
case
Qgis::WkbType::MultiCurveZM
:
507
return
Qgis::WkbType::MultiCurveZM
;
508
509
case
Qgis::WkbType::Polygon
:
510
case
Qgis::WkbType::CurvePolygon
:
511
return
Qgis::WkbType::CurvePolygon
;
512
513
case
Qgis::WkbType::MultiPolygon
:
514
case
Qgis::WkbType::MultiSurface
:
515
case
Qgis::WkbType::PolyhedralSurface
:
516
case
Qgis::WkbType::TIN
:
517
return
Qgis::WkbType::MultiSurface
;
518
519
case
Qgis::WkbType::PolygonZ
:
520
case
Qgis::WkbType::CurvePolygonZ
:
521
case
Qgis::WkbType::Polygon25D
:
522
return
Qgis::WkbType::CurvePolygonZ
;
523
524
case
Qgis::WkbType::MultiPolygonZ
:
525
case
Qgis::WkbType::MultiSurfaceZ
:
526
case
Qgis::WkbType::PolyhedralSurfaceZ
:
527
case
Qgis::WkbType::TINZ
:
528
case
Qgis::WkbType::MultiPolygon25D
:
529
return
Qgis::WkbType::MultiSurfaceZ
;
530
531
case
Qgis::WkbType::PolygonM
:
532
case
Qgis::WkbType::CurvePolygonM
:
533
return
Qgis::WkbType::CurvePolygonM
;
534
535
case
Qgis::WkbType::MultiPolygonM
:
536
case
Qgis::WkbType::MultiSurfaceM
:
537
case
Qgis::WkbType::PolyhedralSurfaceM
:
538
case
Qgis::WkbType::TINM
:
539
return
Qgis::WkbType::MultiSurfaceM
;
540
541
case
Qgis::WkbType::PolygonZM
:
542
case
Qgis::WkbType::CurvePolygonZM
:
543
return
Qgis::WkbType::CurvePolygonZM
;
544
545
case
Qgis::WkbType::MultiPolygonZM
:
546
case
Qgis::WkbType::MultiSurfaceZM
:
547
case
Qgis::WkbType::PolyhedralSurfaceZM
:
548
case
Qgis::WkbType::TINZM
:
549
return
Qgis::WkbType::MultiSurfaceZM
;
550
551
case
Qgis::WkbType::NoGeometry
:
552
return
Qgis::WkbType::NoGeometry
;
553
554
case
Qgis::WkbType::Point25D
:
555
case
Qgis::WkbType::MultiPoint25D
:
556
return
Qgis::WkbType::MultiPoint25D
;
557
}
558
return
Qgis::WkbType::Unknown
;
559
}
560
573
static
Qgis::WkbType
linearType
(
Qgis::WkbType
type )
SIP_HOLDGIL
574
{
575
switch
( type )
576
{
577
case
Qgis::WkbType::CircularString
:
578
case
Qgis::WkbType::CompoundCurve
:
579
case
Qgis::WkbType::NurbsCurve
:
580
return
Qgis::WkbType::LineString
;
581
582
case
Qgis::WkbType::CircularStringM
:
583
case
Qgis::WkbType::CompoundCurveM
:
584
case
Qgis::WkbType::NurbsCurveM
:
585
return
Qgis::WkbType::LineStringM
;
586
587
case
Qgis::WkbType::CircularStringZ
:
588
case
Qgis::WkbType::CompoundCurveZ
:
589
case
Qgis::WkbType::NurbsCurveZ
:
590
return
Qgis::WkbType::LineStringZ
;
591
592
case
Qgis::WkbType::CircularStringZM
:
593
case
Qgis::WkbType::CompoundCurveZM
:
594
case
Qgis::WkbType::NurbsCurveZM
:
595
return
Qgis::WkbType::LineStringZM
;
596
597
case
Qgis::WkbType::MultiCurve
:
598
return
Qgis::WkbType::MultiLineString
;
599
600
case
Qgis::WkbType::MultiCurveM
:
601
return
Qgis::WkbType::MultiLineStringM
;
602
603
case
Qgis::WkbType::MultiCurveZ
:
604
return
Qgis::WkbType::MultiLineStringZ
;
605
606
case
Qgis::WkbType::MultiCurveZM
:
607
return
Qgis::WkbType::MultiLineStringZM
;
608
609
case
Qgis::WkbType::CurvePolygon
:
610
return
Qgis::WkbType::Polygon
;
611
612
case
Qgis::WkbType::CurvePolygonM
:
613
return
Qgis::WkbType::PolygonM
;
614
615
case
Qgis::WkbType::CurvePolygonZ
:
616
return
Qgis::WkbType::PolygonZ
;
617
618
case
Qgis::WkbType::CurvePolygonZM
:
619
return
Qgis::WkbType::PolygonZM
;
620
621
case
Qgis::WkbType::MultiSurface
:
622
return
Qgis::WkbType::MultiPolygon
;
623
624
case
Qgis::WkbType::MultiSurfaceM
:
625
return
Qgis::WkbType::MultiPolygonM
;
626
627
case
Qgis::WkbType::MultiSurfaceZ
:
628
return
Qgis::WkbType::MultiPolygonZ
;
629
630
case
Qgis::WkbType::MultiSurfaceZM
:
631
return
Qgis::WkbType::MultiPolygonZM
;
632
633
case
Qgis::WkbType::GeometryCollection
:
634
case
Qgis::WkbType::GeometryCollectionM
:
635
case
Qgis::WkbType::GeometryCollectionZ
:
636
case
Qgis::WkbType::GeometryCollectionZM
:
637
case
Qgis::WkbType::LineString
:
638
case
Qgis::WkbType::LineString25D
:
639
case
Qgis::WkbType::LineStringM
:
640
case
Qgis::WkbType::LineStringZ
:
641
case
Qgis::WkbType::LineStringZM
:
642
case
Qgis::WkbType::MultiLineString
:
643
case
Qgis::WkbType::MultiLineString25D
:
644
case
Qgis::WkbType::MultiLineStringM
:
645
case
Qgis::WkbType::MultiLineStringZ
:
646
case
Qgis::WkbType::MultiLineStringZM
:
647
case
Qgis::WkbType::MultiPoint
:
648
case
Qgis::WkbType::MultiPoint25D
:
649
case
Qgis::WkbType::MultiPointM
:
650
case
Qgis::WkbType::MultiPointZ
:
651
case
Qgis::WkbType::MultiPointZM
:
652
case
Qgis::WkbType::MultiPolygon
:
653
case
Qgis::WkbType::MultiPolygon25D
:
654
case
Qgis::WkbType::MultiPolygonM
:
655
case
Qgis::WkbType::MultiPolygonZ
:
656
case
Qgis::WkbType::MultiPolygonZM
:
657
case
Qgis::WkbType::NoGeometry
:
658
case
Qgis::WkbType::Point
:
659
case
Qgis::WkbType::Point25D
:
660
case
Qgis::WkbType::PointM
:
661
case
Qgis::WkbType::PointZ
:
662
case
Qgis::WkbType::PointZM
:
663
case
Qgis::WkbType::Polygon
:
664
case
Qgis::WkbType::Polygon25D
:
665
case
Qgis::WkbType::PolygonM
:
666
case
Qgis::WkbType::PolygonZ
:
667
case
Qgis::WkbType::PolygonZM
:
668
case
Qgis::WkbType::PolyhedralSurface
:
669
case
Qgis::WkbType::PolyhedralSurfaceM
:
670
case
Qgis::WkbType::PolyhedralSurfaceZ
:
671
case
Qgis::WkbType::PolyhedralSurfaceZM
:
672
case
Qgis::WkbType::TIN
:
673
case
Qgis::WkbType::TINM
:
674
case
Qgis::WkbType::TINZ
:
675
case
Qgis::WkbType::TINZM
:
676
case
Qgis::WkbType::Triangle
:
677
case
Qgis::WkbType::TriangleM
:
678
case
Qgis::WkbType::TriangleZ
:
679
case
Qgis::WkbType::TriangleZM
:
680
case
Qgis::WkbType::Unknown
:
681
return
type;
682
}
683
return
Qgis::WkbType::Unknown
;
684
}
685
693
static
Qgis::WkbType
flatType
(
Qgis::WkbType
type )
SIP_HOLDGIL
694
{
695
switch
( type )
696
{
697
case
Qgis::WkbType::Unknown
:
698
return
Qgis::WkbType::Unknown
;
699
700
case
Qgis::WkbType::Point
:
701
case
Qgis::WkbType::PointZ
:
702
case
Qgis::WkbType::PointM
:
703
case
Qgis::WkbType::PointZM
:
704
case
Qgis::WkbType::Point25D
:
705
return
Qgis::WkbType::Point
;
706
707
case
Qgis::WkbType::LineString
:
708
case
Qgis::WkbType::LineStringZ
:
709
case
Qgis::WkbType::LineStringM
:
710
case
Qgis::WkbType::LineStringZM
:
711
case
Qgis::WkbType::LineString25D
:
712
return
Qgis::WkbType::LineString
;
713
714
case
Qgis::WkbType::Polygon
:
715
case
Qgis::WkbType::PolygonZ
:
716
case
Qgis::WkbType::PolygonM
:
717
case
Qgis::WkbType::PolygonZM
:
718
case
Qgis::WkbType::Polygon25D
:
719
return
Qgis::WkbType::Polygon
;
720
721
case
Qgis::WkbType::Triangle
:
722
case
Qgis::WkbType::TriangleZ
:
723
case
Qgis::WkbType::TriangleM
:
724
case
Qgis::WkbType::TriangleZM
:
725
return
Qgis::WkbType::Triangle
;
726
727
case
Qgis::WkbType::MultiPoint
:
728
case
Qgis::WkbType::MultiPointZ
:
729
case
Qgis::WkbType::MultiPointM
:
730
case
Qgis::WkbType::MultiPointZM
:
731
case
Qgis::WkbType::MultiPoint25D
:
732
return
Qgis::WkbType::MultiPoint
;
733
734
case
Qgis::WkbType::MultiLineString
:
735
case
Qgis::WkbType::MultiLineStringZ
:
736
case
Qgis::WkbType::MultiLineStringM
:
737
case
Qgis::WkbType::MultiLineStringZM
:
738
case
Qgis::WkbType::MultiLineString25D
:
739
return
Qgis::WkbType::MultiLineString
;
740
741
case
Qgis::WkbType::MultiPolygon
:
742
case
Qgis::WkbType::MultiPolygonZ
:
743
case
Qgis::WkbType::MultiPolygonM
:
744
case
Qgis::WkbType::MultiPolygonZM
:
745
case
Qgis::WkbType::MultiPolygon25D
:
746
return
Qgis::WkbType::MultiPolygon
;
747
748
case
Qgis::WkbType::GeometryCollection
:
749
case
Qgis::WkbType::GeometryCollectionZ
:
750
case
Qgis::WkbType::GeometryCollectionM
:
751
case
Qgis::WkbType::GeometryCollectionZM
:
752
return
Qgis::WkbType::GeometryCollection
;
753
754
case
Qgis::WkbType::CircularString
:
755
case
Qgis::WkbType::CircularStringZ
:
756
case
Qgis::WkbType::CircularStringM
:
757
case
Qgis::WkbType::CircularStringZM
:
758
return
Qgis::WkbType::CircularString
;
759
760
case
Qgis::WkbType::NurbsCurve
:
761
case
Qgis::WkbType::NurbsCurveZ
:
762
case
Qgis::WkbType::NurbsCurveM
:
763
case
Qgis::WkbType::NurbsCurveZM
:
764
return
Qgis::WkbType::NurbsCurve
;
765
766
case
Qgis::WkbType::CompoundCurve
:
767
case
Qgis::WkbType::CompoundCurveZ
:
768
case
Qgis::WkbType::CompoundCurveM
:
769
case
Qgis::WkbType::CompoundCurveZM
:
770
return
Qgis::WkbType::CompoundCurve
;
771
772
case
Qgis::WkbType::MultiCurve
:
773
case
Qgis::WkbType::MultiCurveZ
:
774
case
Qgis::WkbType::MultiCurveM
:
775
case
Qgis::WkbType::MultiCurveZM
:
776
return
Qgis::WkbType::MultiCurve
;
777
778
case
Qgis::WkbType::CurvePolygon
:
779
case
Qgis::WkbType::CurvePolygonZ
:
780
case
Qgis::WkbType::CurvePolygonM
:
781
case
Qgis::WkbType::CurvePolygonZM
:
782
return
Qgis::WkbType::CurvePolygon
;
783
784
case
Qgis::WkbType::MultiSurface
:
785
case
Qgis::WkbType::MultiSurfaceZ
:
786
case
Qgis::WkbType::MultiSurfaceM
:
787
case
Qgis::WkbType::MultiSurfaceZM
:
788
return
Qgis::WkbType::MultiSurface
;
789
790
case
Qgis::WkbType::PolyhedralSurface
:
791
case
Qgis::WkbType::PolyhedralSurfaceZ
:
792
case
Qgis::WkbType::PolyhedralSurfaceM
:
793
case
Qgis::WkbType::PolyhedralSurfaceZM
:
794
return
Qgis::WkbType::PolyhedralSurface
;
795
796
case
Qgis::WkbType::TIN
:
797
case
Qgis::WkbType::TINZ
:
798
case
Qgis::WkbType::TINM
:
799
case
Qgis::WkbType::TINZM
:
800
return
Qgis::WkbType::TIN
;
801
802
case
Qgis::WkbType::NoGeometry
:
803
return
Qgis::WkbType::NoGeometry
;
804
}
805
return
Qgis::WkbType::Unknown
;
806
}
807
809
static
Qgis::WkbType
zmType
(
Qgis::WkbType
type,
bool
hasZ
,
bool
hasM
)
SIP_HOLDGIL
810
{
811
type =
flatType
( type );
812
if
(
hasZ
)
813
type =
static_cast<
Qgis::WkbType
>
(
static_cast<
quint32
>
( type ) + 1000 );
814
if
(
hasM
)
815
type =
static_cast<
Qgis::WkbType
>
(
static_cast<
quint32
>
( type ) + 2000 );
816
return
type;
817
}
818
823
static
Qgis::WkbType
parseType
(
const
QString &wktStr );
824
830
Q_INVOKABLE
static
bool
isSingleType
(
Qgis::WkbType
type )
SIP_HOLDGIL
831
{
832
return
( type !=
Qgis::WkbType::Unknown
&& !
isMultiType
( type ) );
833
}
834
840
Q_INVOKABLE
static
bool
isMultiType
(
Qgis::WkbType
type )
SIP_HOLDGIL
841
{
842
switch
( type )
843
{
844
case
Qgis::WkbType::Unknown
:
845
case
Qgis::WkbType::Point
:
846
case
Qgis::WkbType::LineString
:
847
case
Qgis::WkbType::Polygon
:
848
case
Qgis::WkbType::Triangle
:
849
case
Qgis::WkbType::CircularString
:
850
case
Qgis::WkbType::CompoundCurve
:
851
case
Qgis::WkbType::NurbsCurve
:
852
case
Qgis::WkbType::CurvePolygon
:
853
case
Qgis::WkbType::PolyhedralSurface
:
854
case
Qgis::WkbType::TIN
:
855
case
Qgis::WkbType::NoGeometry
:
856
case
Qgis::WkbType::PointZ
:
857
case
Qgis::WkbType::LineStringZ
:
858
case
Qgis::WkbType::PolygonZ
:
859
case
Qgis::WkbType::TriangleZ
:
860
case
Qgis::WkbType::CircularStringZ
:
861
case
Qgis::WkbType::CompoundCurveZ
:
862
case
Qgis::WkbType::NurbsCurveZ
:
863
case
Qgis::WkbType::CurvePolygonZ
:
864
case
Qgis::WkbType::PolyhedralSurfaceZ
:
865
case
Qgis::WkbType::TINZ
:
866
case
Qgis::WkbType::PointM
:
867
case
Qgis::WkbType::LineStringM
:
868
case
Qgis::WkbType::PolygonM
:
869
case
Qgis::WkbType::TriangleM
:
870
case
Qgis::WkbType::CircularStringM
:
871
case
Qgis::WkbType::CompoundCurveM
:
872
case
Qgis::WkbType::NurbsCurveM
:
873
case
Qgis::WkbType::CurvePolygonM
:
874
case
Qgis::WkbType::PolyhedralSurfaceM
:
875
case
Qgis::WkbType::TINM
:
876
case
Qgis::WkbType::PointZM
:
877
case
Qgis::WkbType::LineStringZM
:
878
case
Qgis::WkbType::PolygonZM
:
879
case
Qgis::WkbType::TriangleZM
:
880
case
Qgis::WkbType::CircularStringZM
:
881
case
Qgis::WkbType::CompoundCurveZM
:
882
case
Qgis::WkbType::NurbsCurveZM
:
883
case
Qgis::WkbType::CurvePolygonZM
:
884
case
Qgis::WkbType::PolyhedralSurfaceZM
:
885
case
Qgis::WkbType::TINZM
:
886
case
Qgis::WkbType::Point25D
:
887
case
Qgis::WkbType::LineString25D
:
888
case
Qgis::WkbType::Polygon25D
:
889
return
false
;
890
891
default
:
892
return
true
;
893
}
894
}
895
899
Q_INVOKABLE
static
bool
isCurvedType
(
Qgis::WkbType
type )
SIP_HOLDGIL
900
{
901
switch
(
flatType
( type ) )
902
{
903
case
Qgis::WkbType::CircularString
:
904
case
Qgis::WkbType::CompoundCurve
:
905
case
Qgis::WkbType::NurbsCurve
:
906
case
Qgis::WkbType::CurvePolygon
:
907
case
Qgis::WkbType::MultiCurve
:
908
case
Qgis::WkbType::MultiSurface
:
909
return
true
;
910
911
default
:
912
return
false
;
913
}
914
}
915
922
Q_INVOKABLE
static
bool
isNurbsType
(
Qgis::WkbType
type )
SIP_HOLDGIL
923
{
924
return
flatType
( type ) ==
Qgis::WkbType::NurbsCurve
;
925
}
926
934
static
int
wkbDimensions
(
Qgis::WkbType
type )
SIP_HOLDGIL
935
{
936
const
Qgis::GeometryType
gtype =
geometryType
( type );
937
switch
( gtype )
938
{
939
case
Qgis::GeometryType::Line
:
940
return
1;
941
case
Qgis::GeometryType::Polygon
:
942
return
2;
943
default
:
//point, no geometry, unknown geometry
944
return
0;
945
}
946
}
947
954
Q_INVOKABLE
static
int
coordDimensions
(
Qgis::WkbType
type )
SIP_HOLDGIL
955
{
956
if
( type ==
Qgis::WkbType::Unknown
|| type ==
Qgis::WkbType::NoGeometry
)
957
return
0;
958
959
return
2 +
hasZ
( type ) +
hasM
( type );
960
}
961
967
static
Qgis::GeometryType
geometryType
(
Qgis::WkbType
type )
SIP_HOLDGIL
968
{
969
switch
( type )
970
{
971
case
Qgis::WkbType::Unknown
:
972
case
Qgis::WkbType::GeometryCollection
:
973
case
Qgis::WkbType::GeometryCollectionZ
:
974
case
Qgis::WkbType::GeometryCollectionM
:
975
case
Qgis::WkbType::GeometryCollectionZM
:
976
return
Qgis::GeometryType::Unknown
;
977
978
case
Qgis::WkbType::Point
:
979
case
Qgis::WkbType::MultiPoint
:
980
case
Qgis::WkbType::PointZ
:
981
case
Qgis::WkbType::MultiPointZ
:
982
case
Qgis::WkbType::PointM
:
983
case
Qgis::WkbType::MultiPointM
:
984
case
Qgis::WkbType::PointZM
:
985
case
Qgis::WkbType::MultiPointZM
:
986
case
Qgis::WkbType::Point25D
:
987
case
Qgis::WkbType::MultiPoint25D
:
988
return
Qgis::GeometryType::Point
;
989
990
case
Qgis::WkbType::LineString
:
991
case
Qgis::WkbType::MultiLineString
:
992
case
Qgis::WkbType::LineStringZ
:
993
case
Qgis::WkbType::MultiLineStringZ
:
994
case
Qgis::WkbType::LineStringM
:
995
case
Qgis::WkbType::MultiLineStringM
:
996
case
Qgis::WkbType::LineStringZM
:
997
case
Qgis::WkbType::MultiLineStringZM
:
998
case
Qgis::WkbType::LineString25D
:
999
case
Qgis::WkbType::MultiLineString25D
:
1000
case
Qgis::WkbType::CircularString
:
1001
case
Qgis::WkbType::CompoundCurve
:
1002
case
Qgis::WkbType::NurbsCurve
:
1003
case
Qgis::WkbType::MultiCurve
:
1004
case
Qgis::WkbType::CircularStringZ
:
1005
case
Qgis::WkbType::CompoundCurveZ
:
1006
case
Qgis::WkbType::NurbsCurveZ
:
1007
case
Qgis::WkbType::MultiCurveZ
:
1008
case
Qgis::WkbType::CircularStringM
:
1009
case
Qgis::WkbType::CompoundCurveM
:
1010
case
Qgis::WkbType::NurbsCurveM
:
1011
case
Qgis::WkbType::MultiCurveM
:
1012
case
Qgis::WkbType::CircularStringZM
:
1013
case
Qgis::WkbType::CompoundCurveZM
:
1014
case
Qgis::WkbType::NurbsCurveZM
:
1015
case
Qgis::WkbType::MultiCurveZM
:
1016
return
Qgis::GeometryType::Line
;
1017
1018
case
Qgis::WkbType::Polygon
:
1019
case
Qgis::WkbType::MultiPolygon
:
1020
case
Qgis::WkbType::Triangle
:
1021
case
Qgis::WkbType::PolygonZ
:
1022
case
Qgis::WkbType::TriangleZ
:
1023
case
Qgis::WkbType::MultiPolygonZ
:
1024
case
Qgis::WkbType::PolygonM
:
1025
case
Qgis::WkbType::TriangleM
:
1026
case
Qgis::WkbType::MultiPolygonM
:
1027
case
Qgis::WkbType::PolygonZM
:
1028
case
Qgis::WkbType::MultiPolygonZM
:
1029
case
Qgis::WkbType::TriangleZM
:
1030
case
Qgis::WkbType::Polygon25D
:
1031
case
Qgis::WkbType::MultiPolygon25D
:
1032
case
Qgis::WkbType::CurvePolygon
:
1033
case
Qgis::WkbType::MultiSurface
:
1034
case
Qgis::WkbType::PolyhedralSurface
:
1035
case
Qgis::WkbType::TIN
:
1036
case
Qgis::WkbType::CurvePolygonZ
:
1037
case
Qgis::WkbType::MultiSurfaceZ
:
1038
case
Qgis::WkbType::PolyhedralSurfaceZ
:
1039
case
Qgis::WkbType::TINZ
:
1040
case
Qgis::WkbType::CurvePolygonM
:
1041
case
Qgis::WkbType::MultiSurfaceM
:
1042
case
Qgis::WkbType::PolyhedralSurfaceM
:
1043
case
Qgis::WkbType::TINM
:
1044
case
Qgis::WkbType::CurvePolygonZM
:
1045
case
Qgis::WkbType::MultiSurfaceZM
:
1046
case
Qgis::WkbType::PolyhedralSurfaceZM
:
1047
case
Qgis::WkbType::TINZM
:
1048
return
Qgis::GeometryType::Polygon
;
1049
1050
case
Qgis::WkbType::NoGeometry
:
1051
return
Qgis::GeometryType::Null
;
1052
}
1053
1054
return
Qgis::GeometryType::Unknown
;
1055
}
1056
1060
Q_INVOKABLE
static
QString displayString(
Qgis::WkbType
type )
SIP_HOLDGIL
;
1061
1067
Q_INVOKABLE
static
QString translatedDisplayString(
Qgis::WkbType
type )
SIP_HOLDGIL
;
1068
1082
Q_INVOKABLE
static
QString geometryDisplayString(
Qgis::GeometryType
type )
SIP_HOLDGIL
;
1083
1090
Q_INVOKABLE
static
bool
hasZ
(
Qgis::WkbType
type )
SIP_HOLDGIL
1091
{
1092
switch
( type )
1093
{
1094
case
Qgis::WkbType::PointZ
:
1095
case
Qgis::WkbType::LineStringZ
:
1096
case
Qgis::WkbType::PolygonZ
:
1097
case
Qgis::WkbType::PolyhedralSurfaceZ
:
1098
case
Qgis::WkbType::TINZ
:
1099
case
Qgis::WkbType::TriangleZ
:
1100
case
Qgis::WkbType::MultiPointZ
:
1101
case
Qgis::WkbType::MultiLineStringZ
:
1102
case
Qgis::WkbType::MultiPolygonZ
:
1103
case
Qgis::WkbType::GeometryCollectionZ
:
1104
case
Qgis::WkbType::CircularStringZ
:
1105
case
Qgis::WkbType::CompoundCurveZ
:
1106
case
Qgis::WkbType::CurvePolygonZ
:
1107
case
Qgis::WkbType::MultiCurveZ
:
1108
case
Qgis::WkbType::MultiSurfaceZ
:
1109
case
Qgis::WkbType::PointZM
:
1110
case
Qgis::WkbType::LineStringZM
:
1111
case
Qgis::WkbType::PolygonZM
:
1112
case
Qgis::WkbType::PolyhedralSurfaceZM
:
1113
case
Qgis::WkbType::TINZM
:
1114
case
Qgis::WkbType::TriangleZM
:
1115
case
Qgis::WkbType::MultiPointZM
:
1116
case
Qgis::WkbType::MultiLineStringZM
:
1117
case
Qgis::WkbType::MultiPolygonZM
:
1118
case
Qgis::WkbType::GeometryCollectionZM
:
1119
case
Qgis::WkbType::CircularStringZM
:
1120
case
Qgis::WkbType::CompoundCurveZM
:
1121
case
Qgis::WkbType::CurvePolygonZM
:
1122
case
Qgis::WkbType::MultiCurveZM
:
1123
case
Qgis::WkbType::MultiSurfaceZM
:
1124
case
Qgis::WkbType::NurbsCurveZ
:
1125
case
Qgis::WkbType::NurbsCurveZM
:
1126
case
Qgis::WkbType::Point25D
:
1127
case
Qgis::WkbType::LineString25D
:
1128
case
Qgis::WkbType::Polygon25D
:
1129
case
Qgis::WkbType::MultiPoint25D
:
1130
case
Qgis::WkbType::MultiLineString25D
:
1131
case
Qgis::WkbType::MultiPolygon25D
:
1132
return
true
;
1133
1134
default
:
1135
return
false
;
1136
}
1137
}
1138
1145
Q_INVOKABLE
static
bool
hasM
(
Qgis::WkbType
type )
SIP_HOLDGIL
1146
{
1147
switch
( type )
1148
{
1149
case
Qgis::WkbType::PointM
:
1150
case
Qgis::WkbType::LineStringM
:
1151
case
Qgis::WkbType::PolygonM
:
1152
case
Qgis::WkbType::PolyhedralSurfaceM
:
1153
case
Qgis::WkbType::TINM
:
1154
case
Qgis::WkbType::TriangleM
:
1155
case
Qgis::WkbType::MultiPointM
:
1156
case
Qgis::WkbType::MultiLineStringM
:
1157
case
Qgis::WkbType::MultiPolygonM
:
1158
case
Qgis::WkbType::GeometryCollectionM
:
1159
case
Qgis::WkbType::CircularStringM
:
1160
case
Qgis::WkbType::CompoundCurveM
:
1161
case
Qgis::WkbType::CurvePolygonM
:
1162
case
Qgis::WkbType::MultiCurveM
:
1163
case
Qgis::WkbType::MultiSurfaceM
:
1164
case
Qgis::WkbType::PointZM
:
1165
case
Qgis::WkbType::LineStringZM
:
1166
case
Qgis::WkbType::PolygonZM
:
1167
case
Qgis::WkbType::PolyhedralSurfaceZM
:
1168
case
Qgis::WkbType::TINZM
:
1169
case
Qgis::WkbType::TriangleZM
:
1170
case
Qgis::WkbType::MultiPointZM
:
1171
case
Qgis::WkbType::MultiLineStringZM
:
1172
case
Qgis::WkbType::MultiPolygonZM
:
1173
case
Qgis::WkbType::GeometryCollectionZM
:
1174
case
Qgis::WkbType::CircularStringZM
:
1175
case
Qgis::WkbType::CompoundCurveZM
:
1176
case
Qgis::WkbType::CurvePolygonZM
:
1177
case
Qgis::WkbType::MultiCurveZM
:
1178
case
Qgis::WkbType::MultiSurfaceZM
:
1179
case
Qgis::WkbType::NurbsCurveM
:
1180
case
Qgis::WkbType::NurbsCurveZM
:
1181
return
true
;
1182
1183
default
:
1184
return
false
;
1185
}
1186
}
1187
1195
static
Qgis::WkbType
addZ
(
Qgis::WkbType
type )
SIP_HOLDGIL
1196
{
1197
if
(
hasZ
( type ) )
1198
return
type;
1199
else
if
( type ==
Qgis::WkbType::Unknown
)
1200
return
Qgis::WkbType::Unknown
;
1201
else
if
( type ==
Qgis::WkbType::NoGeometry
)
1202
return
Qgis::WkbType::NoGeometry
;
1203
1204
//upgrade with z dimension
1205
const
Qgis::WkbType
flat =
flatType
( type );
1206
if
(
hasM
( type ) )
1207
return
static_cast<
Qgis::WkbType
>
(
static_cast<
quint32
>
( flat ) + 3000 );
1208
else
1209
return
static_cast<
Qgis::WkbType
>
(
static_cast<
quint32
>
( flat ) + 1000 );
1210
}
1211
1219
static
Qgis::WkbType
addM
(
Qgis::WkbType
type )
SIP_HOLDGIL
1220
{
1221
if
(
hasM
( type ) )
1222
return
type;
1223
else
if
( type ==
Qgis::WkbType::Unknown
)
1224
return
Qgis::WkbType::Unknown
;
1225
else
if
( type ==
Qgis::WkbType::NoGeometry
)
1226
return
Qgis::WkbType::NoGeometry
;
1227
else
if
( type ==
Qgis::WkbType::Point25D
)
1228
return
Qgis::WkbType::PointZM
;
1229
else
if
( type ==
Qgis::WkbType::LineString25D
)
1230
return
Qgis::WkbType::LineStringZM
;
1231
else
if
( type ==
Qgis::WkbType::Polygon25D
)
1232
return
Qgis::WkbType::PolygonZM
;
1233
else
if
( type ==
Qgis::WkbType::MultiPoint25D
)
1234
return
Qgis::WkbType::MultiPointZM
;
1235
else
if
( type ==
Qgis::WkbType::MultiLineString25D
)
1236
return
Qgis::WkbType::MultiLineStringZM
;
1237
else
if
( type ==
Qgis::WkbType::MultiPolygon25D
)
1238
return
Qgis::WkbType::MultiPolygonZM
;
1239
1240
//upgrade with m dimension
1241
const
Qgis::WkbType
flat =
flatType
( type );
1242
if
(
hasZ
( type ) )
1243
return
static_cast<
Qgis::WkbType
>
(
static_cast<
quint32
>
( flat ) + 3000 );
1244
else
1245
return
static_cast<
Qgis::WkbType
>
(
static_cast<
quint32
>
( flat ) + 2000 );
1246
}
1247
1254
static
Qgis::WkbType
dropZ
(
Qgis::WkbType
type )
SIP_HOLDGIL
1255
{
1256
if
( !
hasZ
( type ) )
1257
return
type;
1258
1259
Qgis::WkbType
returnType =
flatType
( type );
1260
if
(
hasM
( type ) )
1261
returnType =
addM
( returnType );
1262
return
returnType;
1263
}
1264
1271
static
Qgis::WkbType
dropM
(
Qgis::WkbType
type )
SIP_HOLDGIL
1272
{
1273
if
( !
hasM
( type ) )
1274
return
type;
1275
1276
Qgis::WkbType
returnType =
flatType
( type );
1277
if
(
hasZ
( type ) )
1278
returnType =
addZ
( returnType );
1279
return
returnType;
1280
}
1281
1287
static
Qgis::WkbType
to25D
(
Qgis::WkbType
type )
SIP_HOLDGIL
1288
{
1289
const
Qgis::WkbType
flat =
flatType
( type );
1290
1291
if
(
static_cast<
quint32
>
( flat ) >=
static_cast<
quint32
>
(
Qgis::WkbType::Point
) &&
static_cast<
quint32
>
( flat ) <=
static_cast<
quint32
>
(
Qgis::WkbType::MultiPolygon
) )
1292
return
static_cast<
Qgis::WkbType
>
(
static_cast<
quint32
>
( flat ) + 0x80000000U );
1293
else
if
( type ==
Qgis::WkbType::NoGeometry
)
1294
return
Qgis::WkbType::NoGeometry
;
1295
else
1296
return
Qgis::WkbType::Unknown
;
1297
}
1298
};
1299
1300
#endif
// QGSWKBTYPES_H
Qgis::GeometryType
GeometryType
The geometry types are used to group Qgis::WkbType in a coarse way.
Definition
qgis.h:399
Qgis::GeometryType::Point
@ Point
Points.
Definition
qgis.h:400
Qgis::GeometryType::Line
@ Line
Lines.
Definition
qgis.h:401
Qgis::GeometryType::Polygon
@ Polygon
Polygons.
Definition
qgis.h:402
Qgis::GeometryType::Unknown
@ Unknown
Unknown types.
Definition
qgis.h:403
Qgis::GeometryType::Null
@ Null
No geometry.
Definition
qgis.h:404
Qgis::WkbType
WkbType
The WKB type describes the number of dimensions a geometry has.
Definition
qgis.h:314
Qgis::WkbType::LineString25D
@ LineString25D
LineString25D.
Definition
qgis.h:382
Qgis::WkbType::MultiSurfaceM
@ MultiSurfaceM
MultiSurfaceM.
Definition
qgis.h:361
Qgis::WkbType::PolyhedralSurfaceM
@ PolyhedralSurfaceM
PolyhedralSurfaceM.
Definition
qgis.h:362
Qgis::WkbType::MultiLineStringZM
@ MultiLineStringZM
MultiLineStringZM.
Definition
qgis.h:369
Qgis::WkbType::MultiPointZM
@ MultiPointZM
MultiPointZM.
Definition
qgis.h:368
Qgis::WkbType::MultiPointZ
@ MultiPointZ
MultiPointZ.
Definition
qgis.h:337
Qgis::WkbType::CompoundCurve
@ CompoundCurve
CompoundCurve.
Definition
qgis.h:325
Qgis::WkbType::MultiPolygonZM
@ MultiPolygonZM
MultiPolygonZM.
Definition
qgis.h:370
Qgis::WkbType::LineStringM
@ LineStringM
LineStringM.
Definition
qgis.h:350
Qgis::WkbType::Point
@ Point
Point.
Definition
qgis.h:316
Qgis::WkbType::LineString
@ LineString
LineString.
Definition
qgis.h:317
Qgis::WkbType::MultiLineStringM
@ MultiLineStringM
MultiLineStringM.
Definition
qgis.h:354
Qgis::WkbType::NurbsCurveM
@ NurbsCurveM
NurbsCurveM.
Definition
qgis.h:364
Qgis::WkbType::TIN
@ TIN
TIN.
Definition
qgis.h:330
Qgis::WkbType::MultiPolygon25D
@ MultiPolygon25D
MultiPolygon25D.
Definition
qgis.h:386
Qgis::WkbType::MultiPointM
@ MultiPointM
MultiPointM.
Definition
qgis.h:353
Qgis::WkbType::MultiPoint
@ MultiPoint
MultiPoint.
Definition
qgis.h:320
Qgis::WkbType::LineStringZM
@ LineStringZM
LineStringZM.
Definition
qgis.h:366
Qgis::WkbType::GeometryCollectionZM
@ GeometryCollectionZM
GeometryCollectionZM.
Definition
qgis.h:371
Qgis::WkbType::TriangleZ
@ TriangleZ
TriangleZ.
Definition
qgis.h:336
Qgis::WkbType::Polygon
@ Polygon
Polygon.
Definition
qgis.h:318
Qgis::WkbType::CompoundCurveZM
@ CompoundCurveZM
CompoundCurveZM.
Definition
qgis.h:373
Qgis::WkbType::CompoundCurveM
@ CompoundCurveM
CompoundCurveM.
Definition
qgis.h:358
Qgis::WkbType::MultiLineString25D
@ MultiLineString25D
MultiLineString25D.
Definition
qgis.h:385
Qgis::WkbType::MultiPolygon
@ MultiPolygon
MultiPolygon.
Definition
qgis.h:322
Qgis::WkbType::GeometryCollectionZ
@ GeometryCollectionZ
GeometryCollectionZ.
Definition
qgis.h:340
Qgis::WkbType::GeometryCollectionM
@ GeometryCollectionM
GeometryCollectionM.
Definition
qgis.h:356
Qgis::WkbType::CircularStringZM
@ CircularStringZM
CircularStringZM.
Definition
qgis.h:372
Qgis::WkbType::Triangle
@ Triangle
Triangle.
Definition
qgis.h:319
Qgis::WkbType::NurbsCurve
@ NurbsCurve
NurbsCurve.
Definition
qgis.h:331
Qgis::WkbType::PolygonM
@ PolygonM
PolygonM.
Definition
qgis.h:351
Qgis::WkbType::NoGeometry
@ NoGeometry
No geometry.
Definition
qgis.h:332
Qgis::WkbType::MultiSurfaceZ
@ MultiSurfaceZ
MultiSurfaceZ.
Definition
qgis.h:345
Qgis::WkbType::CurvePolygonZM
@ CurvePolygonZM
CurvePolygonZM.
Definition
qgis.h:374
Qgis::WkbType::TINZ
@ TINZ
TINZ.
Definition
qgis.h:347
Qgis::WkbType::MultiLineString
@ MultiLineString
MultiLineString.
Definition
qgis.h:321
Qgis::WkbType::MultiPolygonM
@ MultiPolygonM
MultiPolygonM.
Definition
qgis.h:355
Qgis::WkbType::MultiCurveZM
@ MultiCurveZM
MultiCurveZM.
Definition
qgis.h:375
Qgis::WkbType::MultiSurfaceZM
@ MultiSurfaceZM
MultiSurfaceZM.
Definition
qgis.h:376
Qgis::WkbType::PolygonZM
@ PolygonZM
PolygonZM.
Definition
qgis.h:367
Qgis::WkbType::MultiPoint25D
@ MultiPoint25D
MultiPoint25D.
Definition
qgis.h:384
Qgis::WkbType::Unknown
@ Unknown
Unknown.
Definition
qgis.h:315
Qgis::WkbType::NurbsCurveZ
@ NurbsCurveZ
NurbsCurveZ.
Definition
qgis.h:348
Qgis::WkbType::PointM
@ PointM
PointM.
Definition
qgis.h:349
Qgis::WkbType::CurvePolygonM
@ CurvePolygonM
CurvePolygonM.
Definition
qgis.h:359
Qgis::WkbType::NurbsCurveZM
@ NurbsCurveZM
NurbsCurveZM.
Definition
qgis.h:380
Qgis::WkbType::CircularString
@ CircularString
CircularString.
Definition
qgis.h:324
Qgis::WkbType::TINZM
@ TINZM
TINZM.
Definition
qgis.h:378
Qgis::WkbType::PointZ
@ PointZ
PointZ.
Definition
qgis.h:333
Qgis::WkbType::TriangleZM
@ TriangleZM
TriangleZM.
Definition
qgis.h:379
Qgis::WkbType::MultiLineStringZ
@ MultiLineStringZ
MultiLineStringZ.
Definition
qgis.h:338
Qgis::WkbType::GeometryCollection
@ GeometryCollection
GeometryCollection.
Definition
qgis.h:323
Qgis::WkbType::PolyhedralSurfaceZM
@ PolyhedralSurfaceZM
PolyhedralSurfaceM.
Definition
qgis.h:377
Qgis::WkbType::MultiPolygonZ
@ MultiPolygonZ
MultiPolygonZ.
Definition
qgis.h:339
Qgis::WkbType::CurvePolygonZ
@ CurvePolygonZ
CurvePolygonZ.
Definition
qgis.h:343
Qgis::WkbType::MultiCurve
@ MultiCurve
MultiCurve.
Definition
qgis.h:327
Qgis::WkbType::CompoundCurveZ
@ CompoundCurveZ
CompoundCurveZ.
Definition
qgis.h:342
Qgis::WkbType::MultiCurveZ
@ MultiCurveZ
MultiCurveZ.
Definition
qgis.h:344
Qgis::WkbType::MultiCurveM
@ MultiCurveM
MultiCurveM.
Definition
qgis.h:360
Qgis::WkbType::PolyhedralSurfaceZ
@ PolyhedralSurfaceZ
PolyhedralSurfaceZ.
Definition
qgis.h:346
Qgis::WkbType::CircularStringM
@ CircularStringM
CircularStringM.
Definition
qgis.h:357
Qgis::WkbType::CurvePolygon
@ CurvePolygon
CurvePolygon.
Definition
qgis.h:326
Qgis::WkbType::Point25D
@ Point25D
Point25D.
Definition
qgis.h:381
Qgis::WkbType::TINM
@ TINM
TINM.
Definition
qgis.h:363
Qgis::WkbType::PointZM
@ PointZM
PointZM.
Definition
qgis.h:365
Qgis::WkbType::TriangleM
@ TriangleM
TriangleM.
Definition
qgis.h:352
Qgis::WkbType::CircularStringZ
@ CircularStringZ
CircularStringZ.
Definition
qgis.h:341
Qgis::WkbType::LineStringZ
@ LineStringZ
LineStringZ.
Definition
qgis.h:334
Qgis::WkbType::PolyhedralSurface
@ PolyhedralSurface
PolyhedralSurface.
Definition
qgis.h:329
Qgis::WkbType::MultiSurface
@ MultiSurface
MultiSurface.
Definition
qgis.h:328
Qgis::WkbType::PolygonZ
@ PolygonZ
PolygonZ.
Definition
qgis.h:335
Qgis::WkbType::Polygon25D
@ Polygon25D
Polygon25D.
Definition
qgis.h:383
QgsWkbTypes
Handles storage of information regarding WKB types and their properties.
Definition
qgswkbtypes.h:42
QgsWkbTypes::dropM
static Qgis::WkbType dropM(Qgis::WkbType type)
Drops the m dimension (if present) for a WKB type and returns the new type.
Definition
qgswkbtypes.h:1271
QgsWkbTypes::zmType
static Qgis::WkbType zmType(Qgis::WkbType type, bool hasZ, bool hasM)
Returns the modified input geometry type according to hasZ / hasM.
Definition
qgswkbtypes.h:809
QgsWkbTypes::geometryType
static Qgis::GeometryType geometryType(Qgis::WkbType type)
Returns the geometry type for a WKB type, e.g., both MultiPolygon and CurvePolygon would have a Polyg...
Definition
qgswkbtypes.h:967
QgsWkbTypes::wkbDimensions
static int wkbDimensions(Qgis::WkbType type)
Returns the inherent dimension of the geometry type as an integer.
Definition
qgswkbtypes.h:934
QgsWkbTypes::to25D
static Qgis::WkbType to25D(Qgis::WkbType type)
Will convert the 25D version of the flat type if supported or Unknown if not supported.
Definition
qgswkbtypes.h:1287
QgsWkbTypes::linearType
static Qgis::WkbType linearType(Qgis::WkbType type)
Returns the linear type for a WKB type.
Definition
qgswkbtypes.h:573
QgsWkbTypes::dropZ
static Qgis::WkbType dropZ(Qgis::WkbType type)
Drops the z dimension (if present) for a WKB type and returns the new type.
Definition
qgswkbtypes.h:1254
QgsWkbTypes::parseType
static Qgis::WkbType parseType(const QString &wktStr)
Attempts to extract the WKB type from a WKT string.
QgsWkbTypes::promoteNonPointTypesToMulti
static Qgis::WkbType promoteNonPointTypesToMulti(Qgis::WkbType type)
Promotes a WKB geometry type to its multi-type equivalent, with the exception of point geometry types...
Definition
qgswkbtypes.h:390
QgsWkbTypes::addM
static Qgis::WkbType addM(Qgis::WkbType type)
Adds the m dimension to a WKB type and returns the new type.
Definition
qgswkbtypes.h:1219
QgsWkbTypes::addZ
static Qgis::WkbType addZ(Qgis::WkbType type)
Adds the z dimension to a WKB type and returns the new type.
Definition
qgswkbtypes.h:1195
QgsWkbTypes::isSingleType
static Q_INVOKABLE bool isSingleType(Qgis::WkbType type)
Returns true if the WKB type is a single type.
Definition
qgswkbtypes.h:830
QgsWkbTypes::hasZ
static Q_INVOKABLE bool hasZ(Qgis::WkbType type)
Tests whether a WKB type contains the z-dimension.
Definition
qgswkbtypes.h:1090
QgsWkbTypes::singleType
static Qgis::WkbType singleType(Qgis::WkbType type)
Returns the single type for a WKB type.
Definition
qgswkbtypes.h:53
QgsWkbTypes::hasM
static Q_INVOKABLE bool hasM(Qgis::WkbType type)
Tests whether a WKB type contains m values.
Definition
qgswkbtypes.h:1145
QgsWkbTypes::isNurbsType
static Q_INVOKABLE bool isNurbsType(Qgis::WkbType type)
Returns true if the WKB type is a NURBS curve type.
Definition
qgswkbtypes.h:922
QgsWkbTypes::isCurvedType
static Q_INVOKABLE bool isCurvedType(Qgis::WkbType type)
Returns true if the WKB type is a curved type or can contain curved geometries.
Definition
qgswkbtypes.h:899
QgsWkbTypes::multiType
static Qgis::WkbType multiType(Qgis::WkbType type)
Returns the multi type for a WKB type.
Definition
qgswkbtypes.h:232
QgsWkbTypes::flatType
static Qgis::WkbType flatType(Qgis::WkbType type)
Returns the flat type for a WKB type.
Definition
qgswkbtypes.h:693
QgsWkbTypes::isMultiType
static Q_INVOKABLE bool isMultiType(Qgis::WkbType type)
Returns true if the WKB type is a multi type.
Definition
qgswkbtypes.h:840
QgsWkbTypes::coordDimensions
static Q_INVOKABLE int coordDimensions(Qgis::WkbType type)
Returns the coordinate dimension of the geometry type as an integer.
Definition
qgswkbtypes.h:954
QgsWkbTypes::curveType
static Qgis::WkbType curveType(Qgis::WkbType type)
Returns the curve type for a WKB type.
Definition
qgswkbtypes.h:420
qgis.h
qgis_sip.h
SIP_HOLDGIL
#define SIP_HOLDGIL
Definition
qgis_sip.h:183
Generated on
for QGIS API Documentation by
1.17.0