29
29
30
30
from qgis .PyQt .QtGui import QIcon
31
31
32
- from qgis .core import Qgis , QgsFeature , QgsGeometry , QgsWkbTypes
32
+ from qgis .core import QGis , QgsFeature , QgsGeometry
33
33
34
34
from processing .core .GeoAlgorithm import GeoAlgorithm
35
35
from processing .core .GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
@@ -67,7 +67,7 @@ def processAlgorithm(self, progress):
67
67
geomType = self .singleToMultiGeom (layer .wkbType ())
68
68
69
69
writer = self .getOutputFromName (self .OUTPUT ).getVectorWriter (
70
- layer .fields ().toList (), geomType , layer .crs ())
70
+ layer .pendingFields ().toList (), geomType , layer .crs ())
71
71
72
72
inFeat = QgsFeature ()
73
73
outFeat = QgsFeature ()
@@ -92,7 +92,7 @@ def processAlgorithm(self, progress):
92
92
if first :
93
93
attrs = atMap
94
94
first = False
95
- inGeom = inFeat .geometry ()
95
+ inGeom = QgsGeometry ( inFeat .geometry () )
96
96
vType = inGeom .type ()
97
97
feature_list = self .extractAsMulti (inGeom )
98
98
multi_feature .extend (feature_list )
@@ -108,35 +108,34 @@ def processAlgorithm(self, progress):
108
108
109
109
del writer
110
110
else :
111
- raise GeoAlgorithmExecutionException (
112
- self .tr ('At least two features must have same attribute value! Please choose another field...' ))
111
+ raise GeoAlgorithmExecutionException (self .tr ('Invalid unique ID field' ))
113
112
114
113
def singleToMultiGeom (self , wkbType ):
115
114
try :
116
- if wkbType in (QgsWkbTypes . Point , QgsWkbTypes . MultiPoint ,
117
- QgsWkbTypes . Point25D , QgsWkbTypes . MultiPoint25D ):
118
- return QgsWkbTypes . MultiPoint
119
- elif wkbType in (QgsWkbTypes . LineString , QgsWkbTypes . MultiLineString ,
120
- QgsWkbTypes . MultiLineString25D ,
121
- QgsWkbTypes . LineString25D ):
122
-
123
- return QgsWkbTypes . MultiLineString
124
- elif wkbType in (QgsWkbTypes . Polygon , QgsWkbTypes . MultiPolygon ,
125
- QgsWkbTypes . MultiPolygon25D , QgsWkbTypes . Polygon25D ):
126
-
127
- return QgsWkbTypes . MultiPolygon
115
+ if wkbType in (QGis . WKBPoint , QGis . WKBMultiPoint ,
116
+ QGis . WKBPoint25D , QGis . WKBMultiPoint25D ):
117
+ return QGis . WKBMultiPoint
118
+ elif wkbType in (QGis . WKBLineString , QGis . WKBMultiLineString ,
119
+ QGis . WKBMultiLineString25D ,
120
+ QGis . WKBLineString25D ):
121
+
122
+ return QGis . WKBMultiLineString
123
+ elif wkbType in (QGis . WKBPolygon , QGis . WKBMultiPolygon ,
124
+ QGis . WKBMultiPolygon25D , QGis . WKBPolygon25D ):
125
+
126
+ return QGis . WKBMultiPolygon
128
127
else :
129
- return QgsWkbTypes . Unknown
128
+ return QGis . WKBUnknown
130
129
except Exception :
131
130
pass
132
131
133
132
def extractAsMulti (self , geom ):
134
- if geom .type () == QgsWkbTypes . PointGeometry :
133
+ if geom .type () == QGis . Point :
135
134
if geom .isMultipart ():
136
135
return geom .asMultiPoint ()
137
136
else :
138
137
return [geom .asPoint ()]
139
- elif geom .type () == QgsWkbTypes . LineGeometry :
138
+ elif geom .type () == QGis . Line :
140
139
if geom .isMultipart ():
141
140
return geom .asMultiPolyline ()
142
141
else :
@@ -148,9 +147,9 @@ def extractAsMulti(self, geom):
148
147
return [geom .asPolygon ()]
149
148
150
149
def convertGeometry (self , geom_list , vType ):
151
- if vType == QgsWkbTypes . PointGeometry :
150
+ if vType == QGis . Point :
152
151
return QgsGeometry ().fromMultiPoint (geom_list )
153
- elif vType == QgsWkbTypes . LineGeometry :
152
+ elif vType == QGis . Line :
154
153
return QgsGeometry ().fromMultiPolyline (geom_list )
155
154
else :
156
155
return QgsGeometry ().fromMultiPolygon (geom_list )
0 commit comments