@@ -116,77 +116,97 @@ QString QgsWKBTypes::displayString( Type type )
116
116
return it->mName ;
117
117
}
118
118
119
+ bool QgsWKBTypes::hasZ ( Type type )
120
+ {
121
+ QMap< Type, wkbEntry >::const_iterator it = entries ()->find ( type );
122
+ if ( it == entries ()->constEnd () )
123
+ {
124
+ return false ;
125
+ }
126
+ return it->mHasZ ;
127
+ }
128
+
129
+ bool QgsWKBTypes::hasM ( Type type )
130
+ {
131
+ QMap< Type, wkbEntry >::const_iterator it = entries ()->find ( type );
132
+ if ( it == entries ()->constEnd () )
133
+ {
134
+ return false ;
135
+ }
136
+ return it->mHasM ;
137
+ }
138
+
119
139
QMap<QgsWKBTypes::Type, QgsWKBTypes::wkbEntry> QgsWKBTypes::registerTypes ()
120
140
{
121
141
QMap<QgsWKBTypes::Type, QgsWKBTypes::wkbEntry> entries;
122
142
// register the known wkb types
123
- entries.insert ( Unknown, wkbEntry ( " Unknown" , false , Unknown, Unknown, Unknown, UnknownGeometry ) );
124
- entries.insert ( NoGeometry, wkbEntry ( " NoGeometry" , false , NoGeometry, NoGeometry, NoGeometry, NullGeometry ) );
143
+ entries.insert ( Unknown, wkbEntry ( " Unknown" , false , Unknown, Unknown, Unknown, UnknownGeometry, false , false ) );
144
+ entries.insert ( NoGeometry, wkbEntry ( " NoGeometry" , false , NoGeometry, NoGeometry, NoGeometry, NullGeometry, false , false ) );
125
145
// point
126
- entries.insert ( Point, wkbEntry ( " Point" , false , MultiPoint, Point, Point, PointGeometry ) );
127
- entries.insert ( PointZ, wkbEntry ( " PointZ" , false , MultiPointZ, PointZ, Point, PointGeometry ) );
128
- entries.insert ( PointM, wkbEntry ( " PointM" , false , MultiPointM, PointM, Point, PointGeometry ) );
129
- entries.insert ( PointZM, wkbEntry ( " PointZM" , false , MultiPointZM, PointZM, Point, PointGeometry ) );
130
- entries.insert ( Point25D, wkbEntry ( " Point25D" , false , MultiPoint25D, Point25D, Point, PointGeometry ) );
146
+ entries.insert ( Point, wkbEntry ( " Point" , false , MultiPoint, Point, Point, PointGeometry, false , false ) );
147
+ entries.insert ( PointZ, wkbEntry ( " PointZ" , false , MultiPointZ, PointZ, Point, PointGeometry, true , false ) );
148
+ entries.insert ( PointM, wkbEntry ( " PointM" , false , MultiPointM, PointM, Point, PointGeometry, false , true ) );
149
+ entries.insert ( PointZM, wkbEntry ( " PointZM" , false , MultiPointZM, PointZM, Point, PointGeometry, true , true ) );
150
+ entries.insert ( Point25D, wkbEntry ( " Point25D" , false , MultiPoint25D, Point25D, Point, PointGeometry, true , false ) );
131
151
// linestring
132
- entries.insert ( LineString, wkbEntry ( " LineString" , false , MultiLineString, LineString, LineString, LineGeometry ) );
133
- entries.insert ( LineStringZ, wkbEntry ( " LineStringZ" , false , MultiLineStringZ, LineStringZ, LineString, LineGeometry ) );
134
- entries.insert ( LineStringM, wkbEntry ( " LineStringM" , false , MultiLineStringM, LineStringM, LineString, LineGeometry ) );
135
- entries.insert ( LineStringZM, wkbEntry ( " LineStringZM" , false , MultiLineStringZM, LineStringZM, LineString, LineGeometry ) );
136
- entries.insert ( LineString25D, wkbEntry ( " LineString25D" , false , MultiLineString25D, LineString25D, LineString, LineGeometry ) );
152
+ entries.insert ( LineString, wkbEntry ( " LineString" , false , MultiLineString, LineString, LineString, LineGeometry, false , false ) );
153
+ entries.insert ( LineStringZ, wkbEntry ( " LineStringZ" , false , MultiLineStringZ, LineStringZ, LineString, LineGeometry, true , false ) );
154
+ entries.insert ( LineStringM, wkbEntry ( " LineStringM" , false , MultiLineStringM, LineStringM, LineString, LineGeometry, false , true ) );
155
+ entries.insert ( LineStringZM, wkbEntry ( " LineStringZM" , false , MultiLineStringZM, LineStringZM, LineString, LineGeometry, true , true ) );
156
+ entries.insert ( LineString25D, wkbEntry ( " LineString25D" , false , MultiLineString25D, LineString25D, LineString, LineGeometry, true , false ) );
137
157
// circularstring
138
- entries.insert ( CircularString, wkbEntry ( " CircularString" , false , MultiCurve, CircularString, CircularString, LineGeometry ) );
139
- entries.insert ( CircularStringZ, wkbEntry ( " CircularStringZ" , false , MultiCurveZ, CircularStringZ, CircularString, LineGeometry ) );
140
- entries.insert ( CircularStringM, wkbEntry ( " CircularStringM" , false , MultiCurveM, CircularStringM, CircularString, LineGeometry ) );
141
- entries.insert ( CircularStringZM, wkbEntry ( " CircularStringZM" , false , MultiCurveZM, CircularStringZM, CircularString, LineGeometry ) );
158
+ entries.insert ( CircularString, wkbEntry ( " CircularString" , false , MultiCurve, CircularString, CircularString, LineGeometry, false , false ) );
159
+ entries.insert ( CircularStringZ, wkbEntry ( " CircularStringZ" , false , MultiCurveZ, CircularStringZ, CircularString, LineGeometry, true , false ) );
160
+ entries.insert ( CircularStringM, wkbEntry ( " CircularStringM" , false , MultiCurveM, CircularStringM, CircularString, LineGeometry, false , true ) );
161
+ entries.insert ( CircularStringZM, wkbEntry ( " CircularStringZM" , false , MultiCurveZM, CircularStringZM, CircularString, LineGeometry, true , true ) );
142
162
// compoundcurve
143
- entries.insert ( CompoundCurve, wkbEntry ( " CompoundCurve" , false , MultiCurve, CompoundCurve, CompoundCurve, LineGeometry ) );
144
- entries.insert ( CompoundCurveZ, wkbEntry ( " CompoundCurveZ" , false , MultiCurveZ, CompoundCurveZ, CompoundCurve, LineGeometry ) );
145
- entries.insert ( CompoundCurveM, wkbEntry ( " CompoundCurveM" , false , MultiCurveM, CompoundCurveM, CompoundCurve, LineGeometry ) );
146
- entries.insert ( CompoundCurveZM, wkbEntry ( " CompoundCurveZM" , false , MultiCurveZM, CompoundCurveZM, CompoundCurve, LineGeometry ) );
163
+ entries.insert ( CompoundCurve, wkbEntry ( " CompoundCurve" , false , MultiCurve, CompoundCurve, CompoundCurve, LineGeometry, false , false ) );
164
+ entries.insert ( CompoundCurveZ, wkbEntry ( " CompoundCurveZ" , false , MultiCurveZ, CompoundCurveZ, CompoundCurve, LineGeometry, true , false ) );
165
+ entries.insert ( CompoundCurveM, wkbEntry ( " CompoundCurveM" , false , MultiCurveM, CompoundCurveM, CompoundCurve, LineGeometry, false , true ) );
166
+ entries.insert ( CompoundCurveZM, wkbEntry ( " CompoundCurveZM" , false , MultiCurveZM, CompoundCurveZM, CompoundCurve, LineGeometry, true , true ) );
147
167
// polygon
148
- entries.insert ( Polygon, wkbEntry ( " Polygon" , false , MultiPolygon, Polygon, Polygon, PolygonGeometry ) );
149
- entries.insert ( PolygonZ, wkbEntry ( " PolygonZ" , false , MultiPolygonZ, PolygonZ, Polygon, PolygonGeometry ) );
150
- entries.insert ( PolygonM, wkbEntry ( " PolygonM" , false , MultiPolygonM, PolygonM, Polygon, PolygonGeometry ) );
151
- entries.insert ( PolygonZM, wkbEntry ( " PolygonZM" , false , MultiPolygonZM, PolygonZM, Polygon, PolygonGeometry ) );
152
- entries.insert ( Polygon25D, wkbEntry ( " Polygon25D" , false , MultiPolygon25D, Polygon25D, Polygon, PolygonGeometry ) );
168
+ entries.insert ( Polygon, wkbEntry ( " Polygon" , false , MultiPolygon, Polygon, Polygon, PolygonGeometry, false , false ) );
169
+ entries.insert ( PolygonZ, wkbEntry ( " PolygonZ" , false , MultiPolygonZ, PolygonZ, Polygon, PolygonGeometry, true , false ) );
170
+ entries.insert ( PolygonM, wkbEntry ( " PolygonM" , false , MultiPolygonM, PolygonM, Polygon, PolygonGeometry, false , true ) );
171
+ entries.insert ( PolygonZM, wkbEntry ( " PolygonZM" , false , MultiPolygonZM, PolygonZM, Polygon, PolygonGeometry, true , true ) );
172
+ entries.insert ( Polygon25D, wkbEntry ( " Polygon25D" , false , MultiPolygon25D, Polygon25D, Polygon, PolygonGeometry, true , false ) );
153
173
// curvepolygon
154
- entries.insert ( CurvePolygon, wkbEntry ( " CurvePolygon" , false , MultiSurface, CurvePolygon, CurvePolygon, PolygonGeometry ) );
155
- entries.insert ( CurvePolygonZ, wkbEntry ( " CurvePolygonZ" , false , MultiSurfaceZ, CurvePolygonZ, CurvePolygon, PolygonGeometry ) );
156
- entries.insert ( CurvePolygonM, wkbEntry ( " CurvePolygonM" , false , MultiSurfaceM, CurvePolygonM, CurvePolygon, PolygonGeometry ) );
157
- entries.insert ( CurvePolygonZM, wkbEntry ( " CurvePolygonZM" , false , MultiSurfaceZM, CurvePolygonZM, CurvePolygon, PolygonGeometry ) );
174
+ entries.insert ( CurvePolygon, wkbEntry ( " CurvePolygon" , false , MultiSurface, CurvePolygon, CurvePolygon, PolygonGeometry, false , false ) );
175
+ entries.insert ( CurvePolygonZ, wkbEntry ( " CurvePolygonZ" , false , MultiSurfaceZ, CurvePolygonZ, CurvePolygon, PolygonGeometry, true , false ) );
176
+ entries.insert ( CurvePolygonM, wkbEntry ( " CurvePolygonM" , false , MultiSurfaceM, CurvePolygonM, CurvePolygon, PolygonGeometry, false , true ) );
177
+ entries.insert ( CurvePolygonZM, wkbEntry ( " CurvePolygonZM" , false , MultiSurfaceZM, CurvePolygonZM, CurvePolygon, PolygonGeometry, true , true ) );
158
178
// multipoint
159
- entries.insert ( MultiPoint, wkbEntry ( " MultiPoint" , true , MultiPoint, Point, MultiPoint, PointGeometry ) );
160
- entries.insert ( MultiPointZ, wkbEntry ( " MultiPointZ" , true , MultiPointZ, PointZ, MultiPoint, PointGeometry ) );
161
- entries.insert ( MultiPointM, wkbEntry ( " MultiPointM" , true , MultiPointM, PointM, MultiPoint, PointGeometry ) );
162
- entries.insert ( MultiPointZM, wkbEntry ( " MultiPointZM" , true , MultiPointZM, PointZM, MultiPoint, PointGeometry ) );
163
- entries.insert ( MultiPoint25D, wkbEntry ( " MultiPoint25D" , true , MultiPoint25D, Point25D, MultiPoint, PointGeometry ) );
179
+ entries.insert ( MultiPoint, wkbEntry ( " MultiPoint" , true , MultiPoint, Point, MultiPoint, PointGeometry, false , false ) );
180
+ entries.insert ( MultiPointZ, wkbEntry ( " MultiPointZ" , true , MultiPointZ, PointZ, MultiPoint, PointGeometry, true , false ) );
181
+ entries.insert ( MultiPointM, wkbEntry ( " MultiPointM" , true , MultiPointM, PointM, MultiPoint, PointGeometry, false , true ) );
182
+ entries.insert ( MultiPointZM, wkbEntry ( " MultiPointZM" , true , MultiPointZM, PointZM, MultiPoint, PointGeometry, true , true ) );
183
+ entries.insert ( MultiPoint25D, wkbEntry ( " MultiPoint25D" , true , MultiPoint25D, Point25D, MultiPoint, PointGeometry, true , false ) );
164
184
// multiline
165
- entries.insert ( MultiLineString, wkbEntry ( " MultiLineString" , true , MultiLineString, LineString, MultiLineString, LineGeometry ) );
166
- entries.insert ( MultiLineStringZ, wkbEntry ( " MultiLineStringZ" , true , MultiLineStringZ, LineStringZ, MultiLineString, LineGeometry ) );
167
- entries.insert ( MultiLineStringM, wkbEntry ( " MultiLineStringM" , true , MultiLineStringM, LineStringM, MultiLineString, LineGeometry ) );
168
- entries.insert ( MultiLineStringZM, wkbEntry ( " MultiLineStringZM" , true , MultiLineStringZM, LineStringZM, MultiLineString, LineGeometry ) );
169
- entries.insert ( MultiLineString25D, wkbEntry ( " MultiLineString25D" , true , MultiLineString25D, LineString25D, MultiLineString, LineGeometry ) );
185
+ entries.insert ( MultiLineString, wkbEntry ( " MultiLineString" , true , MultiLineString, LineString, MultiLineString, LineGeometry, false , false ) );
186
+ entries.insert ( MultiLineStringZ, wkbEntry ( " MultiLineStringZ" , true , MultiLineStringZ, LineStringZ, MultiLineString, LineGeometry, true , false ) );
187
+ entries.insert ( MultiLineStringM, wkbEntry ( " MultiLineStringM" , true , MultiLineStringM, LineStringM, MultiLineString, LineGeometry, false , true ) );
188
+ entries.insert ( MultiLineStringZM, wkbEntry ( " MultiLineStringZM" , true , MultiLineStringZM, LineStringZM, MultiLineString, LineGeometry, true , true ) );
189
+ entries.insert ( MultiLineString25D, wkbEntry ( " MultiLineString25D" , true , MultiLineString25D, LineString25D, MultiLineString, LineGeometry, true , false ) );
170
190
// multicurve
171
- entries.insert ( MultiCurve, wkbEntry ( " MultiCurve" , true , MultiCurve, CompoundCurve, MultiCurve, LineGeometry ) );
172
- entries.insert ( MultiCurveZ, wkbEntry ( " MultiCurveZ" , true , MultiCurveZ, CompoundCurveZ, MultiCurve, LineGeometry ) );
173
- entries.insert ( MultiCurveM, wkbEntry ( " MultiCurveM" , true , MultiCurveM, CompoundCurveM, MultiCurve, LineGeometry ) );
174
- entries.insert ( MultiCurveZM, wkbEntry ( " MultiCurveZM" , true , MultiCurveZM, CompoundCurveZM, MultiCurve, LineGeometry ) );
191
+ entries.insert ( MultiCurve, wkbEntry ( " MultiCurve" , true , MultiCurve, CompoundCurve, MultiCurve, LineGeometry, false , false ) );
192
+ entries.insert ( MultiCurveZ, wkbEntry ( " MultiCurveZ" , true , MultiCurveZ, CompoundCurveZ, MultiCurve, LineGeometry, true , false ) );
193
+ entries.insert ( MultiCurveM, wkbEntry ( " MultiCurveM" , true , MultiCurveM, CompoundCurveM, MultiCurve, LineGeometry, false , true ) );
194
+ entries.insert ( MultiCurveZM, wkbEntry ( " MultiCurveZM" , true , MultiCurveZM, CompoundCurveZM, MultiCurve, LineGeometry, true , true ) );
175
195
// multipolygon
176
- entries.insert ( MultiPolygon, wkbEntry ( " MultiPolygon" , true , MultiPolygon, Polygon, MultiPolygon, PolygonGeometry ) );
177
- entries.insert ( MultiPolygonZ, wkbEntry ( " MultiPolygonZ" , true , MultiPolygonZ, PolygonZ, MultiPolygon, PolygonGeometry ) );
178
- entries.insert ( MultiPolygonM, wkbEntry ( " MultiPolygonM" , true , MultiPolygonM, PolygonM, MultiPolygon, PolygonGeometry ) );
179
- entries.insert ( MultiPolygonZM, wkbEntry ( " MultiPolygonZM" , true , MultiPolygonZM, PolygonZM, MultiPolygon, PolygonGeometry ) );
180
- entries.insert ( MultiPolygon25D, wkbEntry ( " MultiPolygon25D" , true , MultiPolygon25D, Polygon25D, MultiPolygon, PolygonGeometry ) );
196
+ entries.insert ( MultiPolygon, wkbEntry ( " MultiPolygon" , true , MultiPolygon, Polygon, MultiPolygon, PolygonGeometry, false , false ) );
197
+ entries.insert ( MultiPolygonZ, wkbEntry ( " MultiPolygonZ" , true , MultiPolygonZ, PolygonZ, MultiPolygon, PolygonGeometry, true , false ) );
198
+ entries.insert ( MultiPolygonM, wkbEntry ( " MultiPolygonM" , true , MultiPolygonM, PolygonM, MultiPolygon, PolygonGeometry, false , true ) );
199
+ entries.insert ( MultiPolygonZM, wkbEntry ( " MultiPolygonZM" , true , MultiPolygonZM, PolygonZM, MultiPolygon, PolygonGeometry, true , true ) );
200
+ entries.insert ( MultiPolygon25D, wkbEntry ( " MultiPolygon25D" , true , MultiPolygon25D, Polygon25D, MultiPolygon, PolygonGeometry, true , false ) );
181
201
// multisurface
182
- entries.insert ( MultiSurface, wkbEntry ( " MultiSurface" , true , MultiSurface, CurvePolygon, MultiSurface, PolygonGeometry ) );
183
- entries.insert ( MultiSurfaceZ, wkbEntry ( " MultiSurfaceZ" , true , MultiSurfaceZ, CurvePolygonZ, MultiSurface, PolygonGeometry ) );
184
- entries.insert ( MultiSurfaceM, wkbEntry ( " MultiSurfaceM" , true , MultiSurfaceM, CurvePolygonM, MultiSurface, PolygonGeometry ) );
185
- entries.insert ( MultiSurfaceZM, wkbEntry ( " MultiSurfaceZM" , true , MultiSurfaceZM, CurvePolygonZM, MultiSurface, PolygonGeometry ) );
202
+ entries.insert ( MultiSurface, wkbEntry ( " MultiSurface" , true , MultiSurface, CurvePolygon, MultiSurface, PolygonGeometry, false , false ) );
203
+ entries.insert ( MultiSurfaceZ, wkbEntry ( " MultiSurfaceZ" , true , MultiSurfaceZ, CurvePolygonZ, MultiSurface, PolygonGeometry, true , false ) );
204
+ entries.insert ( MultiSurfaceM, wkbEntry ( " MultiSurfaceM" , true , MultiSurfaceM, CurvePolygonM, MultiSurface, PolygonGeometry, false , true ) );
205
+ entries.insert ( MultiSurfaceZM, wkbEntry ( " MultiSurfaceZM" , true , MultiSurfaceZM, CurvePolygonZM, MultiSurface, PolygonGeometry, true , true ) );
186
206
// geometrycollection
187
- entries.insert ( GeometryCollection, wkbEntry ( " GeometryCollection" , true , GeometryCollection, Unknown, GeometryCollection, UnknownGeometry ) );
188
- entries.insert ( GeometryCollectionZ, wkbEntry ( " GeometryCollectionZ" , true , GeometryCollectionZ, Unknown, GeometryCollection, UnknownGeometry ) );
189
- entries.insert ( GeometryCollectionM, wkbEntry ( " GeometryCollectionM" , true , GeometryCollectionM, Unknown, GeometryCollection, UnknownGeometry ) );
190
- entries.insert ( GeometryCollectionZM, wkbEntry ( " GeometryCollectionZM" , true , GeometryCollectionZM, Unknown, GeometryCollection, UnknownGeometry ) );
207
+ entries.insert ( GeometryCollection, wkbEntry ( " GeometryCollection" , true , GeometryCollection, Unknown, GeometryCollection, UnknownGeometry, false , false ) );
208
+ entries.insert ( GeometryCollectionZ, wkbEntry ( " GeometryCollectionZ" , true , GeometryCollectionZ, Unknown, GeometryCollection, UnknownGeometry, true , false ) );
209
+ entries.insert ( GeometryCollectionM, wkbEntry ( " GeometryCollectionM" , true , GeometryCollectionM, Unknown, GeometryCollection, UnknownGeometry, false , true ) );
210
+ entries.insert ( GeometryCollectionZM, wkbEntry ( " GeometryCollectionZM" , true , GeometryCollectionZM, Unknown, GeometryCollection, UnknownGeometry, true , true ) );
191
211
return entries;
192
212
}
0 commit comments