@@ -161,11 +161,19 @@ def restoreGui( self ):
161
161
162
162
def geomVertexCount ( geometry ):
163
163
geomType = geometry .type ()
164
- if geomType == 1 : # line
165
- points = geometry .asPolyline ()
164
+ if geomType == QGis .Line :
165
+ if geometry .isMultipart ():
166
+ pointsList = geometry .asMultiPolyline ()
167
+ points = sum ( pointsList , [] )
168
+ else :
169
+ points = geometry .asPolyline ()
166
170
return len ( points )
167
- elif geomType == 2 : # polygon
168
- polylines = geometry .asPolygon ()
171
+ elif geomType == QGis .Polygon :
172
+ if geometry .isMultipart ():
173
+ polylinesList = geometry .asMultiPolygon ()
174
+ polylines = sum ( polylinesList , [] )
175
+ else :
176
+ polylines = geometry .asPolygon ()
169
177
points = []
170
178
for l in polylines :
171
179
points .extend ( l )
@@ -196,11 +204,19 @@ def densify( polyline, pointsNumber ):
196
204
def densifyGeometry ( geometry , pointsNumber , isPolygon ):
197
205
output = []
198
206
if isPolygon :
199
- rings = geometry .asPolygon ()
200
- for ring in rings :
201
- ring = densify ( ring , pointsNumber )
202
- output .append ( ring )
203
- return QgsGeometry .fromPolygon ( output )
207
+ if geometry .isMultipart ():
208
+ polygons = geometry .asMultiPolygon ()
209
+ for poly in polygons :
210
+ p = []
211
+ for ring in poly :
212
+ p .append ( densify ( ring , pointsNumber ) )
213
+ output .append ( p )
214
+ return QgsGeometry .fromMultiPolygon ( output )
215
+ else :
216
+ rings = geometry .asPolygon ()
217
+ for ring in rings :
218
+ output .append ( densify ( ring , pointsNumber ) )
219
+ return QgsGeometry .fromPolygon ( output )
204
220
else :
205
221
if geometry .isMultipart ():
206
222
lines = geometry .asMultiPolyline ()
0 commit comments